示例#1
0
文件: rtl_433.c 项目: dducret/rtl_433
// find the fields output for CSV
void *determine_csv_fields(r_device* devices, int num_devices)
{
    int i, j;
    int cur_output_fields = 0;
    int num_output_fields = 0;
    void *csv_aux;
    const char **output_fields = NULL;
    for (i = 0; i < num_devices; i++)
        if (!devices[i].disabled) {
	    if (devices[i].fields)
		for (int c = 0; devices[i].fields[c]; ++c)
		    ++num_output_fields;
	    else
		fprintf(stderr, "rtl_433: warning: %d \"%s\" does not support CSV output\n",
			i, devices[i].name);
	}
    output_fields = calloc(num_output_fields + 1, sizeof(char*));
    for (i = 0; i < num_devices; i++) {
        if (!devices[i].disabled && devices[i].fields) {
            for (int c = 0; devices[i].fields[c]; ++c) {
                output_fields[cur_output_fields] = devices[i].fields[c];
                ++cur_output_fields;
            }
        }
    }

    csv_aux = data_csv_init(output_fields, num_output_fields);
    free(output_fields);
    return csv_aux;
}
示例#2
0
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <stdio.h>

#include "data.h"

int main()
{
	data_t *data = data_make("label"      , "",		DATA_STRING, "1.2.3",
				 "house_code" , "House Code",	DATA_INT, 42,
				 "temp"	      , "Temperature",	DATA_DOUBLE, 99.9,
				 "array"      , "Array",	DATA_ARRAY, data_array(2, DATA_STRING, (char*[2]){"hello", "world"}),
				 "array2"     , "Array 2",	DATA_ARRAY, data_array(2, DATA_INT, (int[2]){4, 2}),
				 "array3"     , "Array 3",	DATA_ARRAY, data_array(2, DATA_ARRAY, (data_array_t*[2]){
				 				 data_array(2, DATA_INT, (int[2]){4, 2}),
				 					 data_array(2, DATA_INT, (int[2]){5, 5}) }),
				 "data"       , "Data",        DATA_DATA, data_make("Hello", "hello", DATA_STRING, "world", NULL),
				 NULL);
	const char *fields[] = { "label", "house_code", "temp", "array", "array2", "array3", "data", "house_code" };
	data_print(data, stdout, &data_json_printer, NULL); fprintf(stdout, "\n");
	data_print(data, stdout, &data_kv_printer, NULL);
	void *csv_aux = data_csv_init(fields, sizeof fields / sizeof *fields);
	data_print(data, stdout, &data_csv_printer, csv_aux);
	data_csv_free(csv_aux);
	data_free(data);
}