70 lines
1.5 KiB
C
70 lines
1.5 KiB
C
|
/*
|
||
|
* charge_ctrl_test_shell.c
|
||
|
*
|
||
|
* Created on: May 21, 2023
|
||
|
* Author: max
|
||
|
*/
|
||
|
|
||
|
|
||
|
#include "charge_ctrl_test_shell.h"
|
||
|
#include "charger_control.h"
|
||
|
|
||
|
UART_HandleTypeDef *suart;
|
||
|
|
||
|
void charge_shell_init(UART_HandleTypeDef *huart)
|
||
|
{
|
||
|
suart = huart;
|
||
|
}
|
||
|
|
||
|
void charge_shell_loop()
|
||
|
{
|
||
|
uint8_t command[3];
|
||
|
HAL_StatusTypeDef status = HAL_UART_Receive(suart, command, 3, 100);
|
||
|
if(status == HAL_OK)
|
||
|
{
|
||
|
switch(command[0])
|
||
|
{
|
||
|
case 'r':
|
||
|
if(command[1] == 'c') //enable remote control
|
||
|
{
|
||
|
charger_control_enable_remote();
|
||
|
}
|
||
|
else if(command[1] == 'o') //disable remote control
|
||
|
{
|
||
|
charger_control_disable_remote();
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case 'e':
|
||
|
if(command[1] == 'c')
|
||
|
{
|
||
|
charger_control_enable_charger_relay();
|
||
|
}
|
||
|
else if(command[1] == 'o')
|
||
|
{
|
||
|
charger_control_disable_charger_relay();
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case 'v':
|
||
|
;uint16_t voltage = (command[1]<<8) | command[2];
|
||
|
charger_control_set_voltage(voltage);
|
||
|
break;
|
||
|
|
||
|
case 'c':
|
||
|
;uint16_t current = (command[1]<<8 | command[2]);
|
||
|
charger_control_set_current(current);
|
||
|
break;
|
||
|
|
||
|
case 's':
|
||
|
;ChargerStatusHandleTypeDef charg = charger_control_get_state();
|
||
|
uint8_t txbuffer[9] = {charg.acfail, charg.dcfail, charg.cc_status,
|
||
|
charg.lim_status, charg.ot_status, (uint8_t)(charg.current>>8),
|
||
|
(uint8_t)charg.current&0xFF,(uint8_t)(charg.voltage>>8),
|
||
|
(uint8_t)charg.voltage&0xFF
|
||
|
};
|
||
|
HAL_UART_Transmit(suart, txbuffer, 9, 1000);
|
||
|
}
|
||
|
}
|
||
|
}
|