I'm using SDK 7.1, PCA10028 eval board, SD310 2.0.1, MCP 3.6.0.8331
When the line wrtHandle = hdr->Handle; executes I get an Hardfault Error. Why?
case BLE_GATTS_EVT_WRITE:
if (p_ble_evt->evt.gatts_evt.params.write.handle == 0 && p_ble_evt->evt.gatts_evt.params.write.op== BLE_GATTS_OP_EXEC_WRITE_REQ_NOW)
{
hdr = (GatMem_t *)LongWriteBuff;
wrtHandle = hdr->Handle;
while (hdr->Handle == p_blinds->blinds_name_handles.value_handle)
{
memcpy(buff + hdr->Offset, hdr->Data, hdr->Len);
len += hdr->Len;
p += hdr->Len + 6;
hdr = (GatMem_t *)p;
}
if(wrtHandle == p_blinds->blinds_name_handles.value_handle)
p_blinds->blinds_name_handler(p_blinds, (uint8_t *)buff);
if(wrtHandle == p_blinds->sched_data_handles.value_handle)
p_blinds->sched_data_handler(p_blinds, (uint8_t *)buff);
if(wrtHandle == p_blinds->room_name_handles.value_handle)
p_blinds->room_name_handler(p_blinds, (uint8_t *)buff);
if(wrtHandle == p_blinds->room_info_handles.value_handle)
p_blinds->room_info_handler(p_blinds, (uint8_t *)buff);
return;
}
else on_write(p_blinds, p_ble_evt);
break;
hdr points address 0x2000275B hdr.handle = 0x000B LongWriteBuff is at address 0x2000275B LongWriteBuff[0] = 0x000B
after execution of wrtHandle = hdr->Handle; My application locks up at:
0x0001D110 E7FE B HardFault_Handler (0x0001D110)
165: B .
166: ENDP
167: PendSV_Handler PROC
168: EXPORT PendSV_Handler [WEAK]