Compare commits

...

2 Commits

Author SHA1 Message Date
Roy 408d9f35df Docs: update gitignore 2023-06-06 17:29:37 +08:00
Roy dd0e591b8d Feat: MCP23008 tool 2023-06-06 16:19:48 +08:00
2 changed files with 88 additions and 2 deletions
+3
View File
@@ -1 +1,4 @@
simplelink/ble_sdk_2_02_02_25/examples/
simplelink/ble_sdk_2_02_02_25/src/common/cc26xx/ccs/
simplelink/ble_sdk_2_02_02_25/src/components/npi/src/
.vscode
@@ -40,6 +40,9 @@ enum dev_tool_para_e {
DEV_TOOL_SPI = 0x20,
DEV_TOOL_I2C = 0x28,
DEV_TOOL_GPIO_EDC20_ADC_CH = 0x31,
DEV_TOOL_MCP23008_PB = 0x32,
DEV_TOOL_MCP23008_PA = 0x33,
DEV_TOOL_MCP23008_RD = 0x34,
DEV_TOOL_OUT0_WRITE_THROUGH = 0x50,
DEV_TOOL_SWITCH_SELECT = 0x60,
};
@@ -259,7 +262,80 @@ static void dev_tool_switch_select(uint8_t *ins_buf)
switch_ctrl(switch_module_number, enable_type);
}
static void dev_tool_mcp23008_pb(uint8_t *ins_buf) //3000FF32
{
uint8_t *p = ins_buf;
enum mcp23008_gpio_e pin_n = (enum mcp23008_gpio_e)p[4]; // 0x00~0x07: PBx
uint8_t register_n = p[5]; // 0x00:IODIR 0x09:GPIO
uint8_t _v = p[6]; // 0:low 1:hogh 0:output 1:input
uint8_t re_val = 0;
if (register_n == 9) { // gpio:high/low
chip_MCP23008_set(MCP23008_MODULE_U503, MCP23008_REG_GPIO, pin_n, _v);
re_val = chip_MCP23008_rd_reg_stat(MCP23008_MODULE_U503, MCP23008_REG_GPIO);
} else if (register_n == 0) { // iodir:input-1/output-0
chip_MCP23008_set(MCP23008_MODULE_U503, MCP23008_REG_IODIR, pin_n, _v);
re_val = chip_MCP23008_rd_reg_stat(MCP23008_MODULE_U503, MCP23008_REG_IODIR);
}
initCISBuf();
cis_buf[0] = 2; //data len
cis_buf[1] = DEV_TOOL_MCP23008_PB;
memcpy(&cis_buf[2], &re_val, 1);
SimpleProfile_SetParameter(BLE_CIS_BUFF_CHAR, BLE_CIS_BUFF_SIZE, cis_buf);
}
static void dev_tool_mcp23008_pa(uint8_t *ins_buf) //3000FF33
{
uint8_t *p = ins_buf;
enum mcp23008_gpio_e pin_n = (enum mcp23008_gpio_e)p[4]; // 0x00~0x07: PAx
uint8_t register_n = p[5]; // 0x00:IODIR 0x09:GPIO
uint8_t _v = p[6]; // 0:low 1:hogh 0:output 1:input
uint8_t re_val = 0;
if (register_n == 9) { // gpio:high/low
chip_MCP23008_set(MCP23008_MODULE_U505, MCP23008_REG_GPIO, pin_n, _v);
re_val = chip_MCP23008_rd_reg_stat(MCP23008_MODULE_U505, MCP23008_REG_GPIO);
} else if (register_n == 0) { // iodir:input-1/output-0
chip_MCP23008_set(MCP23008_MODULE_U505, MCP23008_REG_IODIR, pin_n, _v);
re_val = chip_MCP23008_rd_reg_stat(MCP23008_MODULE_U505, MCP23008_REG_IODIR);
}
initCISBuf();
cis_buf[0] = 2; //data len
cis_buf[1] = DEV_TOOL_MCP23008_PA;
memcpy(&cis_buf[2], &re_val, 1);
SimpleProfile_SetParameter(BLE_CIS_BUFF_CHAR, BLE_CIS_BUFF_SIZE, cis_buf);
}
static void dev_tool_mcp23008_rd(uint8_t *ins_buf) //3000FF34
{
uint8_t *p = ins_buf;
uint8_t register_n = p[4]; // 0x00:IODIR 0x09:GPIO
uint8_t re_val = 0;
initCISBuf();
cis_buf[0] = 5; //data len
cis_buf[1] = DEV_TOOL_MCP23008_RD;
if (register_n == 9) { // gpio:high/low
re_val = chip_MCP23008_rd_reg_stat(MCP23008_MODULE_U505, MCP23008_REG_GPIO);
memcpy(&cis_buf[2], &re_val, 1);
re_val = chip_MCP23008_rd_reg_stat(MCP23008_MODULE_U503, MCP23008_REG_GPIO);
memcpy(&cis_buf[3], &re_val, 1);
} else if (register_n == 0) { // iodir:input-1/output-0
re_val = chip_MCP23008_rd_reg_stat(MCP23008_MODULE_U505, MCP23008_REG_IODIR);
memcpy(&cis_buf[2], &re_val, 1);
re_val = chip_MCP23008_rd_reg_stat(MCP23008_MODULE_U503, MCP23008_REG_IODIR);
memcpy(&cis_buf[3], &re_val, 1);
}
SimpleProfile_SetParameter(BLE_CIS_BUFF_CHAR, BLE_CIS_BUFF_SIZE, cis_buf);
}
static void mode_dev_tool(uint8_t *ins_buf)
{
@@ -302,8 +378,15 @@ static void mode_dev_tool(uint8_t *ins_buf)
case DEV_TOOL_SWITCH_SELECT:
dev_tool_switch_select(p);
break;
case DEV_TOOL_MCP23008_PB:
dev_tool_mcp23008_pb(p);
break;
case DEV_TOOL_MCP23008_PA:
dev_tool_mcp23008_pa(p);
break;
case DEV_TOOL_MCP23008_RD:
dev_tool_mcp23008_rd(p);
break;
default:
break;