/*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();
	}
}
Exemplo n.º 2
0
//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
}
Exemplo n.º 3
0
//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;
}
Exemplo n.º 5
0
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;
    }
}