Skip to content

Commit 831e996

Browse files
committed
LP only differ in cmd, not procedure
1 parent 9cf284f commit 831e996

File tree

1 file changed

+15
-46
lines changed

1 file changed

+15
-46
lines changed

Diff for: src/utility/HCISpiTransport.cpp

+15-46
Original file line numberDiff line numberDiff line change
@@ -940,8 +940,16 @@ void HCISpiTransportClass::wait_for_aci_gap_init()
940940
void HCISpiTransportClass::aci_gap_init()
941941
{
942942
uint8_t header_master[5] = {0x0a, 0x00, 0x00, 0x00, 0x00};
943-
uint8_t cmd[7] = {0x01, 0x8A, 0xFC, 0x03, 0x0F, 0x00, 0x00}; // ACI_GAP_INIT
944-
uint8_t cmd_lp[8] = {0x01, 0x8A, 0xFC, 0x04, 0x0F, 0x00, 0x00, 0x00}; // ACI_GAP_INIT for BlueNRG-LP
943+
uint8_t cmd_lp[8] = {0x01, 0x8A, 0xFC, 0x04, 0x0F, 0x00, 0x00, 0x00}; // ACI_GAP_INIT
944+
uint8_t cmd_others[7] = {0x01, 0x8A, 0xFC, 0x03, 0x0F, 0x00, 0x00}; // ACI_GAP_INIT
945+
uint8_t *cmd, cmd_size;
946+
if (_ble_chip == BLUENRG_LP) {
947+
cmd = cmd_lp;
948+
cmd_size = 8;
949+
} else {
950+
cmd = cmd_others;
951+
cmd_size = 7;
952+
}
945953
int result = 0;
946954

947955
do {
@@ -958,9 +966,9 @@ void HCISpiTransportClass::aci_gap_init()
958966
/* device is ready */
959967
if (header_master[0] == 0x02) {
960968
/* Write the data */
961-
if (header_master[1] >= 7) {
969+
if (header_master[1] >= cmd_size) {
962970
/* Write the data */
963-
_spi->transfer((void *)cmd, 7);
971+
_spi->transfer((void *)cmd, cmd_size);
964972
} else {
965973
result = -2;
966974
}
@@ -971,46 +979,7 @@ void HCISpiTransportClass::aci_gap_init()
971979
digitalWrite(_cs_pin, HIGH);
972980

973981
_spi->endTransaction();
974-
} else if (_ble_chip == SPBTLE_1S || _ble_chip == BLUENRG_M2SP) {
975-
uint32_t tickstart_data_available = millis();
976-
result = 0;
977-
978-
detachInterrupt(_spi_irq);
979-
980-
_spi->beginTransaction(_spiSettings);
981-
982-
digitalWrite(_cs_pin, LOW);
983-
984-
while (!(digitalRead(_spi_irq) == 1)) {
985-
if ((millis() - tickstart_data_available) > 1000) {
986-
result = -3;
987-
break;
988-
}
989-
}
990-
991-
if (result == -3) {
992-
digitalWrite(_cs_pin, HIGH);
993-
_spi->endTransaction();
994-
attachInterrupt(_spi_irq, SPI_Irq_Callback, RISING);
995-
break;
996-
}
997-
998-
/* Write the header */
999-
_spi->transfer(header_master, 5);
1000-
1001-
if ((int)((((uint16_t)header_master[2]) << 8) | ((uint16_t)header_master[1])) >= 7) {
1002-
/* Write the data */
1003-
_spi->transfer((void *)cmd, 7);
1004-
} else {
1005-
result = -2;
1006-
}
1007-
1008-
digitalWrite(_cs_pin, HIGH);
1009-
1010-
_spi->endTransaction();
1011-
1012-
attachInterrupt(_spi_irq, SPI_Irq_Callback, RISING);
1013-
} else if (_ble_chip == BLUENRG_LP) {
982+
} else if (_ble_chip == SPBTLE_1S || _ble_chip == BLUENRG_M2SP || _ble_chip == BLUENRG_LP) {
1014983
uint32_t tickstart_data_available = millis();
1015984
result = 0;
1016985

@@ -1037,9 +1006,9 @@ void HCISpiTransportClass::aci_gap_init()
10371006
/* Write the header */
10381007
_spi->transfer(header_master, 5);
10391008

1040-
if ((int)((((uint16_t)header_master[2]) << 8) | ((uint16_t)header_master[1])) >= 8) {
1009+
if ((int)((((uint16_t)header_master[2]) << 8) | ((uint16_t)header_master[1])) >= cmd_size) {
10411010
/* Write the data */
1042-
_spi->transfer((void *)cmd_lp, 8);
1011+
_spi->transfer((void *)cmd, cmd_size);
10431012
} else {
10441013
result = -2;
10451014
}

0 commit comments

Comments
 (0)