typedef struct {
    const char *name;
    float value;
} sensor_data_t;

static void get_sensors_report(char* buffer,
                               size_t buffer_size)
{
    // センサ取得のインターバル制御用
    static size_t iteration = 1;

    sensor_data_t data[MAX_SENSORS] = {0};
    bool need_output[MAX_SENSORS] = {0};
    for (size_t sensor_id = 0;
         sensor_id < MAX_SENSORS; sensor_id++) {
        get_sensor_data(iteration, sensor_id,
                        &data[sensor_id].value,
                        &data[sensor_id].name,
                        &need_output[sensor_id]);
    }

    int offset = output_json_sensors_start(
        buffer, buffer_size);
    bool first = true;
    for (size_t i = 0; i < MAX_SENSORS; i++) {
        if (need_output[i]) {
            offset = output_json_one_sensor(
                first, data[i].value, data[i].name,
                buffer, buffer_size, offset);
            first = false;
        }
    }
    output_json_sensors_end(buffer, buffer_size,
                            offset);
    iteration++;
}
