Compare commits

..

3 Commits

Author SHA1 Message Date
Roy a9fd1c79c8 test led 2021-05-17 12:05:04 +08:00
Roy 551b412329 [update] tip 2021-02-05 18:30:34 +08:00
Roy 7d79d4e6df [update] EIS fun put into DEV_MODE 2021-02-05 11:28:31 +08:00
2 changed files with 120 additions and 85 deletions
@@ -39,6 +39,7 @@
#define ADC_TEST 0x91
#define CALI_DAC_MODE 0x93
#define CALI_ADC_MODE 0x92
#define DEV_MODE 0xFF
// CIS (control instruction)
#define CIS_VERSION 0x40
@@ -1080,6 +1080,125 @@ static void update_ZM_instruction(uint8 *ins) {
break;
}
case DEV_MODE: { // INS_TYPE_RIS:0x30, DEV_MODE:0xFF
switch (ins[3]) {
case CTL_WRT: { // ble write: 0x3000FF 20FFFFFFFFFFFF
uint32_t address = ((uint16_t)(ins[4]) << 8) | (uint16_t)(ins[5]);
uint32_t data = ((uint16_t)(ins[6]) << 24) | (uint16_t)(ins[7]) << 16 |
(uint16_t)(ins[8]) << 8 | (uint16_t)(ins[9]);
select_REG(address);
w32_REG(data);
initCISBuf();
cis_buf[0] = (uint8_t)((address & 0x0000FF00) >> 8);
cis_buf[1] = (uint8_t)(address & 0x000000FF);
cis_buf[2] = (uint8_t)((data & 0xFF000000) >> 24);
cis_buf[3] = (uint8_t)((data & 0x00FF0000) >> 16);
cis_buf[4] = (uint8_t)((data & 0x0000FF00) >> 8);
cis_buf[5] = (uint8_t)(data & 0x000000FF);
SimpleProfile_SetParameter(BLE_CIS_BUFF_CHAR, BLE_CIS_BUFF_SIZE, cis_buf);
break;
}
case CTL_RD: { // ble write: 0x3000FF 21FFFFFFFF
uint32_t address = ((uint16_t)(ins[4]) << 8) | (uint16_t)(ins[5]);
select_REG(address);
r32_REG();
initCISBuf();
cis_buf[0] = (uint8_t)((address & 0x0000FF00) >> 8);
cis_buf[1] = (uint8_t)(address & 0x000000FF);
cis_buf[2] = spi_rxbuf[2];
cis_buf[3] = spi_rxbuf[3];
cis_buf[4] = spi_rxbuf[4];
cis_buf[5] = spi_rxbuf[5];
SimpleProfile_SetParameter(BLE_CIS_BUFF_CHAR, BLE_CIS_BUFF_SIZE, cis_buf);
break;
}
case CTL_RD_DFTR: { // ble write: 0x3000FF 78FFFFFFFF
select_REG(0x2078);
r32_REG();
initCISBuf();
cis_buf[0] = (uint8_t)(0x20);
cis_buf[1] = (uint8_t)(0x78);
cis_buf[2] = spi_rxbuf[2];
cis_buf[3] = spi_rxbuf[3];
cis_buf[4] = spi_rxbuf[4];
cis_buf[5] = spi_rxbuf[5];
SimpleProfile_SetParameter(BLE_CIS_BUFF_CHAR, BLE_CIS_BUFF_SIZE, cis_buf);
break;
}
case CTL_RD_DFTI: { // ble write: 0x3000FF 7CFFFFFFFF
select_REG(0x207C);
r32_REG();
initCISBuf();
cis_buf[0] = (uint8_t)(0x20);
cis_buf[1] = (uint8_t)(0x7C);
cis_buf[2] = spi_rxbuf[2];
cis_buf[3] = spi_rxbuf[3];
cis_buf[4] = spi_rxbuf[4];
cis_buf[5] = spi_rxbuf[5];
SimpleProfile_SetParameter(BLE_CIS_BUFF_CHAR, BLE_CIS_BUFF_SIZE, cis_buf);
break;
}
case CTL_WRT_WGAMPL: { // ble write: 0x3000FF 3CFFFFFFFF
uint32_t data = ((uint16_t)(ins[4]) << 24) | (uint16_t)(ins[5]) << 16 | (uint16_t)(ins[6]) << 8 | (uint16_t)(ins[7]);
select_REG(0x2014);
w32_REG(0x0);
select_REG(0x203C);
w32_REG(data);
initCISBuf();
cis_buf[0] = (uint8_t)(0x20);
cis_buf[1] = (uint8_t)(0x3C);
cis_buf[2] = (uint8_t)((data & 0xFF000000) >> 24);
cis_buf[3] = (uint8_t)((data & 0x00FF0000) >> 16);
cis_buf[4] = (uint8_t)((data & 0x0000FF00) >> 8);
cis_buf[5] = (uint8_t)(data & 0x000000FF);
SimpleProfile_SetParameter(BLE_CIS_BUFF_CHAR, BLE_CIS_BUFF_SIZE, cis_buf);
select_REG(0x2014);
w32_REG(0x4);
break;
}
case 0x01: { // ble write: 0x3000FF 01
if (ins[4] == 1) {
Elite_led_color(COLOR_RED); //0101
} else if (ins[4] == 2){
Elite_led_color(COLOR_ORANGE); //0102
} else if (ins[4] == 3){
Elite_led_color(COLOR_YELLOW);
} else if (ins[4] == 4){
Elite_led_color(COLOR_GREEN);
} else if (ins[4] == 5){
Elite_led_color(COLOR_BLUE);
} else if (ins[4] == 6){
Elite_led_color(COLOR_MAGENTA);
}
initCISBuf();
cis_buf[0] = (uint8_t)(0x11);
cis_buf[1] = (uint8_t)(0xFF);
cis_buf[2] = ins[4];
SimpleProfile_SetParameter(BLE_CIS_BUFF_CHAR, BLE_CIS_BUFF_SIZE, cis_buf);
break;
}
}
break;
}
default: {
/** **/
break;
@@ -1198,91 +1317,6 @@ static void update_ZM_instruction(uint8 *ins) {
break;
}
case CTL_WRT: { // 0x7020FFFFFFFFFFFF
initCISBuf();
uint32_t address = ((uint16_t)(ins[2]) << 8) | (uint16_t)(ins[3]);
uint32_t data = ((uint16_t)(ins[4]) << 24) | (uint16_t)(ins[5]) << 16 | (uint16_t)(ins[6]) << 8 | (uint16_t)(ins[7]);
select_REG(address);
w32_REG(data);
cis_buf[0] = (uint8_t)((address & 0x0000FF00) >> 8);
cis_buf[1] = (uint8_t)(address & 0x000000FF);
cis_buf[2] = (uint8_t)((data & 0xFF000000) >> 24);
cis_buf[3] = (uint8_t)((data & 0x00FF0000) >> 16);
cis_buf[4] = (uint8_t)((data & 0x0000FF00) >> 8);
cis_buf[5] = (uint8_t)(data & 0x000000FF);
SimpleProfile_SetParameter(BLE_CIS_BUFF_CHAR, BLE_CIS_BUFF_SIZE, cis_buf);
break;
}
case CTL_RD: { // 0x7021FFFFFFFFFFFF
initCISBuf();
uint32_t address = ((uint16_t)(ins[2]) << 8) | (uint16_t)(ins[3]);
select_REG(address);
r32_REG();
cis_buf[0] = (uint8_t)((address & 0x0000FF00) >> 8);
cis_buf[1] = (uint8_t)(address & 0x000000FF);
cis_buf[2] = spi_rxbuf[2];
cis_buf[3] = spi_rxbuf[3];
cis_buf[4] = spi_rxbuf[4];
cis_buf[5] = spi_rxbuf[5];
SimpleProfile_SetParameter(BLE_CIS_BUFF_CHAR, BLE_CIS_BUFF_SIZE, cis_buf);
break;
}
case CTL_RD_DFTR: { // 0x7078FFFFFFFF
initCISBuf();
select_REG(0x2078);
r32_REG();
cis_buf[0] = (uint8_t)(0x20);
cis_buf[1] = (uint8_t)(0x78);
cis_buf[2] = spi_rxbuf[2];
cis_buf[3] = spi_rxbuf[3];
cis_buf[4] = spi_rxbuf[4];
cis_buf[5] = spi_rxbuf[5];
SimpleProfile_SetParameter(BLE_CIS_BUFF_CHAR, BLE_CIS_BUFF_SIZE, cis_buf);
break;
}
case CTL_RD_DFTI: { // 0x707CFFFFFFFF
initCISBuf();
select_REG(0x207C);
r32_REG();
cis_buf[0] = (uint8_t)(0x20);
cis_buf[1] = (uint8_t)(0x7C);
cis_buf[2] = spi_rxbuf[2];
cis_buf[3] = spi_rxbuf[3];
cis_buf[4] = spi_rxbuf[4];
cis_buf[5] = spi_rxbuf[5];
SimpleProfile_SetParameter(BLE_CIS_BUFF_CHAR, BLE_CIS_BUFF_SIZE, cis_buf);
break;
}
case CTL_WRT_WGAMPL: { // 0x703CFFFFFFFF
select_REG(0x2014);
w32_REG(0x0);
initCISBuf();
uint32_t data = ((uint16_t)(ins[2]) << 24) | (uint16_t)(ins[3]) << 16 | (uint16_t)(ins[4]) << 8 | (uint16_t)(ins[5]);
select_REG(0x203C);
w32_REG(data);
cis_buf[0] = (uint8_t)(0x20);
cis_buf[1] = (uint8_t)(0x3C);
cis_buf[2] = (uint8_t)((data & 0xFF000000) >> 24);
cis_buf[3] = (uint8_t)((data & 0x00FF0000) >> 16);
cis_buf[4] = (uint8_t)((data & 0x0000FF00) >> 8);
cis_buf[5] = (uint8_t)(data & 0x000000FF);
SimpleProfile_SetParameter(BLE_CIS_BUFF_CHAR, BLE_CIS_BUFF_SIZE, cis_buf);
select_REG(0x2014);
w32_REG(0x4);
break;
}
case CIS_LED_TEST: { //0x7070
if( ins[2] == 0 ){
Elite_led_color(ins[3]);