| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- #include "user_charge.h"
- #include "user_config.h"
- #include "user_adc.h"
- #include "my_math.h"
- tmosTaskID user_charge_task_id = INVALID_TASK_ID;
- static vUser_charge_upload_stat_func xUpload_stat = NULL;
- static uint16_t user_charge_task_process_event(uint8_t task_id, uint16_t events);
- /*******************************************************************************
- * @函数名称 charge_gpio_init
- * @函数说明 GPIO初始化
- * @输入参数 无
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- static void charge_gpio_init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure = {0};
- CHARGE_GPIO_RCC_ENABLE;
- GPIO_InitStructure.GPIO_Pin = CHARGE_LEFT_PIN;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(CHARGE_LEFT_GPIO, &GPIO_InitStructure);
- CHARGE_LEFT_OFF;
- GPIO_InitStructure.GPIO_Pin = CHARGE_RIGHT_PIN;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(CHARGE_RIGHT_GPIO, &GPIO_InitStructure);
- CHARGE_RIGHT_OFF;
- }
- /*******************************************************************************
- * @函数名称 prvUser_charge_upload_stat
- * @函数说明 上报充电状态
- * @输入参数 idx:左边或者右边
- stat:充电状态
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- static void prvUser_charge_upload_stat(uint8_t idx, bool stat)
- {
- if(xUpload_stat != NULL)
- {
- xUpload_stat(idx, stat);
- }
- }
- /*******************************************************************************
- * @函数名称 user_charge_task_process_event
- * @函数说明 task的event处理回调函数,需要在注册task时候,传进去
- * @输入参数 task_id:任务ID
- events:事件
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- static uint16_t user_charge_task_process_event(uint8_t task_id, uint16_t events)
- {
- //event 处理
- if(events & (1 << CHARGE_QUEUE_LEFT_OPEN))
- {
- CHARGE_LEFT_ON;
- prvUser_charge_upload_stat(LEFT_IDX, true);
- return (events ^ (1 << CHARGE_QUEUE_LEFT_OPEN)); //异或的方式清除该事件运行标志,并返回未运行的事件标志
- }
- if(events & (1 << CHARGE_QUEUE_LEFT_CLOSE))
- {
- CHARGE_LEFT_OFF;
- prvUser_charge_upload_stat(LEFT_IDX, false);
- return (events ^ (1 << CHARGE_QUEUE_LEFT_CLOSE)); //异或的方式清除该事件运行标志,并返回未运行的事件标志
- }
- if(events & (1 << CHARGE_QUEUE_RIGHT_OPEN))
- {
- CHARGE_RIGHT_ON;
- prvUser_charge_upload_stat(RIGHT_IDX, true);
- return (events ^ (1 << CHARGE_QUEUE_RIGHT_OPEN)); //异或的方式清除该事件运行标志,并返回未运行的事件标志
- }
- if(events & (1 << CHARGE_QUEUE_RIGHT_CLOSE))
- {
- CHARGE_RIGHT_OFF;
- prvUser_charge_upload_stat(RIGHT_IDX, false);
- return (events ^ (1 << CHARGE_QUEUE_RIGHT_CLOSE)); //异或的方式清除该事件运行标志,并返回未运行的事件标志
- }
-
- adc_task_process_event(task_id, events);
- return 0;
- }
- /*******************************************************************************
- * @函数名称 set_user_charge_Queue
- * @函数说明 开始Charge任务event
- * @输入参数 无
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- void set_user_charge_Queue(USER_CHARGE_QUEUE_TYPE type)
- {
- bStatus_t stat = tmos_start_task(user_charge_task_id, (1 << type), MS1_TO_SYSTEM_TIME(1));
- }
- /*******************************************************************************
- * @函数名称 user_charge_init
- * @函数说明 Charge初始化
- * @输入参数 无
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- void user_charge_init(void)
- {
- charge_gpio_init();
- user_charge_task_id = TMOS_ProcessEventRegister(user_charge_task_process_event);
- PRINT("user_charge_task_id=%d\n", user_charge_task_id);
- }
- /*******************************************************************************
- * @函数名称 vUser_charge_set_upload_stat_func
- * @函数说明 设置上报充电状态的回调函数
- * @输入参数 func:函数指针
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- void vUser_charge_set_upload_stat_func(vUser_charge_upload_stat_func func)
- {
- xUpload_stat = func;
- }
|