/** ****************************************************************************** * File Name : screen.c * Description : This file provides code for the string * of debug console. ****************************************************************************** * @attention * *

© Copyright (c) 2019 STMicroelectronics. * All rights reserved.

* * This software component is licensed by ST under Ultimate Liberty license * SLA0044, the "License"; You may not use this file except in compliance with * the License. You may obtain a copy of the License at: * www.st.com/SLA0044 * ****************************************************************************** */ #ifdef CONSOLE_DEBUG /* Includes ------------------------------------------------------------------*/ #include #include "delay.h" #define SCREEN_LINE_DELAY 2 // line delay 2ms const char OPMODE_STR[][84] = { // 1 2 3 4 5 6 7 8 // 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 "\r\n+--[Battery : ]---+---+---+---+---+---+---+---+---+---+--------------------+", // 2 "\r\n| | B |OCA|TCA|TDA|AFE|RSV|ZVC|F-C|F-D| Warning ( )HEX|", // 3 "\r\n| HeartB ( ) | S |INI|MD |FC |FD |RXM|ZVC|F-C|F-D| Protection( )HEX|", // 4 "\r\n+---------------------+---+---+---+---+---+---+---+---+---+-[CELL AVG ]--------+", // 5 "\r\n| B-Volt ( . )V | W |RSV|RSV|RSV|L-C|LTD|LTC|HTD|HTC| C-MAX ( . )V |", // 6 "\r\n| Current ( . )A | N |RSV|RSV|OCD|OCC|CUV|SUV|COV|SOV| C-AVG ( . )V |", // 7 "\r\n| SOC ( . )% +---+---+---+---+---+---+---+---+---+ C-MIN ( . )V |", // 8 "\r\n| | P |AFE|RSV|SC |RSV|LTD|LTC|HTD|HTC| C-DIFF ( . )V |", // 9 "\r\n+---------------------+ T |RSV|RSV|OCD|OCC|CUV|SUV|COV|SOV| CB AVG ( . )V |", // 0 "\r\n| F-Capa ( . )AH +---+---+---+---+---+---+---+---+---+ [ ] |", // 1 "\r\n+---------------------+ +-[TEMP AVG ]--------+", // 2 "\r\n| Operate( )| | T-MAX ( . )C |", // 3 "\r\n| Status ( )| | T-AVG ( . )C |", // 4 "\r\n| | | T-MIN ( . )C |", // 5 "\r\n+--[Cell Volt]--------+ M( )| T-DIFF ( . )C |", // 6 "\r\n|( . )( . )( . )+---------+---------+---------+-----+---+----------------+", // 7 "\r\n|( . )( . )( . )|T1( . )|T3( . )|T5( . )|F1( . )+---+", // 8 "\r\n|( . )( . )( . )| | | | |DATE: / / |", // 9 "\r\n|( . )( . )( . )|T2( . )|T4( . )|T6( . )|F2( . )+TIME: : : |", // 0 "\r\n|( . )( . )( . )| | | | |T-CPU ( . )V |", // 1 "\r\n+---------------------+---------+---------+---------+---------+----------------+", // 2 "\r\n s : SETTING d : DIAGNOSTIC " // 3 }; void OmodeScreen(void) { for (int i = 0; i < 22; i++) { printf("%s", OPMODE_STR[i]); delay_os_ms(SCREEN_LINE_DELAY); } } const char SETMODE_STR[22][84] = { // 1 2 3 4 5 6 7 8 // 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 " mBMS [SETTING] MODE", "\r\n+--[PARMAMETER]---------+------------------------------------------------------+", "\r\n| '1': Safety Config | |", "\r\n| '2': Charge Control | |", "\r\n| '3': SBS Config | |", "\r\n| '4': Calibration | |", "\r\n| | |", "\r\n| | |", "\r\n| | |", "\r\n+-----------------------+ |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| 't' TIME SET (20151028180003)|", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n+------------------------------------------------------------------------------+", "\r\n 'o' : OPERATING 'd' : DIAGNOSTIC " }; void SmodeScreen(void) { for (int i = 0; i < 22; i++) { printf("%s", SETMODE_STR[i]); delay_os_ms(SCREEN_LINE_DELAY); } } const char DIAGMODE_STR[22][84] = { // 1 2 3 4 5 6 7 8 // 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 " mBMS [DIAGNOSTIC] MODE", "\r\n+------------------------------------------------------------------------------+", "\r\n| |", "\r\n| |", "\r\n|----------------------------< PL455 COMM MONITOR >----------------------------|", "\r\n| '0' : P455 MSG MONITOR ( ) '1' : P455 MSG MONITOR ( ) |", "\r\n|----------------------------< CAN COMM MONITOR >----------------------------|", "\r\n| '2' : CAN MSG MONITOR ( ) '3' : CAN DATA MONITOR ( ) |", "\r\n|----------------------------< RS485 COMM MONITOR >----------------------------|", "\r\n| '4' : R485 MSG MONITOR ( ) '5' : R485 DATA MONITOR ( ) |", "\r\n|------------------------------------------------------------------------------|", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n|---------------------------------------------------+--[SYSTEM CONTROL]--------+", "\r\n| | 'q': S/W Reset |", "\r\n| | |", "\r\n| | |", "\r\n| | |", "\r\n| | |", "\r\n+---------------------------------------------------+--------------------------+", "\r\n o : OPERATING s: SETTING " }; void DmodeScreen(void) { u16 i; for (i = 0; i < 22; i++) { printf("%s", DIAGMODE_STR[i]); delay_os_ms(SCREEN_LINE_DELAY); } } const char CC_MODE_STR[][86] = { // 1 2 3 4 5 6 7 8 // 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 " mBMS [SOC SETTING] MODE", "\r\n+--[SYSTEM]--------------------------------------------------------------------+", "\r\n| |", "\r\n+--------------------------------------+--[CURRENT]----------------------------+", "\r\n| | CHARGE DISCHARGE |", "\r\n| | 10ms : ( . )A ( . )A |", "\r\n| | 1 S : ( . )A ( . )A |", "\r\n| | 1 M : ( . )A ( . )A( )|", "\r\n| | 1 H : ( . )A ( . )A |", "\r\n| | Capacity ( )AH |", "\r\n| | CHG Capacity ( )AH |", "\r\n| | DCH Capacity ( )AH |", "\r\n| | |", "\r\n| | |", "\r\n| | |", "\r\n| | |", "\r\n| |---------------------------------------|", "\r\n| | C-OFFSET ( . )V ( . )V |", "\r\n| | D-OFFSET ( . )V ( . )V |", "\r\n| | |", "\r\n+--------------------------------------+---------------------------------------+", "\r\n 'o' : OPERATING 's' : SETTING 'd' : DIAGNOSTIC " }; void CcModeScreen(void) { for (int i = 0; i < 22; i++) { printf("%s", CC_MODE_STR[i]); delay_os_ms(SCREEN_LINE_DELAY); } } const char TASK_STS_MODE_STR[22][84] = { // 1 2 3 4 5 6 7 8 // 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 " mBMS [OS TASK STATUS] MODE", "\r\n+------------------------------------------------------------------------------+", "\r\n| uC/OS-III, The Real-Time Kernel |", "\r\n| Modify by JKWoo In Amogreentech |", "\r\n|------------------------------------------------------------------------------|", "\r\n| Task TStack FStack UStack CPU Us Peak ExecTime (mS) |", "\r\n|-------------- ------ ------ ------ ------ ------ ------------- |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n|------------------------------------------------------------------------------|", "\r\n| #Tasks : #CPU Usage: % #Task switch/sec: |", "\r\n+------------------------------------------------------------------------------+", "\r\n o : OPERATING s: SETTING " }; void OSmodeScreen(void) { for (int i = 0; i < 22; i++) { printf("%s", TASK_STS_MODE_STR[i]); delay_os_ms(SCREEN_LINE_DELAY); } } const char SF1_SET_STR[22][84] = { // 1 2 3 4 5 6 7 8 // 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 " mBMS [SAFETY] MODE", "\r\n+--[1ST LEVEL SAFETY ]---------------------------------------------------------+", "\r\n+-[VOLTAGE : '1' ]---------+-[TEMP : '3']------------+-[S VOLTAGE : '4']------+", "\r\n| '1': COV Protect( )mV | '1': OT Chg Pro( . )C | '1': SOV Protect( )V |", "\r\n| '2': COV Warning( )mV | '2': OT Chg War( . )C | '2': SOV Warning( )V |", "\r\n| '3': COV Recover( )mV | '3': OT Chg Rec( . )C | '3': SOV Recover( )V |", "\r\n|--------------------------|-------------------------|-------------------------|", "\r\n| '4': CUV Protect( )mV | '4': OT Dsg Pro( . )C | '4': SUV Protect( )V |", "\r\n| '5': CUV Warning( )mV | '5': OT Dsg War( . )C | '5': SUV Warning( )V |", "\r\n| '6': CUV Recover( )mV | '6': OT Dsg Rec( . )C | '6': SUV Recover( )V |", "\r\n+-[CURRENT : '2']----------+-------------------------+-[SOC : '5']------+", "\r\n| '1': OC Chg Pro( )A | '7': LT Chg Pro( . )C | '1': Low SOC Warn( )% |", "\r\n| '2': OC Chg War( )A | '8': LT Chg War( . )C | '2': Low SOC Reco( )% |", "\r\n| '3': OC Chg Rec( )A | '9': LT Chg Rec( . )C +-[CELL DIFF : '6']------+", "\r\n| '4': OC Chg Time ( )S |-------------------------| '1': CVD Protect( )mV|", "\r\n|--------------------------| 'a': LT Dsg Pro( . )C | '2': CVD Warning( )mV|", "\r\n| '5': OC Dsg Pro( )A | 'b': LT Dsg War( . )C | '3': CVD Recover( )mV|", "\r\n| '6': OC Dsg War( )A | 'c': LT Dsg Rec( . )C +-[Thermistor : '7']------+", "\r\n| '7': OC Dsg Rec( )A +-------------------------+ '1': Therm Open( . )C |", "\r\n| '8;: OC Dsg Time ( )S | | '2': Therm Reco( . )C |", "\r\n+--------------------------+-------------------------+-------------------------+", "\r\n 'o' : OPERATING 'd' : DIAGNOSTIC " }; void SF1modeScreen(void) { for (int i = 0; i < 22; i++) { printf("%s", SF1_SET_STR[i]); delay_os_ms(SCREEN_LINE_DELAY); } } const char CHG_SET_STR[22][84] = { // 1 2 3 4 5 6 7 8 // 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 " mBMS [CHARGE CONTROL] MODE", "\r\n+-[CHG CFG : '1']-----+-[Balance Cfg : '4']-----+------------------------+", "\r\n| '1': ST Chg V ( )mV | '1': C-Bal Thr ( )mV | |", "\r\n| '2': ST Chg C ( )A | '2': C-Bal Win ( )mV | |", "\r\n+-[Pre-CHG CFG : '2']-----+ '3': C-Bal Min ( )mV | |", "\r\n| '1': P-Chg Curr( )A | '4': C-Bal Int ( )S | |", "\r\n| '2': P-Chg Volt( )mV +-[Current Cfg : '5']-----+ |", "\r\n| '3': Recov Volt( )mV | '1': D-D Thr ( )mA | |", "\r\n| '4': P-Chg Time( )min| '2': C-D Thr ( )mA | |", "\r\n+-[Term Cfg : '3']-----| '3': Quit Cur ( )mA | |", "\r\n| '1': Tap Curr ( )mA | '4': Dsg R-T ( )S | |", "\r\n| '2': Tap Volt ( )mV | '5': Chg R-T ( )S | |", "\r\n| '3': C-Tap Win ( )S +--------------------------+ |", "\r\n| '4': FC Set ( )% | | |", "\r\n| '5': FC Clear ( )% | | |", "\r\n| '6': FD Set ( )% | | |", "\r\n| '7': FD Clear ( )% | | |", "\r\n+--------------------------+ | |", "\r\n| | | |", "\r\n| | | |", "\r\n+--------------------------+--------------------------+------------------------+", "\r\n 'o' : OPERATING 'd' : DIAGNOSTIC " }; void ChgCtrlCfgmodeScreen(void) { for (int i = 0; i < 22; i++) { printf("%s", CHG_SET_STR[i]); delay_os_ms(SCREEN_LINE_DELAY); } } const char SBS_SET_STR[22][84] = { // 1 2 3 4 5 6 7 8 // 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 " mBMS [SBS Configuration] MODE", "\r\n+-[Data : '1']-------------+---------------------------------------------------+", "\r\n| '1': Init B-Mode( )Hex| |", "\r\n| '2': D-Volt ( )mV | |", "\r\n| '3': Spec Info ( )Hex| |", "\r\n| '4': M-Date ( )Hex| |", "\r\n| '5': Ser.Noum. ( )Hex| |", "\r\n| '6': Cycle Cnt ( )Cnt| |", "\r\n| '7': CC Thr ( )mAh| |", "\r\n| '8': D-Capa ( )Ah | |", "\r\n| '9': D-Energy( )Wh | |", "\r\n| 'a': F-Chg-Cap( )Ah | |", "\r\n+--------------------------+ |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n| |", "\r\n+------------------------------------------------------------------------------+", "\r\n 'o' : OPERATING 'd' : DIAGNOSTIC " }; void SBSmodeScreen(void) { for (int i = 0; i < 22; i++) { printf("%s", SBS_SET_STR[i]); delay_os_ms(SCREEN_LINE_DELAY); } } const char CAL_SET_STR[22][84] = { // 1 2 3 4 5 6 7 8 // 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 " mBMS [Calibration] MODE", "\r\n+-[Voltage : '1']--------+-[Internal Power '6']-----+-[Real Value]-----------+", "\r\n| '1': Cell Sc 0 ( ) | '1': INT PWR ( )mA | DCH CURR ( )V |", "\r\n| '2': Cell Sc 1 ( ) | '2': RLY PWR ( )mA | CHG CURR ( )V |", "\r\n| '3': Pack Gain ( ) +--------------------------+ |", "\r\n| '4': BATT Gain ( ) | | DIFF CURR ( )V |", "\r\n+-[Discharge Current '2']--+ +------------------------+", "\r\n| '1': DC Gain ( ) | | 'K': Init Zero Current |", "\r\n| '2': DC Offset( ) | | '8': DCH Current Set |", "\r\n+-[Charge Current '3']--+ | (ex: 8 100.0 + enter)|", "\r\n| '1': CC1 Gain ( ) | | '9': CHG Current Set |", "\r\n| '2': CC1 Offse( ) | | (ex: 9 50.0 + enter) |", "\r\n|--------------------------| | |", "\r\n| '3': CC2 Gain ( ) | | |", "\r\n| '4': CC2 Offse( ) | | |", "\r\n+--------------------------+ | |", "\r\n| | | |", "\r\n| | | |", "\r\n| | | |", "\r\n| | | |", "\r\n+--------------------------+--------------------------+------------------------+", "\r\n 'o' : OPERATING 'd' : DIAGNOSTIC " }; void CalmodeScreen(void) { for (int i = 0; i < 22; i++) { printf("%s", CAL_SET_STR[i]); delay_os_ms(SCREEN_LINE_DELAY); } } #endif //CONSOLE_DEBUG