123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362 |
- /******************************* (C) LiteMesh **********************************
- * @module Console
- * @file portConsole.c
- * @version 1.0.0
- * @date XX.XX.XXXX
- * $brief Port functions console lib
- *******************************************************************************
- * @history Version Author Comment
- * XX.XX.XXXX 1.0.0 Telenkov D.A. First release.
- *******************************************************************************
- */
- #include "common_config.h"
- #include "stm32f4xx.h"
- #include "port_microrl.h"
- #include "microrl.h"
- #include "config.h"
- #include "sntp_api.h"
- #include "gpio.h"
- #include "bt_6701_settings.h"
- #include "commands_api.h"
- #ifdef PRINTF_STDLIB
- #include <stdio.h>
- #endif
- #ifdef PRINTF_CUSTOM
- #include "tinystdio.h"
- #endif
- #include <stdlib.h>
- #include <string.h>
- #include <stdbool.h>
- #define _AVR_DEMO_VER "1.0"
- // definition commands word
- #define _CMD_HELP "help"
- #define _CMD_CLEAR "clear"
- #define _CMD_CLR "clear_port"
- #define _CMD_LED "led"
- #define _CMD_ETH "ETH"
- #define _CMD_PSVOLT "PSVOLT"
- #define _CMD_LOADVOLT "LOADVOLT"
- #define _CMD_BATVOLT "BATVOLT"
- #define _CMD_BATVOLTK "BATVOLTK"
- #define _CMD_BATVOLTR "BATVOLTR"
- #define _CMD_BAT1VOLT "BAT1VOLT"
- #define _CMD_BAT2VOLT "BAT2VOLT"
- #define _CMD_BAT3VOLT "BAT3VOLT"
- #define _CMD_BAT4VOLT "BAT4VOLT"
- #define _CMD_BATCUR "BATCUR"
- #define _CMD_LOADCUR "LOADCUR"
- #define _CMD_LOADCURK "LOADCURK"
- #define _CMD_DIDOOR "DIDOOR"
- #define _CMD_DIRV "DIRV"
- #define _CMD_LOW150 "LOW150"
- #define _CMD_HILOW230 "HILOW230"
- #define _CMD_HIGH264 "HIGH264"
- #define _CMD_MPSOFF "MPSOFF"
- #define _CMD_CANTX "CANTX"
- #define _CMD_CANRX "CANRX"
- #define _CMD_DAC "DAC"
- #define _CMD_SD "SD"
- #define _CMD_ONEWIRE "OW"
- #define _CMD_SET "SET"
- #define _CMD_DEF "DEF"
- #define _CMD_RTC "RTC"
- #define _CMD_SERNO "SERNO"
- #define _CMD_STATUS "STATUS"
- #define _CMD_FREQ "FREQ"
- #define _CMD_50HZ "50HZ"
- #define _CMD_LOW "LOW"
- #define _CMD_HILOW "HILOW"
- #define _CMD_HI "HI"
- #define _CMD_T2READY "T2READY"
- #define _CMD_U232U485 "U232U485"
- #define _CMD_DRY "DRY"
- #define _CMD_U232F "U232F"
- #define _CMD_RST "reset"
- #define _CMD_SPIFLASH "SPIFLASH"
- #define _CMD_U232 "U232"
- // arguments for set/clear
- #define _SCMD_PB "port_b"
- #define _SCMD_PD "port_d"
- #define _NUM_OF_CMD
- #define _NUM_OF_SETCLEAR_SCMD 2
- //available commands
- char * keyworld [] = {
- _CMD_HELP,
- _CMD_CLEAR,
- _CMD_LED,
- _CMD_ETH,
- _CMD_PSVOLT,
- _CMD_LOADVOLT,
- _CMD_BATVOLT,
- _CMD_BATVOLTK,
- _CMD_BATVOLTR,
- _CMD_BAT1VOLT,
- _CMD_BAT2VOLT,
- _CMD_BAT3VOLT,
- _CMD_BAT4VOLT,
- _CMD_BATCUR,
- _CMD_LOADCUR,
- _CMD_LOADCURK,
- _CMD_DIDOOR,
- _CMD_DIRV,
- _CMD_LOW150,
- _CMD_HILOW230,
- _CMD_HIGH264,
- _CMD_MPSOFF,
- _CMD_CANTX,
- _CMD_CANRX,
- _CMD_DAC,
- _CMD_SD,
- _CMD_ONEWIRE,
- _CMD_SET,
- _CMD_DEF,
- _CMD_RTC,
- _CMD_SERNO,
-
- _CMD_STATUS,
- _CMD_FREQ,
- _CMD_50HZ,
- _CMD_LOW,
- _CMD_HILOW,
- _CMD_HI,
- _CMD_T2READY,
-
- _CMD_U232U485,
- _CMD_DRY,
- _CMD_U232F,
-
- _CMD_RST,
- _CMD_SPIFLASH,
- _CMD_U232
- };
- // 'set/clear' command argements
- char * set_clear_key [] = {_SCMD_PB, _SCMD_PD};
- // array for comletion
- char * compl_world [_NUM_OF_CMD + 1];
- microrl_t rl;
- microrl_t *prl = &rl;
- // параметр команды
- #define PARAM_LEN 20
- char param[PARAM_LEN];
- float value = 0.0;
-
- extern bool testLed;
- extern bool testEthernet;
- extern bool testDef;
- extern bool testSet;
- extern bool testRtc;
- extern bool testSerno;
- extern bool testT2Ready;
- /**
- * @brief
- * @retval
- */
- void MICRORL_Init(void)
- {
- microrl_init(prl, print);
- microrl_set_execute_callback (prl, execute);
-
- }
- /**
- * @brief Print callback for microrl library
- * @retval
- */
- void print (const char *str)
- {
- //printf(str);
- }
- /**
- * @brief
- * @retval
- */
- void MICRORL_GetChar(uint8_t ch)
- {
- microrl_insert_char(prl, ch);
- }
- //*****************************************************************************
- // execute callback for microrl library
- // do what you want here, but don't write to argv!!! read only!!
- int execute (int argc, const char * const * argv)
- {
- int i = 0;
- uint16_t len = 0;
-
- // just iterate through argv word and compare it with your commands
- while (i < argc)
- {
- memset(param, 0, PARAM_LEN);
-
- if (strcmp (argv[i], _CMD_HELP) == 0)
- {
- print ("microrl library v");
- print (MICRORL_LIB_VER);
- print ("\n\r");
- print_help (); // print help
- }
- else if (strcmp (argv[i], _CMD_CLEAR) == 0)
- {
- print ("\033[2J"); // ESC seq for clear entire screen
- print ("\033[H"); // ESC seq for move cursor at left-top corner
- }
- /* Тестовая команда */
- else if (strcmp (argv[i], _CMD_LED) == 0)
- {
- //testLed = true;
- // TODO Убрать затычку
- printf("STATUS T1OK\r");
- return 0;
- }
- /* Тест Ethernet */
- else if (strcmp (argv[i], _CMD_ETH) == 0)
- {
- COM_SetMAC();
- //testEthernet = true;
- TEST_SetTest(TEST_ETHERNET);
- print ("\n\r");
- return 0;
- }
- /* Тест кнопки SET */
- else if (strcmp (argv[i], _CMD_SET) == 0)
- {
- //testSet = true;
- TEST_SetTest(TEST_SET);
- print ("\n\r");
- return 0;
- }
- /* Тест кнопки DEF */
- else if (strcmp (argv[i], _CMD_DEF) == 0)
- {
- //testDef = true;
- TEST_SetTest(TEST_DEF);
- print ("\n\r");
- return 0;
- }
- /* Тест RTC */
- else if (strcmp (argv[i], _CMD_RTC) == 0)
- {
- if (++i < argc)
- {
- len = strlen(argv[i]);
- strncpy(param, argv[i], len);
- SNTP_SetServerAddr(param);
- TEST_SetTest(TEST_RTC);
- // testRtc = true;
- print ("\n\r");
- return 0;
- }
- print ("\n\r");
- }
- /* Установка SERNO */
- else if (strcmp (argv[i], _CMD_SERNO) == 0)
- {
- if (++i < argc)
- {
- len = strlen(argv[i]);
- strncpy(param, argv[i], len);
- SETTINGS_SetSerno(param);
- //testSerno = true;
- TEST_SetTest(TEST_SERNO);
- print ("\n\r");
- return 0;
- }
- print ("\n\r");
- }
-
- /* -------------------------------------------------------------------- */
- /* Тесты для SmartUPS */
-
- /* Тест сухих контактов */
- else if (strcmp (argv[i], _CMD_DRY) == 0)
- {
- //testSet = true;
- TEST_SetTest(TEST_DRY);
- print ("\n\r");
- return 0;
- }
-
- /* Тест дополнительных пинов RS232 */
- else if (strcmp (argv[i], _CMD_U232) == 0)
- {
- //testSet = true;
- TEST_SetTest(TEST_U232);
- print ("\n\r");
- return 0;
- }
- /* Тест spi flash */
- else if (strcmp (argv[i], _CMD_SPIFLASH) == 0)
- {
- //testSet = true;
- TEST_SetTest(TEST_SPIFLASH);
- print ("\n\r");
- return 0;
- }
- #ifdef DALLAS_SENSOR_ENABLE
- /* Тест линии OW */
- else if (strcmp (argv[i], _CMD_ONEWIRE) == 0)
- {
- TEST_SetTest(TEST_OW);
- print ("\n\r");
- return 0;
- }
- #endif
- /* -------------------------------------------------------------------- */
- /* Тесты этапа Т2 */
- /* Статус тестера */
- else if (strcmp (argv[i], _CMD_STATUS) == 0)
- {
- //printf("STATUS %s\r", sSettings.sFlags.testState);
- printf("STATUS %s\r", SETTINGS_GetTestState());
- return 0;
- }
- /* T2READY */
- else if (strcmp (argv[i], _CMD_T2READY) == 0)
- {
- testT2Ready = true;
- return 0;
- }
-
- /* Перезагрузить контроллер */
- else if (strcmp (argv[i], _CMD_RST) == 0)
- {
- NVIC_SystemReset();
- }
- else
- {
- print ("command: '");
- print ((char*)argv[i]);
- print ("' Not found.\n\r");
- }
- i++;
- }
- return 0;
- }
- void print_help (void)
- {
- print ("Use TAB key for completion\n\rCommand:\n\r");
- print ("\tclear - clear screen\n\r");
- print ("\tdac - send test value\n\r");
- }
- /******************************* (C) LiteMesh *********************************/
|