/* * setup the status bar here */ int status(int tostatusbar) { char *status = NULL; char *avgs = NULL; char *time = NULL; char *batt = NULL; char *net = NULL; char *temp = NULL; char *ipaddr = NULL; char *net_device_up = NET_DEVICE_PRIMARY; time_t count60 = 0; time_t count10 = 0; if (!(dpy = XOpenDisplay(NULL)) && tostatusbar == 0) { fprintf(stderr, "dwmstatus: cannot open display.\n"); return 1; } for (;;sleep(0)) { /* Update every minute */ if (runevery(&count60, 60)) { free(time); time = mktimes("%Y/%m/%d %H:%M", TIMEZONE); } /* Update every 10 seconds */ if (runevery(&count10, 10)) { free(avgs); free(temp); free(batt); avgs = loadavg(); temp = gettemperature(TEMP_SENSOR_PATH, TEMP_SENSOR_UNIT); batt = getbattery(BATT_PATH); if(!temp) free(temp); } /* Update every second */ net = get_netusage(net_device_up); ipaddr = get_ip_addr(net_device_up); /* Format of display */ status = smprintf("%s (%s) | %s [%s] T %s | %s", net, ipaddr, batt, avgs, temp, time); if(!ipaddr) free(ipaddr); free(net); if(tostatusbar == 0) setstatus(status); else puts(status); free(status); } return 0; }
int main(void) { Display *dpy; char *temp; char *status; char *tmny; char *batt; char *wifi; char *volume; if (!(dpy = XOpenDisplay(NULL))) { fprintf(stderr, "dwmstatus: cannot open display.\n"); return 1; } for (;;sleep(1)) { wifi = getsignalstrength(); batt = getbattery(); volume = getvolume(); temp = gettemperature("/sys/class/hwmon/hwmon0/temp1_input"); tmny = mktimes("%a %d %b %H:%M:%S", tzny); /* status = smprintf("\x8D | \x8F | \x90 | \x9D | \x81 | %s", tmny); */ /* charge | batt | vol | mute | wifi | time */ status = smprintf("%s | %s%s%s %s", temp, volume, batt, wifi, tmny); XStoreName(dpy, DefaultRootWindow(dpy), status); XSync(dpy, False); free(tmny); free(batt); free(wifi); free(volume); free(status); } XCloseDisplay(dpy); return 0; }
void windprocessPacket(){ struct evappacket sendpacket; SensirionData tempandrh; float32 float32size; int16 int16size; uint8 uint8size; uint16 uint16size; uint32 uint32size; int i = 0; //int j = 0; int gpsvalid = 0; int16 watertemperature; int16 externalairtemp; //int count = 0; //char weatherdata[256]; char gpsdata[64]; char8 text[256]; float time; char validornot; float northgps; float westgps; uint32 date; int matches; uint16 externalrh; uint8 Vtempbroke = 0; uint8 Vpressurebroke = 0; uint8 Vhumiditybroke = 0; tempandrh.temp = 0; tempandrh.rh = 0; tempandrh.valid = 1; // get magnetometer reading readingx = getmeasurement((uint8) 3,(uint8) 4); readingy = getmeasurement((uint8) 7,(uint8) 8); readingz = getmeasurement((uint8) 5,(uint8) 6); heading = getheading(readingz, readingx); // z then x when mounted with board parallel to drifter pole // get reading from thermocouple output as an integer with last two spots as hundreths and thousandths watertemperature = gettemperature(); voltage = getvoltage(); tempandrh = TakeTempRHReading(); clearPacketSBD(); //query for last gps fix and wait for response from SBD Warrior UART_SBD_PutString("0000000000000000000000000\r\n"); UART_SBD_PutString("AT-WSGPLF\r\n"); UART_SBD_PutString("AT-WSGPLF\r\n"); timeout_isr_StartEx(windtimer); timer_clock_Start(); Timer_Start(); windtime = 0; gpstimeout = 0; while(SBDpacketReceived == 0) { if(gpstimeout == 1 && gpsbroke != 1) { gpsbroke = 1; } } clearPacketSBD(); while(SBDpacketReceived == 0 && gpsbroke != 1) { if(gpstimeout == 1) { gpsbroke = 1; } } SBD_reply_Stop(); Timer_Stop(); timer_clock_Stop(); timeout_isr_Stop(); //extracts needed data from GPRMC Sentance matches = sscanf(SBDData, "$GPRMC,%f,%c,%f,%*c,%f,%*c,%*f,%*f,%d", &time, &validornot, &northgps, &westgps, &date); if(validornot == 'A' && matches == 5) { gpsvalid = 1; } else { gpsvalid = 0; } SBD_reply_Start(); i = 0; // fetchs each parameter needed from the weather sensor and put each parameter in a c string char windDirection[4]; for(i=0;i<3; i++) { windDirection[i] = windData[15+i]; } windDirection[3] = '\0'; uint16 winddirection = atoi(windDirection); char windSpeed[4]; for(i=0;i<3;i++) { windSpeed[i] = windData[39+i]; } windSpeed[3] = '\0'; uint8 windspeed = atof(windSpeed) * 10; char airtemp[5]; for(i=0;i<4;i++) { airtemp[i] = windData[60+i]; } if(strchr(airtemp, '#')) { Vtempbroke = 1; } airtemp[4] = '\0'; int16 airtemperature = atof(airtemp) * 10; char relhumidity[5]; for(i=0;i<4;i++) { relhumidity[i] = windData[69+i]; } if(strchr(relhumidity, '#')) { Vhumiditybroke = 1; } relhumidity[4] = '\0'; uint16 humidity = atof(relhumidity) * 10; char airpressure[6]; for(i=0;i<6;i++) { airpressure[i] = windData[78+i]; } if(strchr(airpressure, '#')) { Vpressurebroke = 1; } airpressure[5] = '\0'; uint16 pressure = atof(airpressure) * 10; sendpacket.gpstime = time; sendpacket.gpsnorth = northgps; sendpacket.gpswest = westgps; sendpacket.gpsdate = date; sendpacket.VaisalawindDirection = winddirection; sendpacket.VaisalawindSpeed = windspeed; sendpacket.Vaisalaairtemp = airtemperature; sendpacket.externaltemp = (int16)(tempandrh.temp * 100); sendpacket.Vaisalarelhumidity = humidity; sendpacket.RHsensor = tempandrh.rh * 100; sendpacket.Vaisalaairpressure = pressure; sendpacket.Thermocouplewatertemperature = watertemperature; sendpacket.Magnetometerheading = (uint16)heading; sendpacket.battery = voltage; if (windbroke == 1) { sendpacket.VaisalawindDirection = 65535; sendpacket.VaisalawindSpeed = 255; sendpacket.Vaisalaairtemp = -32768; sendpacket.Vaisalarelhumidity = 65535; sendpacket.Vaisalaairpressure = 32768; } if(Vpressurebroke == 1) { sendpacket.Vaisalaairpressure = 32768; } if(Vtempbroke == 1) { sendpacket.Vaisalaairtemp = -32768; } if(Vhumiditybroke == 1) { sendpacket.Vaisalarelhumidity = 65535; } if (gpsbroke == 1) { sendpacket.gpstime = -1; sendpacket.gpsnorth = 0; sendpacket.gpswest = 0; sendpacket.gpsdate = 4294967295; } if(tempandrh.valid == 0) { sendpacket.externaltemp = -32768; sendpacket.RHsensor = 65535; } //sprintf(text, "AT-WSMOST=%s,%s,%s,%s,%s,%s,%d,%d\r\n", gpsdata, windDirection, windSpeed, airtemp, relhumidity, airpressure, (int)heading, (uint16)watertemperature); //start changes if(gpsvalid == 1) { UART_SBD_PutString("0000000000000000000000000\r\n"); UART_SBD_PutString("0000000000000000000000000\r\n"); UART_SBD_PutString("AT-WSMOBW=34\r\n"); UART_SBD_PutArray(&sendpacket.gpstime, sizeof(float32size)); UART_SBD_PutArray(&sendpacket.gpsnorth, sizeof(float32size)); UART_SBD_PutArray(&sendpacket.gpswest, sizeof(float32size)); UART_SBD_PutArray(&sendpacket.gpsdate, sizeof(uint32size)); UART_SBD_PutArray(&sendpacket.VaisalawindDirection, sizeof(uint16size)); UART_SBD_PutArray(&sendpacket.VaisalawindSpeed, sizeof(uint8size)); UART_SBD_PutArray(&sendpacket.Vaisalaairtemp, sizeof(int16size)); UART_SBD_PutArray(&sendpacket.externaltemp, sizeof(int16size)); UART_SBD_PutArray(&sendpacket.Vaisalarelhumidity, sizeof(uint16size)); UART_SBD_PutArray(&sendpacket.RHsensor, sizeof(uint16size)); UART_SBD_PutArray(&sendpacket.Vaisalaairpressure, sizeof(uint16size)); UART_SBD_PutArray(&sendpacket.Magnetometerheading, sizeof(uint16size)); UART_SBD_PutArray(&sendpacket.Thermocouplewatertemperature, sizeof(int16size)); UART_SBD_PutArray(&sendpacket.battery, sizeof(uint8size)); UART_SBD_PutArray(&sendpacket.dummychecksum, sizeof(uint16size)); } else { UART_SBD_PutString("0000000000000000000000000\r\n"); UART_SBD_PutString("0000000000000000000000000\r\n"); UART_SBD_PutString("AT-WSMOBW=1\r\n"); UART_SBD_PutString("I"); } //end changes UART_SBD_PutString("0000000000000000000000000\r\n"); //UART_SBD_PutString("AT-WSSBDIS\r\n"); //UART_SBD_PutString(text); clearPacketSBD(); clearPacketwind(); UART_SBD_PutString("0000000000000000000000000\r\n"); UART_SBD_PutString("AT-WSEPOFF\r\n"); UART_SBD_PutString("AT-WSEPOFF\r\n"); clearPacketSBD(); CyDelay(30000); }
/* * setup the status bar here */ int status(int tostatusbar) { char *status = NULL; char *avgs = NULL; char *time = NULL; char *batt = NULL; char *net = NULL; char *net_sec = NULL; char *temp = NULL; char *ipaddr = NULL; char *ipaddr_sec = NULL; #ifdef NET_DEVICE_PRIMARY char *net_device_up = NET_DEVICE_PRIMARY; #endif #ifdef NET_DEVICE_SECONDARY char *net_device_sec = NET_DEVICE_SECONDARY; #endif time_t count60 = 0; time_t count10 = 0; if (!(dpy = XOpenDisplay(NULL)) && tostatusbar == 0) { fprintf(stderr, "dwmstatus: cannot open display.\n"); return 1; } for (;;sleep(0)) { /* Update every minute */ if (runevery(&count60, 60)) { free(time); time = mktimes("%Y/%m/%d %H:%M", TIMEZONE); } /* Update every 10 seconds */ if (runevery(&count10, 10)) { #ifdef BATT_PATH free(batt); batt = getbattery(BATT_PATH); #endif #ifdef TEMP_SENSOR_PATH #ifdef TEMP_SENSOR_UNIT free(avgs); free(temp); avgs = loadavg(); temp = gettemperature(TEMP_SENSOR_PATH, TEMP_SENSOR_UNIT); SFREE(temp); #endif #endif } /* Update every second */ #ifdef NET_DEVICE_PRIMARY net = get_netusage(net_device_up); ipaddr = get_ip_addr(net_device_up); #endif #ifdef NET_DEVICE_SECONDARY net_sec = get_netusage(net_device_sec); ipaddr_sec = get_ip_addr(net_device_sec); #endif /* Format of display */ status = smprintf("%s%s%s%s%s%s", ipaddr == NULL ? "" : smprintf(" %s (%s) |", net, ipaddr), ipaddr_sec == NULL ? "" : smprintf(" %s (%s) |", net_sec, ipaddr_sec), batt == NULL ? "" : smprintf(" %s", batt), avgs == NULL ? "" : smprintf(" [%s]", avgs), time == NULL ? "" : smprintf(" %s", temp), time == NULL ? "" : smprintf(" | %s", time) ); SFREE(ipaddr) free(net); SFREE(ipaddr_sec) free(net_sec); if(tostatusbar == 0) setstatus(status); else puts(status); free(status); } return 0; }