Skip to content

Commit

Permalink
- use memcpy instead of uint64_t pointer for pipe status event
Browse files Browse the repository at this point in the history
as dereferencing an unaligned uint64_t* halts Arduino Zero (sandeepmistry#23)
  • Loading branch information
sandeepmistry committed Jul 25, 2015
1 parent fef5e0a commit 051765c
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions nRF8001.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -995,18 +995,21 @@ void nRF8001::poll() {
break;

case ACI_EVT_PIPE_STATUS: {
uint64_t* openPipes = (uint64_t*)&aciEvt->params.pipe_status.pipes_open_bitmap;
uint64_t* closedPipes = (uint64_t*)&aciEvt->params.pipe_status.pipes_closed_bitmap;

#ifdef NRF_8001_DEBUG
Serial.println(F("Evt Pipe Status "));
#endif
uint64_t closedPipes;
memcpy(&closedPipes, aciEvt->params.pipe_status.pipes_closed_bitmap, sizeof(closedPipes));

Serial.println((unsigned long)*openPipes, HEX);
Serial.println((unsigned long)*closedPipes, HEX);
#ifdef NRF_8001_DEBUG
uint64_t openPipes;
memcpy(&openPipes, aciEvt->params.pipe_status.pipes_open_bitmap, sizeof(openPipes));

Serial.println((unsigned long)openPipes, HEX);
Serial.println((unsigned long)closedPipes, HEX);
#endif
bool discoveryFinished = lib_aci_is_discovery_finished(&this->_aciState);

if ((unsigned long)*closedPipes == 0 && !discoveryFinished) {
if (closedPipes == 0 && !discoveryFinished) {
this->_closedPipesCleared = true;
}

Expand Down

0 comments on commit 051765c

Please sign in to comment.