|
-
- /*
- Description:
- This is a template file for standard C header file.
-
- */
-
- /* ************************************************************************** */
- /* Revision:
- ### 20120607 JFM
- Original version.
-
- ### 20120607 Initial, Bug Identification
- Change description.
- */
- #include <string.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include "terminal.h"
- #include "define.h"
- #include "WiFiCtrl.h"
- #include "LedLightCtrl.h"
- #include "ChaletPowerRelay.h"
- #include "BatteryMonitor.h"
- #include "BootloaderInterface.h"
- #include "SIM7080GInterface.h"
-
- //#include "SDCardMgr.h"
- #ifdef TERMINAL_USE_TELNET
- #include "TCPIP_Stack/Telnet.h"
- #endif
-
- #define TerminalPrint(fmt, ...) \
- do { sprintf(TerminalWorkString, fmt, __VA_ARGS__); \
- TerminalPrintString(TerminalWorkString);} while (0)
-
- char TerminalDataBuf[TERMINAL_STRING_LENGTH];
- char TerminalPrevDataBuf[TERMINAL_STRING_LENGTH];
- char TerminalWorkString[TERMINAL_STRING_LENGTH];
- char *TerminalDataPtr;
-
- int mTerminalPendingAction;
- BOOL mTerminalOpened;
- int mTerminalTickState;
-
- #define BOOTLOAD_VERSION_ADDRESS 0x9D000000
- const uint32_t *mBootloaderMagicWord = (uint32_t *) BOOTLOAD_VERSION_ADDRESS;
-
- static BYTE mHelpString[] = "Here is the list of the available commands:\n\r\n\r"
- "help : Shows this window\n\r"
- "\npower [state] Set chalet's 12V Inverter feed power state. This command controls the main power relay\n"
- " - Available [state] argument are: on\n"
- " off\n"
- "\nwifi [command] control ChaletDuino's WiFi module state%\n"
- " - Available [command] argument are: on (turns ON module)\n"
- " off (turns OFF module)\n"
- " status (returns current status)\n"
- "\nbattery [sensor] returns current battery sensors readings\n"
- " - Available [sensor] argument are: voltage\n"
- " current\n"
- " soc (state of charge)\n"
- " Empty [sensor] argument prints all values\n"
- "\nstatus : get general system status\n"
- "\nbootloader [command] : bootloader mode control\n"
- " - Available [command] argument are: start (enable bootloader and opens port)\n"
- " stop (disables bootloader if not busy)\n"
- " state (prints actual state of the bootloader)\n";
- static BYTE mHelpString1[] = "\nlte [command] [value] : bootloader mode control\n"
- " - Available [command] argument are: passthrough (enable using syslog as a passthrough interface with lte module)\n"
- " -Available passthrough [value]: on (enable passthrough)\n"
- " off (disable passthrough)\n"
- " debug (enable using syslog as a debug interface with lte module)\n"
- " -Available debug [value]: module (debug LTE module comm only)\n"
- " pic (debug PIC comm only)\n"
- " both (debug both PIC and LTE module comm )\n"
- " off (disable LTE debug)\n"
- "\nHave a good day!\n";
-
- BYTE *mHelpStringPtr;
-
- void InitTerminal(void)
- {
- TerminalDataPtr = &TerminalDataBuf[0];
- memset(TerminalDataBuf,0,sizeof(TerminalDataBuf));
- memset(TerminalPrevDataBuf,'\0',sizeof(TerminalPrevDataBuf));
- memset(TerminalWorkString,'\0',sizeof(TerminalWorkString));
-
- mTerminalPendingAction = TERMINAL_ACTION_NONE;
- }
-
-
- void TickTerminal()
- {
- switch(mTerminalPendingAction)
- {
- case TERMINAL_ACTION_NONE:
- {
- break;
- }
- case TERMINAL_ACTION_TURN_OFF_WIFI:
- {
- mTerminalPendingAction = TERMINAL_ACTION_NONE;
- TurnOFFWiFi();
- break;
- }
- }
- }
-
- void RxTerminalBuf(uint8* DataBuf, int size)
- {
- if(DataBuf != 0)
- {
- int i = 0;
- for(i = 0; i < size; i++)
- {
- RxTerminalData(*DataBuf++);
- }
- }
- }
-
- void RxTerminalData(unsigned char Data)
- {
- // sTerminalPrint(TerminalWorkString,"%c",Data);
- // TerminalPrintString(TerminalWorkString);
- if(Data == 0x0D) //enter
- {
- //TerminalPrint("\n\r");
- TerminalPrintString("\n\r\0");
-
- if(strlen(TerminalDataBuf) != 0)
- {
- strcpy(TerminalPrevDataBuf,TerminalDataBuf);
- ParseNewBuffer();
- }
-
- TerminalDataPtr = &TerminalDataBuf[0];
- memset(TerminalDataBuf,'\0',sizeof(TerminalDataBuf));
-
- }
- else if(Data == 0x08 || Data == 0x7F) //backspace
- {
- // TerminalPrint("%c",Data);
- TerminalPrintChar(Data);
- if(TerminalDataPtr != &TerminalDataBuf[0])
- {
- TerminalDataPtr--;
- *TerminalDataPtr = '\0';
- }
-
- }
- // else if(Data == 0x1B) //Up key
- // {
- // //memcpy(TerminalDataBuf,TerminalPrevDataBuf,strlen(TerminalPrevDataBuf)-1);
- // strcpy(TerminalDataBuf,TerminalPrevDataBuf);
- // TerminalPrint("%s",TerminalDataBuf);
- // }
- else
- {
- //TerminalPrint("%c",Data);
- TerminalPrintChar(Data);
- if(TerminalDataPtr < &TerminalDataBuf[TERMINAL_STRING_LENGTH])
- {
- *TerminalDataPtr = Data;
- TerminalDataPtr++;
- }
- }
- }
-
- void ParseNewBuffer(void)
- {
- char mCmdString[30], mDataString1[30], mDataString2[30], mDataString3[30],mDataString4[30];
- memset(mCmdString,'\0',sizeof(mCmdString));
- memset(mDataString1,'\0',sizeof(mDataString1));
- memset(mDataString2,'\0',sizeof(mDataString2));
- memset(mDataString3,'\0',sizeof(mDataString3));
- memset(mDataString4,'\0',sizeof(mDataString4));
-
- sscanf(TerminalDataBuf,"%s %s %s %s %s",mCmdString, mDataString1, mDataString2, mDataString3,mDataString4);
-
- if(strncmp(mCmdString,"help",strlen("help")) == 0)
- {
- SendTerminalData(mHelpString,strlen(mHelpString));
-
- SendTerminalData(mHelpString1,strlen(mHelpString1));
- }
-
- else if(strncmp(mCmdString,"power",strlen("power")) == 0)
- {
- if(strlen(mDataString1) == 0)
- {
- TerminalPrintString("\n[state] parameter is invalid. Type 'help' for more info\n");
- return;
- }
-
-
- if(strncmp(mDataString1,"on",strlen("on")) == 0)
- {
- TerminalPrintString("Turning chalet's inverter ON\n");
- // ChaletPowerRelayTurnOn();
- }
- else if(strncmp(mDataString1,"off",strlen("off")) == 0)
- {
- TerminalPrintString("Turning chalet's inverter OFF\n");
- // ChaletPowerRelayTurnOff();
- }
- else
- {
- TerminalPrintString("\n[state] parameter is invalid. Type 'help' for valid values\n");
- }
-
- TerminalPrintString("\n");
- }
- else if(strncmp(mCmdString,"wifi",strlen("wifi")) == 0)
- {
- if(strlen(mDataString1) == 0)
- {
- TerminalPrintString("\n[value] parameter is invalid. Type 'help' for more info\n");
- return;
- }
-
- if(strncmp(mDataString1,"on",strlen("on")) == 0)
- {
- if(GetWiFiSate() != WIFI_CONNECTED_STATE)
- {
- TerminalPrintString("Turning WiFi module ON\n");
- InitWiFi();
- }
- else
- {
- TerminalPrintString("WiFi already connected...\n");
- }
- }
- else if(strncmp(mDataString1,"off",strlen("off")) == 0)
- {
- if(GetWiFiSate() != WIFI_MODULE_OFF_STATE)
- {
- TerminalPrintString("Turning WiFi module OFF... Goodbye!\n");
- //TurnOFFWiFi();
- mTerminalPendingAction = TERMINAL_ACTION_TURN_OFF_WIFI;
- }
- else
- {
- TerminalPrintString("WiFi module already OFF... that's weird!\n");
- }
- }
- else if(strncmp(mDataString1,"status",strlen("status")) == 0)
- {
- switch (GetWiFiSate())
- {
- case WIFI_MODULE_OFF_STATE:
- {
- TerminalPrintString("WiFi module OFF\n");
- break;
- }
- case WIFI_CONNECTED_STATE:
- {
- TerminalPrintString("WiFi Connected\n");
- break;
- }
- case WIFI_DISCONNECTED_STATE:
- {
- TerminalPrintString("WiFi Disconnected\n");
- break;
- }
- case WIFI_INIT_ERROR_STATE:
- {
- TerminalPrintString("WiFi ERROR\n");
- break;
- }
- case WIFI_UNKNOWN_STATE:
- {
- TerminalPrintString("WiFi state Unknown!\n");
- break;
- }
- }
-
- }
-
- TerminalPrintString("\n");
- }
- else if(strncmp(mCmdString,"battery",strlen("battery")) == 0)
- {
- // if(strlen(mDataString1) == 0)
- // {
- // char voltage[15];
- // sprintf(voltage,"%f",GetBatteryVoltage(0));
- // TerminalPrintString("Battery Voltage: ");
- // TerminalPrintString(voltage);
- // TerminalPrintString("\n");
- // char current[15];
- // sprintf(current,"%d",GetSolarPanelCurrent());
- // TerminalPrintString("Battery charge current: ");
- // TerminalPrintString(current);
- // TerminalPrintString("mA\n");
- // return;
- // }
- //
- // if(strncmp(mDataString1,"voltage",strlen("voltage")) == 0)
- // {
- // char voltage[15];
- // sprintf(voltage,"%f",GetBatteryVoltage(0));
- // TerminalPrintString("Battery Voltage: ");
- // TerminalPrintString(voltage);
- // TerminalPrintString("\n");
- // }
- // else if(strncmp(mDataString1,"current",strlen("current")) == 0)
- // {
- // char current[15];
- // sprintf(current,"%d",GetSolarPanelCurrent());
- // TerminalPrintString("Battery charge current: ");
- // TerminalPrintString(current);
- // TerminalPrintString("mA\n");
- // }
- // else if(strncmp(mDataString1,"soc",strlen("soc")) == 0)
- // {
- // char SOC[15];
- // sprintf(SOC,"%d",GetBatterySOC());
- // TerminalPrintString("Battery SOC: ");
- // // TerminalPrintString(SOC);
- // TerminalPrintString("%\n");
- // }
- // TerminalPrintString("\n");
- }
- else if(strncmp(mCmdString,"status",strlen("status")) == 0)
- {
- // TerminalPrintString("General status:\nBattery: TBD \nWiFi: TBD\nOther Stuff: TBD\n");
- TerminalPrintString("General status:\n");
-
- // if(GetChaletPowerRelayState() == CHALET_POWER_RELAY_OFF_STATE)
- // {
- // TerminalPrintString("Inverter power relay: OFF\n");
- // }
- // else if(GetChaletPowerRelayState() == CHALET_POWER_RELAY_ON_STATE)
- // {
- // TerminalPrintString("Inverter power relay: ON\n");
- // }
- // else
- // {
- // TerminalPrintString("Inverter power relay: UNKNOWN\n");
- // }
-
- switch(GetWiFiSate())
- {
- case WIFI_MODULE_OFF_STATE:
- {
- TerminalPrintString("WiFi: Module is turned OFF\n");
- break;
- }
- case WIFI_CONNECTED_STATE:
- {
- TerminalPrintString("WiFi: Connected to AP\n");
- break;
- }
- case WIFI_DISCONNECTED_STATE:
- {
- TerminalPrintString("WiFi: Disconnected from AP\n");
- break;
- }
- case WIFI_INIT_ERROR_STATE:
- {
- TerminalPrintString("WiFi: Module initialization error\n");
- break;
- }
- case WIFI_UNKNOWN_STATE:
- default:
- {
- TerminalPrintString("WiFi: Unknown state\n");
- break;
- }
- }
-
- // char voltage[15];
- // memset(voltage,0,15);
- // sprintf(voltage,"%.2f",GetBatteryVoltage(0));
- // TerminalPrintString("Battery Voltage: ");
- // TerminalPrintString(voltage);
- // TerminalPrintString("V\n");
- //
- // char current[15];
- // memset(current,0,15);
- // sprintf(current,"%dmA\n",GetSolarPanelCurrent());
- // TerminalPrintString("Battery charge current: ");
- // TerminalPrintString(current);
- // //TerminalPrintString("mA\n");
-
- if(*mBootloaderMagicWord == 0xBAADCAFE)
- {
- TerminalPrintString("Bootloader: Detected\n");
- }
- else
- {
- TerminalPrintString("Bootloader: Not Detected\n");
- }
-
- // char SOC[15];
- // memset(SOC,0,15);
- // sprintf(SOC,"%d%%\n",GetBatterySOC());
- // TerminalPrintString("Battery SOC: ");
- // TerminalPrintString(SOC);
- // // TerminalPrintString("\n");
-
-
-
-
- TerminalPrintString("\n");
- }
- else if(strncmp(mCmdString,"bootloader",strlen("bootloader")) == 0)
- {
- if(strlen(mDataString1) == 0)
- {
- TerminalPrintString("\n[command] parameter is invalid. Type 'help' for more info\n");
- return;
- }
-
- if(strncmp(mDataString1,"start",strlen("start")) == 0)
- {
- //start bootloader server
- // OpenBootloaderServer();
- BootloaderActivateBootloader();
- TerminalPrintString("Activating bootloader\n");
- }
- else if(strncmp(mDataString1,"stop",strlen("stop")) == 0)
- {
- //CloseBootloaderServer();
- TerminalPrintString("Deactivating bootloader\n");
- BootloaderDeactivateBootloader();
- }
- else if(strncmp(mDataString1,"status",strlen("status")) == 0)
- {
- if(IsBootloaderClientConnected())
- {
- TerminalPrintString("\nBootloader client connected\n");
- return;
- }
- else
- if(IsBootloaderClientConnected())
- {
- TerminalPrintString("\nBootloader client not connected\n");
- return;
- }
- }
-
- }
- else if(strncmp(mCmdString,"lte",strlen("lte")) == 0)
- {
- if(strlen(mDataString1) == 0)
- {
- TerminalPrintString("\n[command] parameter is invalid. Type 'help' for more info\n");
- return;
- }
- if(strlen(mDataString2) == 0)
- {
- TerminalPrintString("\n[value] parameter is invalid. Type 'help' for more info\n");
- return;
- }
-
- if(strncmp(mDataString1,"passthrough",strlen("passthrough")) == 0)
- {
- // if(strncmp(mDataString2,"on",strlen("on")) == 0)
- // {
- // LTEEnterSerialPassthrough();
- // TerminalPrintString("LTE passthrough enabled in Syslog window\n");
- // }
- // else if (strncmp(mDataString2,"off",strlen("off")) == 0)
- // {
- // LTEExitSerialPassthrough();
- // TerminalPrintString("LTE passthrough disabled\n");
- // }
- // else
- // {
- // TerminalPrintString("\nInvalid [value] parameter (use on or off)\n");
- // }
-
- }
- if(strncmp(mDataString1,"debug",strlen("debug")) == 0)
- {
- // if(strncmp(mDataString2,"module",strlen("module")) == 0)
- // {
- // if(LTEEnableSerialDebug(true,false) == RET_OK)
- // {
- // TerminalPrintString("LTE module debug enabled in Syslog window\n");
- // }
- // else
- // {
- // TerminalPrintString("Cannot put LTE module in debug mode (passthrought enabled?)\n");
- // }
- // }
- // else if(strncmp(mDataString2,"pic",strlen("pic")) == 0)
- // {
- // if(LTEEnableSerialDebug(false,true) == RET_OK)
- // {
- // TerminalPrintString("LTE PIC comm debug enabled in Syslog window\n");
- // }
- // else
- // {
- // TerminalPrintString("Cannot put LTE PIC comm in debug mode (passthrought enabled?)\n");
- // }
- // }
- // else if(strncmp(mDataString2,"both",strlen("both")) == 0)
- // {
- // if(LTEEnableSerialDebug(true,true) == RET_OK)
- // {
- // TerminalPrintString("LTE module and PIC comm debug enabled in Syslog window\n");
- // }
- // else
- // {
- // TerminalPrintString("Cannot put LTE comm in debug mode (passthrought enabled?)\n");
- // }
- // }
- // else if (strncmp(mDataString2,"off",strlen("off")) == 0)
- // {
- // LTEEnableSerialDebug(false,false);
- // TerminalPrintString("LTE debug disabled\n");
- // }
- // else
- // {
- // TerminalPrintString("\nInvalid [value] parameter (use on or off)\n");
- // }
-
- }
- }
- else if(strncmp(mCmdString,"debug",strlen(mCmdString)) == 0)
- {
- // if(strlen(mDataString1) == 0)
- // {
- // TerminalPrintString("\n[subsystem] parameter is invalid. Type 'help' for more info\n");
- // return;
- // }
- // if(strlen(mDataString2) == 0)
- // {
- // TerminalPrintString("\n[timeout] parameter is invalid. Type 'help' for more info\n");
- // return;
- // }
- //
- // unsigned int timeout = atoi(mDataString2);
- // if(timeout != 0 && timeout < 100 && timeout > 5000)
- // {
- // TerminalPrint("[timeout] value must be between 100 & 5000. Current value: %d",timeout);
- // return;
- // }
- //
- // if(strncmp(mDataString1,"valve",strlen("valve")) == 0)
- // {
- // // TerminalPrintValveStatus();
- // TerminalPrintString("Debug valve not implemented\n");
- // }
- // else if(strncmp(mDataString1,"flow",strlen("flow")) == 0)
- // {
- // if(timeout == 0)
- // {
- // TerminalPrintString("Flow debugging stopped\n");
- // StopDebugFlowMeter();
- // }
- // else
- // {
- // TerminalPrintString("OK\n");
- // StartDebugFlowMeter(timeout);
- // }
- // }
- // else if(strncmp(mDataString1,"hygro",strlen("hygro")) == 0)
- // {
- // TerminalPrintString("Debug hygro not implemented\n");
- // }
- }
-
- else
- TerminalPrintString("Unknown command\n\n");
- }
-
- void TerminalPrintString(char *str)
- {
- #ifdef USE_WINC1500
- SendTerminalData(str,strlen(str));
- #else
- #ifdef TERMINAL_USE_TCP_SERVER
- TCPPutString(mTerminalSocket, str);
- #endif
- #endif
- }
-
- void TerminalPrintChar(char byte)
- {
- #ifdef USE_WINC1500
- SentTerminalByte(byte);
- #else
- #ifdef TERMINAL_USE_TCP_SERVER
- TCPPut(mTerminalSocket,byte);
- #endif
- #endif
- }
-
- void TerminalStateMachine(void)
- {
-
- }
-
- //
- //void TerminalPrintValveStatus()
- //{
- // if(GetValveState() == VALVE_ON)
- // {
- // TerminalPrintString("The valve is ON\n");
- // }
- // else
- // {
- // TerminalPrintString("The valve is OFF\n");
- // }
- //}
- //
- //void TerminalPrintFlowStatus()
- //{
- // unsigned int Flow = GetCurrentFlow();
- // TerminalPrint("Flow: %d\n",Flow);;
- //}
- //
- //void TerminalPrintHygroStatus(int unit)
- //{
- // TerminalPrint("Hygro %d: ?\n",unit);
- //}
- //
-
- //EOf
|