From: p15692025051 <846603105@qq.com> Date: Wed, 18 Oct 2023 03:32:42 +0000 (+0800) Subject: 菊风添加 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=11b00e7551704fb275428b8c306ea4e76a44fa60;p=mirrors%2FASR1603_G5.git 菊风添加 --- diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modVideoCall.c b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modVideoCall.c new file mode 100644 index 00000000..71eef099 --- /dev/null +++ b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modVideoCall.c @@ -0,0 +1,38 @@ + +/** + ****************************************************************************** + + ****************************************************************************** + */ + +#include +#include +#include "mpconfigport.h" + +#include "compile.h" +#include "runtime.h" +#include "repl.h" +#include "mperrno.h" + +#include "pyexec.h" +#include "mphalport.h" +#include "autoconf.h" +#if 1 // + + +STATIC const mp_rom_map_elem_t VideoCall_module_globals_table[] = { + { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_VideoCall) }, + + + //TODO add other deriver +}; + +STATIC MP_DEFINE_CONST_DICT(VideoCall_module_globals, VideoCall_module_globals_table); + +const mp_obj_module_t mp_module_VideoCall = { + .base = { &mp_type_module }, + .globals = (mp_obj_dict_t *)&VideoCall_module_globals, +}; + +#endif /* MICROPY_QPY_MODULE_TP */ + diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modVideoCall_juphoon.c b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modVideoCall_juphoon.c new file mode 100644 index 00000000..10b8c642 --- /dev/null +++ b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modVideoCall_juphoon.c @@ -0,0 +1,622 @@ +/************************************************************************** + +**************************************************************************/ + +////////////////////////////////////////////////////////////////////////////// +// Includes +////////////////////////////////////////////////////////////////////////////// +#include "autoconf.h" +#include +#include "runtime.h" +#include +#include +#include "mphalport.h" +#include "compile.h" +#include "repl.h" +#include "mperrno.h" +#include "binary.h" + +#include + +#if CONFIG_juphoon + +#include "helios_gpio.h" + + + + +#include "helios_debug.h" + +#include "autoconf.h" + + +////////////////////////////////////////////////////////////////////////////// +typedef struct _HX3918_obj_t +{ + mp_obj_base_t base; + + uint8_t i2c_no; + uint8_t i2c_mode; + uint8_t irq; + uint8_t power; + +} HX3918_obj_t; + +STATIC HX3918_obj_t *g_HX3918 = NULL; +static unsigned char is_HX3918 = 0;//是否存在IC +static unsigned char is_open_HX3918 = 0; //是否打开测试 +static unsigned char s_HX3918_heart_rate = 0x0;//心律 +static unsigned char s_HX3918_high_blood = 0x0;//血压/高压 +static unsigned char s_HX3918_low_blood = 0x0;//血压/低压 +static unsigned char s_HX3918_blood_oxygen = 0x0;//血氧 +static unsigned char s_HX3918_HRV = 0x0;//hrv +static unsigned char s_HX3918_wear_status = 1;//佩戴状态 +#define HEART_RATE_BUFF_LEN 10 +unsigned char s_HX3918_heart_rate_buff[HEART_RATE_BUFF_LEN]={0}; +unsigned short s_HX3918_heart_rate_buff_count = 0; + +char HX3918_sleep_flag = 0; +#include "helios_extint.h" + +int sensor_timer = 0; +#define TIMER_TIME_MS 100 //10ms +#define IS_CYCLICAL 1 +uint8_t HX3918_irq_flag = 0; +uint32_t HX3918_run_mode = NULL_MODE; +uint32_t HX3918_jobs_mode = NULL_MODE; +#define RUN_MODE_CLOSE 0xffff +static uint32_t timer_Gsensor_count = 0; +#if CONFIG_SC7A20 +extern int SC7A20_init(void); +extern signed char SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_ALGO(void); +extern unsigned char Gsensor_init_flag ; +void HX3918_restart(void); +#endif +int ir_wear = 0;//红外佩戴状态 +int cap_wear = 1;//电容佩戴状态 +char is_open_sar = 0;//是否打开sar检测 +int wear_time = 0; +// int test_count1 = 0; +// int test_count2 = 0; +void HX3918_test(uint32_t mode); +void HX3918_close(void); +void sensor_timerout_cb(void); + +void HX3918_thread_do(void) +{ + if(HX3918_run_mode == close_MODE) + { + HX3918_close(); + //HX3918_LOG("HX3918_irq_cb: 1111111111111!!!!!!!!\r\n"); + HX3918_run_mode = NULL_MODE; + HX3918_jobs_mode = NULL_MODE; + hx3918_ppg_timerout_flag = 0; + hx3918_agc_timerout_flag = 0; + return; + } + if(HX3918_run_mode != NULL_MODE ) + { + if(HX3918_jobs_mode != NULL_MODE)//没关闭就打开其他模式,先关闭一次 + { + HX3918_close(); + Helios_msleep(20); + HX3918_jobs_mode = NULL_MODE; + } + // else + // HX3918_restart(); + HX3918_test(HX3918_run_mode); + HX3918_jobs_mode = HX3918_run_mode; + HX3918_run_mode = NULL_MODE; + } + if(hx3918_ppg_timerout_flag) + { + hx3918_ppg_Int_handle(); + hx3918_ppg_timerout_flag = 0; + } + if(hx3918_agc_timerout_flag) + { + agc_timeout_handler(NULL); + hx3918_agc_timerout_flag =0; + } + if(is_HX3918 == 1 && is_open_HX3918 == 1)//处理Hsensor定时数据 + { + + + if(timer_Gsensor_count>(500/TIMER_TIME_MS))//0.5秒定时,轮询更新Gsensor数据 + { + timer_Gsensor_count = 0; + //Helios_msleep(5); + #if CONFIG_SC7A20 + SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_ALGO(); + #endif + + } + } + else + { + // if(hx3918_ppg_timerout_flag)//测试模式 + // { + // hx3918_ppg_Int_handle(); + // hx3918_ppg_timerout_flag = 0; + // } + // wear_time++; + // if(wear_time > 3) + // { + // wear_time = 0; + + // //hx3918_prox_factory_hanging_cali(); + + // ir_wear = hx3918_get_wear_ppg_Int_handle(); + // #ifdef SAR_ALG_LIB + // cap_wear = hx3918_report_prox_status(); + // #endif + // HX3918_LOG("ir_wear:%d cap_wear%d\n",ir_wear,cap_wear); + // if(ir_wear == 1 && cap_wear==1) + // { + // s_HX3918_wear_status = 1; + // }else + // s_HX3918_wear_status = 0; + // } + + #if CONFIG_SC7A20 + if(ir_wear == 1 && cap_wear==1) + { + SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_ALGO(); + + } + + #endif + Helios_msleep(1000); + + if(HX3918_sleep_flag == 1) + { + HX3918_sleep_flag = 0; + Helios_msleep(3000); + } + } + Helios_msleep(5); + +} +void HX3918_result_set_heart_rate(unsigned char heart_rate) +{ +// s_HX3918_heart_rate_buff[HEART_RATE_BUFF_LEN]={0}; +// uint16 s_HX3918_heart_rate_buff_count = 0; + uint32_t i,tmp = 0; + s_HX3918_heart_rate_buff[s_HX3918_heart_rate_buff_count] = heart_rate; + s_HX3918_heart_rate_buff_count++; + for(i=0;i= HEART_RATE_BUFF_LEN) + s_HX3918_heart_rate_buff_count = 0; + s_HX3918_high_blood = (uint8_t)(heart_rate * 1.5); + + s_HX3918_low_blood = (uint8_t)(heart_rate * 0.95); +} +void HX3918_result_set_wear_status(unsigned char wear_status) +{ + if(wear_status != 1) + s_HX3918_wear_status = 0; + else + s_HX3918_wear_status = 1; + //HX3918_LOG("s_HX3918_wear_status:%d !!!!!!!!!!!!!!!!!\n\n\n",s_HX3918_wear_status); +} +void HX3918_result_set_blood_oxygen(unsigned char blood_oxygen) +{ + s_HX3918_blood_oxygen = blood_oxygen; +} + +void HX3918_result_set_hrv(unsigned char hrv) +{ + s_HX3918_HRV = hrv; +} +STATIC mp_obj_t mp_activate_HX3918(mp_obj_t self_in) +{ + HX3918_obj_t *self = MP_OBJ_TO_PTR(self_in); + + g_HX3918 = self; + return mp_const_none; +} + +STATIC mp_obj_t HX3918_make_new(const mp_obj_type_t *type, + size_t n_args, + size_t n_kw, + const mp_obj_t *all_args) +{ + enum{ + ARG_i2c_no, + ARG_i2c_mode, + ARG_irq, + ARG_power, + }; + + static const mp_arg_t allowed_args[] = { + { MP_QSTR_i2c_no, MP_ARG_INT, {.u_int = 0}}, + { MP_QSTR_i2c_mode, MP_ARG_INT, {.u_int = 1}}, + { MP_QSTR_irq, MP_ARG_INT, {.u_int = 27}}, + { MP_QSTR_power, MP_ARG_INT, {.u_int = 30}}, + }; + + mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; + mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); + HX3918_obj_t *self = m_new_obj(HX3918_obj_t); + self->base.type = type; + + self->i2c_no = args[ARG_i2c_no].u_int; + self->i2c_mode = args[ARG_i2c_mode].u_int; + self->irq = args[ARG_irq].u_int; + + self->power = args[ARG_power].u_int; + return MP_OBJ_FROM_PTR(self); +} + +STATIC mp_obj_t mp_HX3918_init(mp_obj_t self_in); +STATIC mp_obj_t mp_HX3918_deinit(mp_obj_t self_in); + + + +void sensor_timerout_cb(void) +{ + + if(timer_Gsensor_count < 65536) + timer_Gsensor_count++; +} +void HX3918_irq_cb(void) +{ + HX3918_irq_flag = 1; + //HX3918_LOG("HX3918_irq_cb: 1111111111111!!!!!!!!\r\n"); + Helios_ExtInt_Enable(g_HX3918->irq); +} +/* +**函数名:HX3918_Init +**功能:初始化HX3918 +*/ +mp_obj_t mp_HX3918_init(mp_obj_t self_in) +{ + HX3918_obj_t *self = MP_OBJ_TO_PTR(self_in); + g_HX3918 = self; + mp_activate_HX3918(self_in); + uint8_t index = 0; + uint8_t device_id = 0; + Helios_GPIOInitStruct gpio_struct = {0}; + gpio_struct.dir = HELIOS_GPIO_INPUT; + gpio_struct.pull = HELIOS_PULL_UP; + gpio_struct.value = HELIOS_LVL_LOW; + + // ret = Helios_GPIO_Init((Helios_GPIONum) self->irq, &gpio_struct); + // HX3918_LOG("cst816 irq=%d, irq ret: %d\n", self->irq, ret); + + gpio_struct.pull = HELIOS_PULL_NONE; + gpio_struct.dir = HELIOS_GPIO_OUTPUT; + Helios_GPIO_Init(self->power, &gpio_struct);//ldo + + gpio_struct.dir = HELIOS_GPIO_OUTPUT; + gpio_struct.pull = HELIOS_PULL_NONE; + gpio_struct.value = HELIOS_LVL_LOW; + //Helios_GPIO_Init(25, &gpio_struct);//体温 + Helios_GPIO_Init(31, &gpio_struct);//复位 + + gpio_struct.dir = HELIOS_GPIO_INPUT; + gpio_struct.pull = HELIOS_PULL_NONE; + gpio_struct.value = HELIOS_LVL_LOW; + // Helios_GPIO_Init(self->irq, &gpio_struct);//IRQ + + // Helios_ExtInt_Deinit(self->irq);//关闭中断 + // Helios_ExtIntStruct extint_struct1 = {0}; + // // Helios_TriggerMode gpio_trigger; //GPIO interrupt trigger mode (0-EDGE_TRIGGER 1-LEVEL_TRIGGER) + // // Helios_DebounceMode gpio_debounce; //GPIO interrupt trigger debounce enable/disable (0-disable 1-enable) + // // Helios_EdgeMode gpio_edge; //GPIO interrupt edge/level trigger configure (0-EDGE_RISING 1-EDGE_FALLING 2-EDGE_BOTH) + // // Helios_PullMode gpio_pull; //GPIO get input pull (0-PULL_NONE 1-PULL_UP 2-PULL_DOWN) + // // void *eint_cb; //GPIO interrupt cb + // // void *wakeup_eint_cb; //GPIO interrupt cb_ctx + // extint_struct1.gpio_trigger = HELIOS_EDGE_TRIGGER; + // extint_struct1.gpio_edge = HELIOS_EDGE_RISING; + // extint_struct1.gpio_debounce = HELIOS_DEBOUNCE_EN; + // extint_struct1.gpio_pull = HELIOS_PULL_NONE; + // extint_struct1.eint_cb = HX3918_irq_cb; + // extint_struct1.wakeup_eint_cb = NULL; + + + Helios_I2C_Init((Helios_I2CEnum)self->i2c_no, HELIOS_FAST_MODE); + Helios_GPIO_SetLevel(self->power, HELIOS_LVL_LOW); + Helios_msleep(10); + Helios_GPIO_SetLevel(self->power, HELIOS_LVL_HIGH); + Helios_GPIO_SetLevel(31, HELIOS_LVL_LOW); + Helios_msleep(20); + Helios_GPIO_SetLevel(31, HELIOS_LVL_HIGH); + + if(sensor_timer == 0) + { + sensor_timer = Helios_Timer_init( (void* )sensor_timerout_cb, NULL); + } + if(sensor_thread_id == 0) + { + HX3918_LOG("mp_HX3918_open_heart Helios_Thread_Create\r\n"); + sensor_thread_id = Helios_Thread_Create(&ThreadAttr); + } + + + bool ret = 0; + ret = hx3918_chip_check(); + if(!ret){ + //mp_raise_ValueError("i2c init fail "); + HX3918_LOG("mp_HX3918_init: i2c init fail\r\n"); + is_HX3918 = 0; + }else + { + HX3918_LOG("mp_HX3918_init: OK\r\n"); + is_HX3918 = 1; + // Helios_ExtInt_Init(self->irq, &extint_struct1);//初始化中断 + // Helios_ExtInt_Enable(self->irq);//打开中断 + #ifdef SAR_ALG_LIB + hx3918_prox_init(); + #endif + hx3918_init(WEAR_MODE);//打开佩戴检测 + #if CONFIG_SC7A20 + if(Gsensor_init_flag == 0)//初始化Gsensor + SC7A20_init(); + #endif + } + + return mp_obj_new_int(1); +} + +STATIC mp_obj_t mp_HX3918_deinit(mp_obj_t self_in) +{ + HX3918_obj_t *self = MP_OBJ_TO_PTR(self_in); + + HX3918_close(); + // Helios_GPIO_Deinit((Helios_GPIONum)self->irq); + // Helios_ExtInt_Deinit(self->irq); + // Helios_I2C_Deinit((Helios_I2CEnum) self->i2c_no); + Helios_GPIO_SetLevel(self->power, HELIOS_LVL_LOW); + + return mp_const_none; +} +void HX3918_test(uint32_t mode) +{ + s_HX3918_heart_rate = 0x0; + s_HX3918_heart_rate_buff_count = 0; + s_HX3918_high_blood = 0x0; + s_HX3918_low_blood = 0x0; + s_HX3918_HRV = 0; + //s_HX3918_wear_status = 0; + s_HX3918_blood_oxygen = 0x0; + if(mode <= close_MODE) + { + if(hx3918_init(mode) == true) + { + is_open_HX3918 = 1; + if(sensor_timer== 0) + { + sensor_timer = Helios_Timer_init( (void* )sensor_timerout_cb, NULL); + } + + Helios_Timer_Start(sensor_timer, TIMER_TIME_MS, IS_CYCLICAL); + } + }else if(mode == 255)//活体校准功能 + { + // Helios_GPIO_SetLevel(g_HX3918->power, HELIOS_LVL_LOW); + // Helios_msleep(150); + // Helios_GPIO_SetLevel(g_HX3918->power, HELIOS_LVL_HIGH); + // Helios_msleep(20); + // hx3918_init(WEAR_MODE);//打开佩戴检测 + #ifdef SAR_ALG_LIB + hx3918_prox_factory_hanging_cali(); + #endif + } + + + + +} +//打开心律测试 +STATIC mp_obj_t mp_HX3918_open_heart(mp_obj_t self_in) +{ + + HX3918_run_mode = HRS_MODE; + return mp_obj_new_int(1); +} +//打开血氧测试 +STATIC mp_obj_t mp_HX3918_open_blood_oxygen(mp_obj_t self_in) +{ + HX3918_run_mode = SPO2_MODE ; + return mp_obj_new_int(1); +} +//打开HRV测试 +STATIC mp_obj_t mp_HX3918_open_hrv(mp_obj_t self_in) +{ + + //HX3918_run_mode = HRV_MODE; + return mp_obj_new_int(1); +} +//打开测试模式 +STATIC mp_obj_t mp_HX3918_open_test(mp_obj_t self_in,mp_obj_t val1) +{ + HX3918_obj_t *self = MP_OBJ_TO_PTR(self_in); + HX3918_run_mode = mp_obj_get_int(val1); + return mp_obj_new_int(1); +} +//设置是否打开sar模式 +STATIC mp_obj_t mp_HX3918_set_sar(mp_obj_t self_in,mp_obj_t val1) +{ + HX3918_obj_t *self = MP_OBJ_TO_PTR(self_in); + is_open_sar = mp_obj_get_int(val1); + return mp_obj_new_int(1); +} +void HX3918_close(void) +{ + if(is_open_HX3918 == 1) + { + + //hx3918_hrs_disable + if(HX3918_jobs_mode == HRS_MODE) + { + hx3918_hrs_disable(); + }else if(HX3918_jobs_mode == SPO2_MODE) + { + hx3918_spo2_disable(); + }else if(HX3918_jobs_mode == HRV_MODE) + { + //hx3918_hrv_disable(); + } + if(sensor_timer != 0) + { + Helios_Timer_Stop(sensor_timer); + } + } + is_open_HX3918 = 0; + HX3918_restart(); + #ifdef SAR_ALG_LIB + hx3918_prox_init(); + #endif + hx3918_init(WEAR_MODE);//打开佩戴检测 + +} +void HX3918_restart(void) +{ + Helios_GPIO_SetLevel(g_HX3918->power, HELIOS_LVL_LOW); + Helios_msleep(50); + Helios_GPIO_SetLevel(g_HX3918->power, HELIOS_LVL_HIGH); + Helios_msleep(50); +} +//关闭hsensor +STATIC mp_obj_t mp_HX3918_close(mp_obj_t self_in) +{ + HX3918_obj_t *self = MP_OBJ_TO_PTR(self_in); + + HX3918_run_mode = close_MODE; + //Helios_GPIO_SetLevel(self->power, HELIOS_LVL_LOW); + return mp_obj_new_int(1); +} +//获取心律 +STATIC mp_obj_t mp_HX3918_get_heart(mp_obj_t self_in) +{ + return mp_obj_new_int(s_HX3918_heart_rate); +} +//获取血氧 +STATIC mp_obj_t mp_HX3918_get_blood_oxygen(mp_obj_t self_in) +{ + return mp_obj_new_int(s_HX3918_blood_oxygen); +} +//获取血压 +STATIC mp_obj_t mp_HX3918_get_blood_pressure(mp_obj_t self_in) +{ + mp_obj_t coordinate_list[2] = {mp_obj_new_int(s_HX3918_high_blood), mp_obj_new_int(s_HX3918_low_blood),}; + return mp_obj_new_list(2, coordinate_list); +} +//获取hrv +STATIC mp_obj_t mp_HX3918_get_hrv(mp_obj_t self_in) +{ + return mp_obj_new_int(s_HX3918_HRV); +} +// ir_wear = hx3918_get_wear_ppg_Int_handle(); +// cap_wear = hx3918_report_prox_status(); + +//获取佩戴状态 +STATIC mp_obj_t mp_HX3918_get_wear(mp_obj_t self_in) +{ + //mp_obj_t coordinate_list[1] = {mp_obj_new_int((int)s_HX3918_wear_status)}; + //return mp_obj_new_list(1, coordinate_list); + return mp_obj_new_int(s_HX3918_wear_status); +} +//获取所有数据 心律、血氧、高压、低压、HRV、佩戴状态 +STATIC mp_obj_t mp_HX3918_get_all_data(mp_obj_t self_in) +{ + mp_obj_t coordinate_list[6] = {mp_obj_new_int((int)s_HX3918_heart_rate),mp_obj_new_int((int)s_HX3918_blood_oxygen),\ + mp_obj_new_int((int)s_HX3918_high_blood),mp_obj_new_int((int)s_HX3918_low_blood),\ + mp_obj_new_int((int)s_HX3918_HRV),mp_obj_new_int((int)s_HX3918_wear_status)}; + return mp_obj_new_list(6, coordinate_list); +} + +extern factory_result_t factory_reslts; +//FT_LEAK_LIGHT_MODE 产测漏光测试模式; +//FT_GRAY_CARD_MODE 产测灰卡测试模式; +//LAB_TEST_MODE 实验室模式。 +// extern uint16_t prox_factory_offset0 ; +// extern uint16_t prox_factory_offset1 ; +// extern int16_t prox_factory_lp[2] ; +#ifdef SAR_ALG_LIB +extern int16_t nv_wear_offset[2] ; // 芯片产测校准的两个通道的OFFSET值, 值记录在fash里面 +extern int16_t nv_base_data[2]; // 芯片产测校准的两个通道的对空LP值, 值记录在flash里面 +//lp[0],bl[0],lp[1],bl[1],gdiff[0] +extern int16_t glp[2] ; +extern int16_t gbl[2]; +extern int16_t gdiff[2]; +#else + int16_t nv_wear_offset[2] ; // 芯片产测校准的两个通道的OFFSET值, 值记录在fash里面 + int16_t nv_base_data[2]; // 芯片产测校准的两个通道的对空LP值, 值记录在flash里面 +//lp[0],bl[0],lp[1],bl[1],gdiff[0] + int16_t glp[2] ; + int16_t gbl[2]; + int16_t gdiff[2]; +#endif + +STATIC mp_obj_t mp_HX3918_get_test_data(mp_obj_t self_in) +{ + mp_obj_t coordinate_list[15] = {mp_obj_new_int((int)factory_reslts.green_data_final),mp_obj_new_int((int)factory_reslts.red_data_final),mp_obj_new_int((int)factory_reslts.ir_data_final), + mp_obj_new_int((int)ir_wear),mp_obj_new_int((int)cap_wear),mp_obj_new_int((int)glp[0]),mp_obj_new_int((int)gbl[0]),mp_obj_new_int((int)glp[1]),mp_obj_new_int((int)gbl[1]), + mp_obj_new_int((int)(gdiff[0])),mp_obj_new_int((int)(gdiff[1])),mp_obj_new_int((int)nv_wear_offset[0]),mp_obj_new_int((int)nv_wear_offset[1]),mp_obj_new_int((int)nv_base_data[0]), + mp_obj_new_int((int)nv_base_data[1]), + }; + return mp_obj_new_list(15, coordinate_list); +} +//设置sleep +STATIC mp_obj_t mp_HX3918_set_sleep(mp_obj_t self_in) +{ + HX3918_sleep_flag = 1; + HX3918_LOG("mp_HX3918_set_sleep\r\n"); + return mp_obj_new_int(1); +} +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_init_HX3918_obj, mp_HX3918_init);//初始化 +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_deinit_HX3918_obj, mp_HX3918_deinit);// +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_activate_HX3918_obj, mp_activate_HX3918);// +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_HX3918_get_blood_oxygen_obj, mp_HX3918_get_blood_oxygen);// +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_HX3918_get_heart_obj, mp_HX3918_get_heart);// +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_HX3918_get_blood_pressure_obj, mp_HX3918_get_blood_pressure);// +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_HX3918_get_wear_obj, mp_HX3918_get_wear);// +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_HX3918_open_heart_obj, mp_HX3918_open_heart);// +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_HX3918_open_blood_oxygen_obj, mp_HX3918_open_blood_oxygen);// +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_HX3918_open_hrv_obj, mp_HX3918_open_hrv);// +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_HX3918_get_hrv_obj, mp_HX3918_get_hrv);// +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_HX3918_get_all_data_obj, mp_HX3918_get_all_data);// +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_HX3918_close_obj, mp_HX3918_close);// +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_HX3918_set_sleep_obj, mp_HX3918_set_sleep);// +STATIC MP_DEFINE_CONST_FUN_OBJ_2(mp_HX3918_open_test_obj, mp_HX3918_open_test); +STATIC MP_DEFINE_CONST_FUN_OBJ_2(mp_HX3918_set_sar_obj, mp_HX3918_set_sar); +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_HX3918_get_test_data_obj, mp_HX3918_get_test_data);// + +STATIC const mp_rom_map_elem_t HX3918_locals_dict_table[] = { + { MP_ROM_QSTR(MP_QSTR_init), MP_ROM_PTR(&mp_init_HX3918_obj) }, + { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&mp_deinit_HX3918_obj) }, + { MP_ROM_QSTR(MP_QSTR_activate), MP_ROM_PTR(&mp_activate_HX3918_obj) }, + { MP_ROM_QSTR(MP_QSTR_get_blood_oxygen), MP_ROM_PTR(&mp_HX3918_get_blood_oxygen_obj)}, + { MP_ROM_QSTR(MP_QSTR_get_heart), MP_ROM_PTR(&mp_HX3918_get_heart_obj)}, + { MP_ROM_QSTR(MP_QSTR_get_blood_pressure), MP_ROM_PTR(&mp_HX3918_get_blood_pressure_obj)}, + { MP_ROM_QSTR(MP_QSTR_get_wear), MP_ROM_PTR(&mp_HX3918_get_wear_obj)}, + { MP_ROM_QSTR(MP_QSTR_open_heart), MP_ROM_PTR(&mp_HX3918_open_heart_obj)}, + { MP_ROM_QSTR(MP_QSTR_open_blood_oxygen), MP_ROM_PTR(&mp_HX3918_open_blood_oxygen_obj)}, + { MP_ROM_QSTR(MP_QSTR_open_hrv), MP_ROM_PTR(&mp_HX3918_open_hrv_obj)}, + { MP_ROM_QSTR(MP_QSTR_get_hrv), MP_ROM_PTR(&mp_HX3918_get_hrv_obj)}, + { MP_ROM_QSTR(MP_QSTR_get_all_data), MP_ROM_PTR(&mp_HX3918_get_all_data_obj)}, + { MP_ROM_QSTR(MP_QSTR_close), MP_ROM_PTR(&mp_HX3918_close_obj)}, + { MP_ROM_QSTR(MP_QSTR_set_sleep), MP_ROM_PTR(&mp_HX3918_set_sleep_obj)}, + { MP_ROM_QSTR(MP_QSTR_open_test), MP_ROM_PTR(&mp_HX3918_open_test_obj)}, + { MP_ROM_QSTR(MP_QSTR_set_sar), MP_ROM_PTR(&mp_HX3918_set_sar_obj)}, + { MP_ROM_QSTR(MP_QSTR_get_test_data), MP_ROM_PTR(&mp_HX3918_get_test_data_obj)}, +}; + +STATIC MP_DEFINE_CONST_DICT(HX3918_locals_dict, HX3918_locals_dict_table); + +const mp_obj_type_t Hsensor_HX3918_type = { + { &mp_type_type }, + .name = MP_QSTR_HX3918, + .make_new = HX3918_make_new, + .locals_dict = (mp_obj_dict_t*)&HX3918_locals_dict, +}; + +#endif +