From 794eb048ba6768307a27b81b1f2691e808532bfd Mon Sep 17 00:00:00 2001 From: chain40 Date: Thu, 30 May 2024 22:44:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8F=B4=20DEF=5FELITE=5FDEV?= =?UTF-8?q?=20=E8=A3=9D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 新增 DEF_BTN_ENABLED 定義, 決定是否支援 BTN 2. 待 pi 支援此裝置才可以進行連線 --- app_config.h | 34 ++++++++++++++++-- bmd380_peripheral.vcxproj | 2 ++ elite.c | 8 +++-- elite_board.h | 3 +- elite_dev.c | 75 +++++++++++++++++++++++++++++++++++++++ elite_dev.h | 10 ++++++ 6 files changed, 127 insertions(+), 5 deletions(-) create mode 100644 elite_dev.c create mode 100644 elite_dev.h diff --git a/app_config.h b/app_config.h index d0cef16..99234fa 100644 --- a/app_config.h +++ b/app_config.h @@ -103,11 +103,41 @@ extern "C" #define BLE_ADVERTISING_ENABLED 1 // BLE device name +#define DEF_ELITE_DEV 0x00000000 #define DEF_ELITE_EDC_20 0x00020109 #define DEF_PULSE_E_LOAD_10 0x00070000 -#define DEF_ELITE_MODEL DEF_ELITE_EDC_20 +#define DEF_ELITE_MODEL DEF_ELITE_DEV -#if (DEF_ELITE_MODEL == DEF_ELITE_EDC_20) +#if (DEF_ELITE_MODEL == DEF_ELITE_DEV) +#define ELITE_DEVICE_NAME "Elite-Dev" +#define MAJOR_PRODUCT_NUMBER 0 +#define MINOR_PRODUCT_NUMBER 0 +#define MAJOR_VERSION_NUMBER 0 +#define MINOR_VERSION_NUMBER 0 + +#define DEF_LED_COUNT 0 +#define DEF_LED_DRV_ENABLED 0 +#define DEF_APA102_2020_ENABLED 0 + +#define DEF_ADC_DRV_ENABLED 0 +#define DEF_ADS8691_ENABLED 0 +#define DEF_BULTIN_ADC_ENABED 0 + +#define DEF_DAC_DRV_ENABLED 0 +#define DEF_MAX5136_ENABLED 0 + +#define DEF_SW_DRV_ENABLED 0 +#define DEF_ADGS1412_ENABLED 0 + +#define DEF_FS_ENABLED 0 +#define DEF_FS_RTT_DIR 0 +#define DEF_GD25D10C_ENABLED 0 + +#define DEF_BTN_ENABLED 0 + +#define DEF_RTT_JSCOP_ENABLED 0 + +#elif (DEF_ELITE_MODEL == DEF_ELITE_EDC_20) #define ELITE_DEVICE_NAME "Elite-EDC" #define MAJOR_PRODUCT_NUMBER 0 #define MINOR_PRODUCT_NUMBER 2 diff --git a/bmd380_peripheral.vcxproj b/bmd380_peripheral.vcxproj index 4338378..d269a75 100644 --- a/bmd380_peripheral.vcxproj +++ b/bmd380_peripheral.vcxproj @@ -187,6 +187,7 @@ + @@ -371,6 +372,7 @@ + diff --git a/elite.c b/elite.c index 9ef26b9..b4b3ddf 100644 --- a/elite.c +++ b/elite.c @@ -1,6 +1,8 @@ #include "elite.h" -#if (DEF_ELITE_MODEL == DEF_ELITE_EDC_20) +#if (DEF_ELITE_MODEL == DEF_ELITE_DEV) +#include "elite_dev.h" +#elif (DEF_ELITE_MODEL == DEF_ELITE_EDC_20) #include "edc.h" #elif (DEF_ELITE_MODEL == DEF_PULSE_E_LOAD_10) #include "pel.h" @@ -96,7 +98,9 @@ static void elite_instr_task(void *p_arg) void elite_init(void) { -#if (DEF_ELITE_MODEL == DEF_ELITE_EDC_20) +#if (DEF_ELITE_MODEL == DEF_ELITE_DEV) + p_instance = dev_init(); +#elif (DEF_ELITE_MODEL == DEF_ELITE_EDC_20) edc.init(); p_instance = edc.p_elite_instance; #elif (DEF_ELITE_MODEL == DEF_PULSE_E_LOAD_10) diff --git a/elite_board.h b/elite_board.h index f818b97..6ef3dd9 100644 --- a/elite_board.h +++ b/elite_board.h @@ -3,7 +3,8 @@ #define __BOARD_H__ #include "app_config.h" -#if (DEF_ELITE_MODEL == DEF_ELITE_EDC_20) +#if (DEF_ELITE_MODEL == DEF_ELITE_DEV) +#elif (DEF_ELITE_MODEL == DEF_ELITE_EDC_20) #include "edc20_io.h" #elif (DEF_ELITE_MODEL == DEF_PULSE_E_LOAD_10) #include "pel10_io.h" diff --git a/elite_dev.c b/elite_dev.c new file mode 100644 index 0000000..03b44cb --- /dev/null +++ b/elite_dev.c @@ -0,0 +1,75 @@ +#include "elite_dev.h" + +#include "nrf_log.h" + +#if (DEF_ELITE_MODEL == DEF_ELITE_DEV) + +#define VERSION_DATE_YEAR 24 +#define VERSION_DATE_MONTH 5 +#define VERSION_DATE_DAY 30 +#define VERSION_DATE_HOUR 22 +#define VERSION_DATE_MINUTE 20 +static void cis_version(uint8_t *ins, uint16_t size) +{ + NRF_LOG_INFO("%s", __FUNCTION__); + uint8_t cis_ver[] = { + CIS_VERSION, + VERSION_DATE_YEAR, + VERSION_DATE_MONTH, + VERSION_DATE_DAY, + VERSION_DATE_HOUR, + VERSION_DATE_MINUTE, + }; + extern ret_code_t le_data_upadate(uint8_t * p_value, uint16_t len); + le_data_upadate((void *)cis_ver, sizeof(cis_ver)); +} + +static void vis_rst(uint8_t *ins, uint16_t size) +{ + NRF_LOG_INFO("%s", __FUNCTION__); +} + +#define MAGIC_NUM 0xFF00 +static void dev_mode(uint8_t *ins, uint16_t size) +{ + NRF_LOG_INFO("%s", __FUNCTION__); + struct __PACKED + { + uint8_t id : 4; + uint8_t : 4; + uint16_t magic : 16; + uint8_t opcode; + uint8_t param[]; + } *p_ins = (void *)ins; + + if (p_ins->magic != MAGIC_NUM) + { + return; + } + + // TODO... + switch (p_ins->opcode) + { + default: + break; + } +} + +const elite_instance_t pel_elite_instance = { + .cis_func = { + [CIS_VERSION] = cis_version, + }, + .vis_func = { + [VIS_RST] = vis_rst, + }, + .ris_func = { + [DEV_MODE] = dev_mode, + } +}; + +const elite_instance_t *dev_init(void) +{ + return &pel_elite_instance; +} + +#endif /* !DEF_ELITE_MODEL */ diff --git a/elite_dev.h b/elite_dev.h new file mode 100644 index 0000000..d3967b1 --- /dev/null +++ b/elite_dev.h @@ -0,0 +1,10 @@ +#pragma once +#ifndef __ELITE_DEV_H__ +#define __ELITE_DEV_H__ + +#include "app_config.h" +#include "elite.h" + +const elite_instance_t *dev_init(void); + +#endif // !__ELITE_DEV_H__