@@ -84,8 +84,7 @@ static void evt_received(TL_EvtPacket_t *hcievt)
84
84
85
85
// We need to memcpy the data before passing to higher layers.
86
86
switch (hcievt->evtserial .type ) {
87
- case TL_BLEEVT_PKT_TYPE:
88
-
87
+ case TL_BLEEVT_PKT_TYPE: {
89
88
#if defined(DEBUG)
90
89
#if defined(PRINT_HCI_DATA)
91
90
printf (" RX<< EVT : " );
@@ -101,7 +100,7 @@ static void evt_received(TL_EvtPacket_t *hcievt)
101
100
#endif /* DEBUG */
102
101
103
102
if (phase_running == false ) {
104
- /* check the Rx event of complete the previous bd_addr opcode 0xfc0c */
103
+ /* check the Rx event of complete the previous bd_addr opcode 0xFC0C */
105
104
if ((hcievt->evtserial .evt .evtcode == TL_BLEEVT_CC_OPCODE) &&
106
105
(hcievt->evtserial .evt .payload [0 ] == 0x01 ) &&
107
106
(hcievt->evtserial .evt .payload [1 ] == 0x0C ) &&
@@ -157,31 +156,32 @@ __disable_irq();
157
156
_write_index += len;
158
157
// TODO: control the _rxbuff cannot overflow
159
158
__enable_irq ();
159
+ }
160
160
break ;
161
161
case TL_ACL_DATA_PKT_TYPE: {
162
+ TL_AclDataSerial_t *acl = &(((TL_AclDataPacket_t *)hcievt)->AclDataSerial );
163
+ __disable_irq ();
164
+ len = acl->length + 5 ;
165
+ memcpy ((uint8_t *)&_rxbuff[_write_index], (uint8_t *)acl, len);
166
+ /* move index */
167
+ _write_index += len;
168
+ // TODO: control the _rxbuff cannot overflow
169
+ __enable_irq ();
162
170
#if defined(DEBUG)
163
171
#if defined(PRINT_HCI_DATA)
164
172
printf (" RX<< ACL : " );
165
- printf (" Type %#x" , hcievt-> evtserial . type );
166
- printf (" evt %#x" , hcievt-> evtserial . evt . evtcode );
167
- printf (" Len %#d" , hcievt-> evtserial . evt . plen );
173
+ printf (" Type %#x" , acl-> type );
174
+ printf (" evt %#x" , acl-> handle );
175
+ printf (" Len %#d" , acl-> length );
168
176
printf (" :" );
169
- for (uint8_t i = 0 ; i < hcievt-> evtserial . evt . plen ; i++) {
170
- printf (" %02X" , hcievt-> evtserial . evt . payload [i]);
177
+ for (uint8_t i = 0 ; i < acl-> length ; i++) {
178
+ printf (" %02X" , acl-> acl_data [i]);
171
179
}
172
180
printf (" \r\n " );
173
181
#endif /* PRINT_HCI_DATA */
174
182
#endif /* DEBUG */
175
- TL_AclDataSerial_t *acl = &(((TL_AclDataPacket_t *)hcievt)->AclDataSerial );
176
- __disable_irq ();
177
- len = acl->length + 5 ;
178
- memcpy ((uint8_t *)&_rxbuff[_write_index], (uint8_t *)&acl, len);
179
- /* move index */
180
- _write_index += len;
181
- // TODO: control the _rxbuff cannot overflow
182
- __enable_irq ();
183
183
}
184
- break ;
184
+ break ;
185
185
default :
186
186
// should not happen - let's block to check
187
187
#if defined(DEBUG)
@@ -388,16 +388,11 @@ int HCISharedMemTransportClass::available()
388
388
if (_read_index != _write_index) {
389
389
return 1 ;
390
390
} else {
391
- return 0 ;
391
+ return 0 ;
392
392
}
393
393
} else {
394
394
return 0 ;
395
395
}
396
- if (sys_event) {
397
- sys_event = false ;
398
-
399
- return 1 ;
400
- }
401
396
402
397
return 0 ;
403
398
}
@@ -474,12 +469,8 @@ size_t HCISharedMemTransportClass::write(const uint8_t* data, size_t length)
474
469
LL_RCC_ReleaseBackupDomainReset ();
475
470
}
476
471
477
- /* Switch OFF LSI */
472
+ /* Switch OFF LSI as LSE is the source clock */
478
473
LL_RCC_LSI2_Disable ();
479
-
480
- /* Select wakeup source of BLE RF */
481
- LL_RCC_SetRFWKPClockSource (LL_RCC_RFWKP_CLKSOURCE_LSE);
482
-
483
474
}
484
475
485
476
void stm32wb_reset (void )
@@ -595,10 +586,8 @@ size_t HCISharedMemTransportClass::write(const uint8_t* data, size_t length)
595
586
tl_ble_config.IoBusEvtCallBack = evt_received;
596
587
tl_ble_config.IoBusAclDataTxAck = acl_data_ack;
597
588
TL_BLE_Init ((void *)&tl_ble_config);
598
-
599
589
}
600
590
601
- #if 1
602
591
/* This function fills in a BD address table */
603
592
bool get_bd_address (uint8_t *bd_addr)
604
593
{
@@ -692,7 +681,7 @@ static int bt_ipm_set_power(void)
692
681
return 1 ; /* success */
693
682
}
694
683
695
- #else
684
+ #if 0
696
685
int bt_ipm_ble_init(void)
697
686
{
698
687
uint16_t opcode;
@@ -953,16 +942,11 @@ static int bt_ipm_set_power(void)
953
942
TL_BLE_SendCmd (NULL , 0 ); // unused parameters for now
954
943
break ;
955
944
case 2 :// ACL DATA
956
- if (!acl_data) {
957
- #if defined(DEBUG)
958
- printf (" ERROR: previous ACL message not ACK'd\r\n " );
959
- #endif /* DEBUG */
960
- /* return number of bytes sent, 0 in this error case */
961
- return 0 ;
962
- }
963
- memcpy ((void *)
964
- &((TL_AclDataPacket_t *)HciAclDataBuffer)->AclDataSerial , pData, len);
965
- TL_BLE_SendAclData (NULL , 0 ); // unused parameters for now
945
+ /* memcpy((void *)
946
+ &((TL_AclDataPacket_t *)HciAclDataBuffer)->AclDataSerial, pData, len);*/
947
+ TL_AclDataSerial_t *aclDataSerial = (TL_AclDataSerial_t *)(HciAclDataBuffer + sizeof (TL_PacketHeader_t));
948
+ aclDataSerial->type = type; // for now this param is overwritten in TL_BLE_SendCmd
949
+ memcpy (HciAclDataBuffer + + sizeof (TL_PacketHeader_t) + sizeof (type), pData, len);
966
950
#if defined(DEBUG)
967
951
#if defined(PRINT_HCI_DATA)
968
952
printf (" TX>> ACL : " );
@@ -972,6 +956,7 @@ static int bt_ipm_set_power(void)
972
956
printf (" \r\n " );
973
957
#endif /* PRINT_HCI_DATA */
974
958
#endif /* DEBUG */
959
+ TL_BLE_SendAclData (NULL , 0 ); // unused parameters for now
975
960
break ;
976
961
}
977
962
return len;
0 commit comments