Skip to content

Commit 2aefeba

Browse files
authored
Merge pull request #45 from adafruit/develop
increase buffer depth to fix OTA issue with nrfConnect on iOS
2 parents a3de7e8 + d9b275c commit 2aefeba

File tree

6 files changed

+165
-5
lines changed

6 files changed

+165
-5
lines changed

lib/sdk11/components/libraries/bootloader_dfu/dfu_single_bank.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ static void dfu_prepare_func_app_erase(uint32_t image_size)
154154
nrf_nvmc_page_erase(DFU_BANK_0_REGION_START + i * CODE_PAGE_SIZE);
155155
}
156156

157-
// simulate complete call
157+
// invoke complete callback
158158
pstorage_callback_handler(&m_storage_handle_app, PSTORAGE_CLEAR_OP_CODE, NRF_SUCCESS, NULL, 0);
159159
}
160160
}

lib/sdk11/components/libraries/bootloader_dfu/dfu_transport_ble.c

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -736,6 +736,11 @@ static void on_ble_evt(ble_evt_t * p_ble_evt)
736736
uint32_t err_code;
737737
ble_gatts_rw_authorize_reply_params_t auth_reply;
738738

739+
#ifdef CFG_DEBUG
740+
extern const char* dbg_ble_event_str(uint16_t evt_id);
741+
ADALOG("BLE", dbg_ble_event_str(p_ble_evt->header.evt_id));
742+
#endif
743+
739744
switch (p_ble_evt->header.evt_id)
740745
{
741746
case BLE_GAP_EVT_CONNECTED:
@@ -896,6 +901,7 @@ static void on_ble_evt(ble_evt_t * p_ble_evt)
896901
case BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST:
897902
{
898903
uint16_t att_mtu = MIN(p_ble_evt->evt.gatts_evt.params.exchange_mtu_request.client_rx_mtu, BLEGATT_ATT_MTU_MAX);
904+
ADALOG("GAP", "ATT MTU is changed to %d", att_mtu);
899905
APP_ERROR_CHECK( sd_ble_gatts_exchange_mtu_reply(m_conn_handle, att_mtu) );
900906
}
901907
break;
@@ -1088,3 +1094,109 @@ uint32_t dfu_transport_ble_close()
10881094

10891095
return NRF_SUCCESS;
10901096
}
1097+
1098+
#ifdef CFG_DEBUG
1099+
1100+
typedef struct
1101+
{
1102+
uint32_t key;
1103+
void const * data;
1104+
}lookup_entry_t;
1105+
1106+
typedef struct
1107+
{
1108+
uint16_t count;
1109+
lookup_entry_t const* items;
1110+
} lookup_table_t;
1111+
1112+
void const * lookup_find(lookup_table_t const* p_table, uint32_t key)
1113+
{
1114+
for(uint16_t i=0; i<p_table->count; i++)
1115+
{
1116+
if (p_table->items[i].key == key) return p_table->items[i].data;
1117+
}
1118+
1119+
return NULL;
1120+
}
1121+
1122+
/*------------------------------------------------------------------*/
1123+
/* BLE Event String
1124+
*------------------------------------------------------------------*/
1125+
static lookup_entry_t const _strevt_lookup[] =
1126+
{
1127+
// BLE common: 0x01
1128+
{ .key = BLE_EVT_USER_MEM_REQUEST , .data= "BLE_EVT_USER_MEM_REQUEST" },
1129+
{ .key = BLE_EVT_USER_MEM_RELEASE , .data= "BLE_EVT_USER_MEM_RELEASE" },
1130+
1131+
// BLE Gap: 0x10
1132+
{ .key = BLE_GAP_EVT_CONNECTED , .data= "BLE_GAP_EVT_CONNECTED" },
1133+
{ .key = BLE_GAP_EVT_DISCONNECTED , .data= "BLE_GAP_EVT_DISCONNECTED" },
1134+
{ .key = BLE_GAP_EVT_CONN_PARAM_UPDATE , .data= "BLE_GAP_EVT_CONN_PARAM_UPDATE" },
1135+
{ .key = BLE_GAP_EVT_SEC_PARAMS_REQUEST , .data= "BLE_GAP_EVT_SEC_PARAMS_REQUEST" },
1136+
{ .key = BLE_GAP_EVT_SEC_INFO_REQUEST , .data= "BLE_GAP_EVT_SEC_INFO_REQUEST" },
1137+
{ .key = BLE_GAP_EVT_PASSKEY_DISPLAY , .data= "BLE_GAP_EVT_PASSKEY_DISPLAY" },
1138+
{ .key = BLE_GAP_EVT_KEY_PRESSED , .data= "BLE_GAP_EVT_KEY_PRESSED" },
1139+
{ .key = BLE_GAP_EVT_AUTH_KEY_REQUEST , .data= "BLE_GAP_EVT_AUTH_KEY_REQUEST" },
1140+
{ .key = BLE_GAP_EVT_LESC_DHKEY_REQUEST , .data= "BLE_GAP_EVT_LESC_DHKEY_REQUEST" },
1141+
{ .key = BLE_GAP_EVT_AUTH_STATUS , .data= "BLE_GAP_EVT_AUTH_STATUS" },
1142+
{ .key = BLE_GAP_EVT_CONN_SEC_UPDATE , .data= "BLE_GAP_EVT_CONN_SEC_UPDATE" },
1143+
{ .key = BLE_GAP_EVT_TIMEOUT , .data= "BLE_GAP_EVT_TIMEOUT" },
1144+
{ .key = BLE_GAP_EVT_RSSI_CHANGED , .data= "BLE_GAP_EVT_RSSI_CHANGED" },
1145+
{ .key = BLE_GAP_EVT_ADV_REPORT , .data= "BLE_GAP_EVT_ADV_REPORT" },
1146+
{ .key = BLE_GAP_EVT_SEC_REQUEST , .data= "BLE_GAP_EVT_SEC_REQUEST" },
1147+
{ .key = BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST , .data= "BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST" },
1148+
{ .key = BLE_GAP_EVT_SCAN_REQ_REPORT , .data= "BLE_GAP_EVT_SCAN_REQ_REPORT" },
1149+
{ .key = BLE_GAP_EVT_PHY_UPDATE_REQUEST , .data= "BLE_GAP_EVT_PHY_UPDATE_REQUEST" },
1150+
{ .key = BLE_GAP_EVT_PHY_UPDATE , .data= "BLE_GAP_EVT_PHY_UPDATE" },
1151+
{ .key = BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST , .data= "BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST" },
1152+
{ .key = BLE_GAP_EVT_DATA_LENGTH_UPDATE , .data= "BLE_GAP_EVT_DATA_LENGTH_UPDATE" },
1153+
{ .key = BLE_GAP_EVT_QOS_CHANNEL_SURVEY_REPORT , .data= "BLE_GAP_EVT_QOS_CHANNEL_SURVEY_REPORT" },
1154+
{ .key = BLE_GAP_EVT_ADV_SET_TERMINATED , .data= "BLE_GAP_EVT_ADV_SET_TERMINATED" },
1155+
1156+
// BLE Gattc: 0x30
1157+
{ .key = BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP , .data= "BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP" },
1158+
{ .key = BLE_GATTC_EVT_REL_DISC_RSP , .data= "BLE_GATTC_EVT_REL_DISC_RSP" },
1159+
{ .key = BLE_GATTC_EVT_CHAR_DISC_RSP , .data= "BLE_GATTC_EVT_CHAR_DISC_RSP" },
1160+
{ .key = BLE_GATTC_EVT_DESC_DISC_RSP , .data= "BLE_GATTC_EVT_DESC_DISC_RSP" },
1161+
{ .key = BLE_GATTC_EVT_ATTR_INFO_DISC_RSP , .data= "BLE_GATTC_EVT_ATTR_INFO_DISC_RSP" },
1162+
{ .key = BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP , .data= "BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP" },
1163+
{ .key = BLE_GATTC_EVT_READ_RSP , .data= "BLE_GATTC_EVT_READ_RSP" },
1164+
{ .key = BLE_GATTC_EVT_CHAR_VALS_READ_RSP , .data= "BLE_GATTC_EVT_CHAR_VALS_READ_RSP" },
1165+
{ .key = BLE_GATTC_EVT_WRITE_RSP , .data= "BLE_GATTC_EVT_WRITE_RSP" },
1166+
{ .key = BLE_GATTC_EVT_HVX , .data= "BLE_GATTC_EVT_HVX" },
1167+
{ .key = BLE_GATTC_EVT_EXCHANGE_MTU_RSP , .data= "BLE_GATTC_EVT_EXCHANGE_MTU_RSP" },
1168+
{ .key = BLE_GATTC_EVT_TIMEOUT , .data= "BLE_GATTC_EVT_TIMEOUT" },
1169+
{ .key = BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE , .data= "BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE" },
1170+
1171+
// BLE Gatts: 0x50
1172+
{ .key = BLE_GATTS_EVT_WRITE , .data= "BLE_GATTS_EVT_WRITE" },
1173+
{ .key = BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST , .data= "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST" },
1174+
{ .key = BLE_GATTS_EVT_SYS_ATTR_MISSING , .data= "BLE_GATTS_EVT_SYS_ATTR_MISSING" },
1175+
{ .key = BLE_GATTS_EVT_HVC , .data= "BLE_GATTS_EVT_HVC" },
1176+
{ .key = BLE_GATTS_EVT_SC_CONFIRM , .data= "BLE_GATTS_EVT_SC_CONFIRM" },
1177+
{ .key = BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST , .data= "BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST" },
1178+
{ .key = BLE_GATTS_EVT_TIMEOUT , .data= "BLE_GATTS_EVT_TIMEOUT" },
1179+
{ .key = BLE_GATTS_EVT_HVN_TX_COMPLETE , .data= "BLE_GATTS_EVT_HVN_TX_COMPLETE" },
1180+
};
1181+
1182+
lookup_table_t const _strevt_table =
1183+
{
1184+
.count = arrcount(_strevt_lookup),
1185+
.items = _strevt_lookup
1186+
};
1187+
1188+
const char* dbg_ble_event_str(uint16_t evt_id)
1189+
{
1190+
const char * str = (const char *) lookup_find(&_strevt_table, evt_id);
1191+
static char unknown_str[7] = {0};
1192+
1193+
if ( str == NULL )
1194+
{
1195+
sprintf(unknown_str, "0x%04X", evt_id);
1196+
str = unknown_str;
1197+
}
1198+
1199+
return str;
1200+
}
1201+
1202+
#endif

src/boards.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,9 +253,9 @@ void led_state(uint32_t state)
253253
case STATE_BLE_CONNECTED:
254254
new_rgb_color = 0x0000ff;
255255
#ifdef LED_SECONDARY_PIN
256-
secondary_cycle_length = 500;
256+
secondary_cycle_length = 3000;
257257
#else
258-
primary_cycle_length = 500;
258+
primary_cycle_length = 3000;
259259
#endif
260260
break;
261261

src/boards.h

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,50 @@ static inline bool button_pressed(uint32_t pin)
9696

9797
bool is_ota(void);
9898

99+
//--------------------------------------------------------------------+
100+
// DEBUG
101+
//--------------------------------------------------------------------+
102+
//#define CFG_DEBUG
103+
104+
#ifdef CFG_DEBUG
105+
106+
#include <stdio.h>
107+
108+
#define PRINT_LOCATION() printf("%s: %d:\n", __PRETTY_FUNCTION__, __LINE__)
109+
#define PRINT_MESS(x) printf("%s: %d: %s \n" , __FUNCTION__, __LINE__, (char*)(x))
110+
#define PRTNT_HEAP() if (CFG_DEBUG == 3) printf("\n%s: %d: Heap free: %d\n", __FUNCTION__, __LINE__, util_heap_get_free_size())
111+
#define PRINT_STR(x) printf("%s: %d: " #x " = %s\n" , __FUNCTION__, __LINE__, (char*)(x) )
112+
#define PRINT_INT(x) printf("%s: %d: " #x " = %ld\n" , __FUNCTION__, __LINE__, (uint32_t) (x) )
113+
#define PRINT_HEX(x) printf("%s: %d: " #x " = 0x%X\n" , __FUNCTION__, __LINE__, (uint32_t) (x) )
114+
115+
#define PRINT_BUFFER(buf, n) \
116+
do {\
117+
uint8_t const* p8 = (uint8_t const*) (buf);\
118+
printf(#buf ": ");\
119+
for(uint32_t i=0; i<(n); i++) printf("%x ", p8[i]);\
120+
printf("\n");\
121+
}while(0)
122+
123+
#define ADALOG(tag, ...) \
124+
do { \
125+
if ( tag ) printf("[%s] ", tag);\
126+
printf(__VA_ARGS__);\
127+
printf("\n");\
128+
}while(0)
129+
130+
#else
131+
132+
#define PRINT_LOCATION()
133+
#define PRINT_MESS(x)
134+
#define PRTNT_HEAP()
135+
#define PRINT_STR(x)
136+
#define PRINT_INT(x)
137+
#define PRINT_HEX(x)
138+
#define PRINT_BUFFER(buf, n)
139+
140+
#define ADALOG(...)
141+
142+
#endif
143+
144+
99145
#endif

src/sdk_config.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@
6464
// <e> HCI_MEM_POOL_ENABLED - hci_mem_pool - memory pool implementation used by HCI
6565
//==========================================================
6666
#define HCI_MEM_POOL_ENABLED 1
67-
#define HCI_TX_BUF_SIZE 600
67+
#define HCI_TX_BUF_SIZE 600 // not used
6868
#define HCI_RX_BUF_SIZE 600
69-
#define HCI_RX_BUF_QUEUE_SIZE 4
69+
#define HCI_RX_BUF_QUEUE_SIZE 8 // must be power of 2
7070

7171
//==========================================================
7272
// <e> UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver

src/segger/Adafruit_nRF52_Bootloader.emProject

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,10 +375,12 @@
375375
<configuration
376376
Name="Feather52840"
377377
c_preprocessor_definitions="NRF52840_XXAA;MK_DIS_FIRMWARE=&quot;s140 6.1.1 r0&quot;;S140;BOARD_FEATHER_NRF52840_EXPRESS;BOARD_HEADER_FILE=&quot;feather_nrf52840_express.h&quot;"
378+
gcc_optimization_level="Debug"
378379
linker_memory_map_file="nRF52840_xxAA_MemoryMap.xml" />
379380
<configuration
380381
Name="Feather52832"
381382
c_preprocessor_definitions="NRF52832_XXAA;MK_DIS_FIRMWARE=&quot;s132 6.1.1 r0&quot;;S132;BOARD_FEATHER_NRF52832;BOARD_HEADER_FILE=&quot;feather_nrf52832.h&quot;"
383+
gcc_optimization_level="Debug"
382384
linker_memory_map_file="nRF52832_xxAA_MemoryMap.xml" />
383385
<configuration
384386
Name="PCA10056"

0 commit comments

Comments
 (0)