Example #1
0
/* 
 * 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;
}
Example #2
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;
}
Example #3
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);
}
Example #4
0
/*
 * 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;
}