/*ESP8266 Methods*/ void connectToWifi() { setTeal(); if (wifi.joinAP(SSID, PASSWORD)) { wifiConnected = true; debugSerial2.print(F("Join AP success\r\n")); blinkGreen(3); setGreen(); } else { wifiConnected = false; debugSerial2.print(F("Join AP failure\r\n")); setRed(); } }
//removes the first message from the queue void removeFirstMessageFromQueue(uint8_t qNumber) { if (channelQueuesArray[qNumber].numMessagesOnQueue == 0) { blinkRed(17); blinkGreen(15); blinkOrange(11); return; } uint8_t i = 0; for (i = 0; i < channelQueuesArray[qNumber].numMessagesOnQueue - 1; i++) { channelQueuesArray[qNumber].packetList[i] = channelQueuesArray[qNumber].packetList[i + 1]; } channelQueuesArray[qNumber].numMessagesOnQueue--; //one less message on the queue }
//removes the next message from the queue of messages pending processing //and returns it //decrements numPacketsPendingProcessing ReceiveMessagePacket removeProcessPendingMsg() { if (numPacketsPendingProcessing == 0) { while (1) { blinkRed(25); blinkGreen(50);} } ReceiveMessagePacket returnMsg = receivedQueue[0]; uint8_t i = 0; for (i = 0; i < numPacketsPendingProcessing - 1; i++) { receivedQueue[i] = receivedQueue[i + 1]; } numPacketsPendingProcessing--; return returnMsg; }
void initBluetooth(void) { // initialise the bluetooth module BT_WAKE_HW_SetLow(); __delay_ms(10); // enable the bluetooth module BT_WAKE_HW_SetHigh(); __delay_ms(10); // enter command mode BT_Wake_SW_SetHigh(); __delay_ms(10); BT_CMD_SetLow(); WaitForNewLine(); UART1_WriteString((unsigned char *) "SF,2"); // reset the device to factory defaults WaitForNewLine(); UART1_WriteString((unsigned char *) "SN,Charger"); // set the device name WaitForNewLine(); UART1_WriteString((unsigned char *) "SDN,Apexweb"); // set the manufacturer WaitForNewLine(); UART1_WriteString((unsigned char *) "SDF,1.0"); // set the firmware revision WaitForNewLine(); UART1_WriteString((unsigned char *) "SDH,1.0"); // set the hardware revision WaitForNewLine(); UART1_WriteString((unsigned char *) "SDF,USB-Charger"); // set the model name WaitForNewLine(); UART1_WriteString((unsigned char *) "SDR,1.0"); // set the software revision WaitForNewLine(); UART1_WriteString((unsigned char *) "SDS,0001"); // set the serial number WaitForNewLine(); UART1_WriteString((unsigned char *) "SS,80000001"); // set GATT profiles for Device Information and User Defined Private Services WaitForNewLine(); UART1_WriteString((unsigned char *) "SR,24004000"); // set device as peripheral with automatic advertisement. WaitForNewLine(); // Define private services // Date and Time: Permissions: Read / Write Size:12 bytes Format:YYMMDDHHMMSS ID: 0018 UART1_WriteString((unsigned char *) "PS,AFF25C609CB411E4A1EB0002A5D5C51B"); WaitForNewLine(); UART1_WriteString((unsigned char *) "PC,AFF25C609CB411E4A1EB0002A5D5C51B,0A,12"); WaitForNewLine(); // Power Usage in Watts: Permissions: Read Size:8 bytes Format:float Example 0023.56 ID: 001A UART1_WriteString((unsigned char *) "PS,C8CECD409CB411E48C610002A5D5C51B"); WaitForNewLine(); UART1_WriteString((unsigned char *) "PC,C8CECD409CB411E48C610002A5D5C51B,02,08"); WaitForNewLine(); // Charger Active: Permissions: Read / Write Size:1 byte Format: Boolean ID: 001C 001C UART1_WriteString((unsigned char *) "PS,D72DB2209CB411E4B9C50002A5D5C51B"); WaitForNewLine(); UART1_WriteString((unsigned char *) "PC,D72DB2209CB411E4B9C50002A5D5C51B,0A,01"); WaitForNewLine(); // Power Down Voltage: Permissions: Read / Write Size:8 bytes Format: float Example: 12.2 ID: 001E UART1_WriteString((unsigned char *) "PS,E7D379C09CB411E4BB320002A5D5C51B"); WaitForNewLine(); UART1_WriteString((unsigned char *) "PC,E7D379C09CB411E4BB320002A5D5C51B,0A,08"); WaitForNewLine(); // Power Up Voltage: Permissions: Read / Write Size:8 bytes Format: float Example: 12.6 ID: 0020 UART1_WriteString((unsigned char *) "PS,F60004009CB411E4B7C90002A5D5C51B"); WaitForNewLine(); UART1_WriteString((unsigned char *) "PC,F60004009CB411E4B7C90002A5D5C51B,0A,08"); WaitForNewLine(); // Charging Device VID/PID: Permissions: Read Size:4 bytes Format: uint32 ID: 0022 UART1_WriteString((unsigned char *) "PS,02B09CA09CB511E4BC170002A5D5C51B"); WaitForNewLine(); UART1_WriteString((unsigned char *) "PC,02B09CA09CB511E4BC170002A5D5C51B,02,10"); WaitForNewLine(); // Charging Device Start Time: Permissions: Read Size:12 bytes Format:YYMMDDHHMMSS ID: 0024 UART1_WriteString((unsigned char *) "PS,0FF845209CB511E481C40002A5D5C51B"); WaitForNewLine(); UART1_WriteString((unsigned char *) "PC,0FF845209CB511E481C40002A5D5C51B,02,12"); WaitForNewLine(); // Charging Device Total Charge (Wh): Permissions: Read Size:8 bytes Format:float Example 0423.56 ID: 0026 UART1_WriteString((unsigned char *) "PS,21351CA09CB511E48B450002A5D5C51B"); WaitForNewLine(); UART1_WriteString((unsigned char *) "PC,21351CA09CB511E48B450002A5D5C51B,02,08"); WaitForNewLine(); // Charging Device End Time: Permissions: Read Size:12 bytes Format:YYMMDDHHMMSS ID: 0028 UART1_WriteString((unsigned char *) "PS,5281A8009CB511E4BE290002A5D5C51B"); WaitForNewLine(); UART1_WriteString((unsigned char *) "PC,5281A8009CB511E4BE290002A5D5C51B,02,12"); WaitForNewLine(); // Priavte services defined, reboot the device to initialise the changes UART1_WriteString((unsigned char *) "R,1"); WaitForNewLine(); WaitForNewLine(); // Blink the green led 3 times to show the charger is initialised LED_RED_SetLow(); blinkGreen(); blinkGreen(); blinkGreen(); initBluetoothComplete = true; }
void FSM::evalState() { switch (currentState) { case Start: case Standby: process->driveStop(); process->lightGreenOff(); process->lightRedOff(); process->lightYellowOff(); process->turnLEDQ1Off(); process->turnLEDQ2Off(); process->turnLEDResetOff(); process->turnLEDStartOn(); break; case Ready: process->driveStop(); process->lightGreenOn(); process->lightRedOff(); process->lightYellowOff(); process->turnLEDStartOn(); break; case Transport: process->driveRight(); process->lightGreenOn(); process->lightRedOff(); process->lightYellowOff(); process->turnLEDStartOff(); break; case MetalDetection: process->driveStop(); process->lightGreenOn(); process->lightRedOff(); process->lightYellowOff(); break; case NonMetalic: process->driveRight(); process->lightGreenOn(); process->lightRedOff(); process->lightYellowOff(); process->turnLEDStartOff(); process->openJunction(); break; case EndReached: process->driveStop(); process->lightRedOff(); process->lightYellowOff(); process->turnLEDStartOff(); process->closeJunction(); process->turnLEDStartOn(); blinkGreen(); break; case Metalic: process->driveRight(); process->lightGreenOff(); process->lightRedOff(); process->lightYellowOn(); break; case SlideReached: process->driveStop(); process->lightGreenOn(); process->lightRedOff(); process->lightYellowOff(); process->turnLEDStartOn(); break; case Error: process->driveStop(); process->lightGreenOff(); process->lightYellowOff(); process->turnLEDStartOn(); process->closeJunction(); blinkRed(); break; case TransportBack: process->driveLeft(); blinkRed(); process->lightGreenOff(); break; case StartReached: process->driveStop(); blinkRed(); break; } }