static void process_envvar (char *envvar) { int argc = 0; char **argv; char *p = envvar; while (p && *p) { p = strchr (p, ' '); argc++; if (p) while (*p == ' ') p++; } argv = malloc (argc * sizeof (char *)); p = envvar; argc = 0; while (p && *p) { char *q = strchr (p, ' '); if (q) *q = 0; argv[argc++] = p; if (q) { while (*q == ' ') q++; p = q; } } process_argv (argc, argv); }
int main (int argc, char **argv) { int retval; int i, j, k; char *p; libraries = malloc (argc * sizeof (char *)); libdirs = malloc ((argc+10) * sizeof (char *)); objects = malloc (argc * sizeof (char *)); for (k = 0, i = 1; i < argc; i++) k += strlen (argv[i]); k += 500 + argc; cmdline = malloc (k); /* -MD: Use msvcrt.dll runtime */ strcpy (cmdline, "cl -MD"); p = getenv ("CPPFLAGS"); if (p && *p) process_envvar (p); p = getenv ("LDFLAGS"); if (p && *p) process_envvar (p); process_argv (argc, argv); if (!verbose) strcat (cmdline, " -nologo"); if (output_executable != NULL) { if (stricmp (executable_type, ".dll") == 0) strcat (cmdline, " -LD"); } if (debug) strcat (cmdline, " -Zi"); if (nsources == 0) { FILE *dummy = fopen ("__dummy__.c", "w"); fprintf (dummy, "static int foobar = 42;\n"); fclose (dummy); strcat (cmdline, " __dummy__.c"); } if (!output && !compileonly) strcat (cmdline, " -Fea.exe"); if (!compileonly) { strcat (cmdline, " -link"); for (i = 0; i < object_ix; i++) { strcat (cmdline, " "); strcat (cmdline, objects[i]); } for (i = 0; i < lib_ix; i++) { strcat (cmdline, " "); for (j = 0; j < libdir_ix; j++) { char b[1000]; sprintf (b, "%s\\%s.lib", libdirs[j], libraries[i]); if (access (b, 4) == 0) { strcat (cmdline, b); break; } sprintf (b, "%s\\lib%s.lib", libdirs[j], libraries[i]); if (access (b, 4) == 0) { strcat (cmdline, b); break; } } if (j == libdir_ix) { strcat (cmdline, libraries[i]); strcat (cmdline, ".lib"); } } } fprintf (stderr, "%s\n", cmdline); retval = system (cmdline); if (nsources == 0) remove ("__dummy__.c"); return retval; }
int main(int argc, char* argv[]) { int r; // set up strcpy(i2c_bus,"/dev/i2c-1"); // print header fprintf(stderr, "AM2321 reader application by saper_2 v.0.1\n"); process_argv(argc, argv); fprintf(stderr, "Using i2c bus device: %s\n",i2c_bus); if (info_mode) { uint8_t data[16]; memset(data,0xff,16); r = am2321_read_info(data, i2c_bus); fprintf(stderr,"Info read result %i\n",r); fprintf(stderr,"Info data: "); for(int i=0;i<8;i++) fprintf(stderr, "%02X ",data[i]); fprintf(stderr,"\n"); uint16_t model = data[0]<<8 | data[1]; uint8_t version = data[2]; uint32_t devid = data[3]<<24 | data[4]<<16 | data[5]<<8 | data[6]; uint8_t stat = data[7]; fprintf(stderr, "Model: 0x%04X (%iu)\n",model,model); fprintf(stderr, "Version: 0x%02X (%iu)\n",version,version); fprintf(stderr, "Device ID: 0x%08X (%iu)\n",devid,devid); fprintf(stderr, "Status: 0x%02X (%iu)\n",stat,stat); // format: i:[res_code];[model];[version];[dev_id];[status] printf("i:%i;%04x;%02x;%08x;%02x\n", r, model, version, devid, stat); if (raw_mode || val_mode) { //printf("\n"); fprintf(stderr,"\nDelay 1sec before reading values...\n"); delay1us(1*1000*1000); } } if (val_mode || raw_mode) { am2321_t val; time_t tt; unsigned long ts = (unsigned)time(NULL); time(&tt); memset(&val,0,sizeof(val)); r = am2321_read_raw(&val, i2c_bus); fprintf(stderr,"Read values result %i\n",r); fprintf(stderr,"Read values data: \n"); fprintf(stderr, " humi = 0x%04X (%i , %3.1f %%)\n",val.humi,val.humi, (val.humi*1.0f)/10.0f); fprintf(stderr, " temp = 0x%04X (%i , %3.1f degC)\n",val.temp,val.temp, (val.temp*1.0f)/10.0f); struct tm *tti = localtime(&tt); fprintf(stderr, "Current time is: %lu - %s\n",ts,asctime(tti)); fprintf(stderr,"\n"); if (val_mode>0 && raw_mode==0) { // val mode // format: v:[unix_time_stamp];[mode];[result];[humi];[temp] printf("v:%lu;r;%i;%3.1f;%3.1f\n", ts, r, (val.humi*1.0f)/10.0f, (val.temp*1.0f)/10.0f); } else if (val_mode==0 && raw_mode>0) { // raw mode // format: v:[unix_time_stamp];[mode];[result];[hex humi];[hex temp] printf("v:%lu;v;%i;%04x;%04x\n", ts, r, val.humi, val.temp); } else if (val_mode>0 && raw_mode>0) { // raw + val // format: v:[unix_time_stamp];[mode];[result];[hex humi];[hex temp];[humi];[temp] printf("v:%lu;rv;%i;%04x;%04x;%3.1f;%3.1f\n", ts, r, val.humi, val.temp, (val.humi*1.0f)/10.0f, (val.temp*1.0f)/10.0f); } else { // no format ? // format: x:[unix_time_stamp];[mode];9;FFFF;FFFF;65535;32767 printf("x:%lu;x;9;FFFF;FFFF;65535;32767\n", ts); } } if (val_mode==0 && raw_mode==0 && info_mode==0) { print_help(); fprintf(stderr,"No read mode selected.\n"); // format: x:[unix_time_stamp=0];[mode=E (=error)];9;FFFF;FFFF;65535;32767 printf("x:0;E;9;FFFF;FFFF;65535;32767\n"); } return 0; }