/* Desc: Displays a given bit pattern using the 4 LEDs and holds it for a given period Inputs: int number - Number of to be lit long delay - Duration of the delay in s */ void displayBits(int number, long delay){ int bitpos = 1; int num = 0; delay= delay*1000; /*test bit position 0 - if number is odd*/ if((bitpos & number) == 1){ lightLED(1); } /*test bit position 1 - AND with bin 2*/ bitpos = 2; if((bitpos & number) == 2){ lightLED(2); } /*test bit position 2 - AND with bin 3*/ bitpos = 4; if((bitpos & number) == 4){ lightLED(3); } /*test bit position 3 - AND with bin 4*/ bitpos = 8; if((bitpos & number)== 8){ lightLED(4); } SystickTimer(delay); killLED(1); killLED(2); killLED(3); killLED(4); }
//Default function in MQTT paho (Runs when msg is received) int msgarrvd(void *context, char *topicName, int topicLen, MQTTClient_message *message) { int i; char* payloadptr; char messageText[message->payloadlen]; printf("Message arrived\n"); printf(" topic: %s\n", topicName); printf(" message: "); payloadptr = message->payload; for(i=0; i < message->payloadlen; i++) { // putchar(*payloadptr++); messageText[i] = *payloadptr++; } messageText[i] = '\0'; lightLED(messageText[0]); printf("%s",messageText); putchar('\n'); MQTTClient_freeMessage(&message); MQTTClient_free(topicName); return 1; }
/* Pre-Reqs:PrintLineToLCD(), KeypadTest(), global functionusetext, global userposition Desc: Bunch of loops. First displays 1st and 2nd lines, then checks button presses to send corresponding lines */ void functiontext(){ char button; PrintLineToLCD(functionusetext[0]); PrintLineToLCD(functionusetext[1]); SystickTimer(400); while (1){ button = KeypadTest(); if (button == '#'){ userposition++; if (userposition>3){ userposition = 0; } PrintLineToLCD(functionusetext[0]); PrintLineToLCD(functionusetext[userposition+1]); } else if (button == '*'){ userposition-- ; if (userposition<0){ userposition = 3; } PrintLineToLCD(functionusetext[0]); PrintLineToLCD(functionusetext[userposition+1]); } else if (button == '0'){ userposition =0; return; } else if (button == '1'){ double ircal10, ircal50; float uscal10, uscal50; userposition=0; PrintLineToLCD(functionusetext[6]); PrintLineToLCD(functionusetext[7]); SystickTimer(1500); PrintLineToLCD(functionusetext[8]); PrintLineToLCD(functionusetext[7]); while(1){ button = KeypadTest(); if (button == '#'){ ircal10 = irMedianRaw(); uscal10 = usScan(); break; } } PrintLineToLCD(functionusetext[9]); PrintLineToLCD(functionusetext[7]); while(1){ button = KeypadTest(); if (button == '#'){ ircal50 = irMedianRaw(); uscal50 = usScan(); break; } } if (whichSensor == 0){ irCalibrate(ircal10, ircal50); } else{ usCalibrate(uscal10, uscal50); } PrintLineToLCD(functionusetext[10]); PrintLineToLCD(" "); SystickTimer(1500); return; } else if (button == '2'){ userposition =0; while (1){ button = KeypadTest(); PrintLineToLCD(functionusetext[5]); if (whichSensor == 0){ irString(); killLED(2); lightLED(3); } else if(whichSensor == 1){ usString(); killLED(3); lightLED(2); } if (button == '0'){ break; } } } else if (button == '3'){ userposition =0; return; } else if (button == '4'){ userposition = 0; return; } } }