Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a9fd1c79c8 | |||
| 551b412329 | |||
| 7d79d4e6df |
+1
@@ -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
|
||||
|
||||
+119
-85
@@ -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]);
|
||||
|
||||
Reference in New Issue
Block a user