/* InitSPIQueryLeaderService */ // initialize SPI // post initial transition event /* PostSPIQueryLeaderService */ // allows services to post events to SPIQueryLeaderService queue /* RunSPIQueryLeaderService */ // if ES_INIT event // send no event (0xFF) to query follower // initial SPI_QUERY_TIMER for 1/10s // if ES_TIMEOUT event // send another no event (0xFF) to query follower // re-initialize SPI_QUERY_TIMER /* _HW_SPI1Handler ISR */ // ISR to handle SPI interrupts from follower // do once the while loop while SPIRBE bit is not set // clear SPI1RXIF in IFS1CLR // read the new command from SPI1BUF // if ByteReceived is 0x04 // post HW_TARGETREACHED event to main LeaderService /* InitSPI */ // helper function to initialize SPI1 module as leader // setup basic SPI config // set SPI1 as leader // map SS Output to RA0 // map SD Output to RA2 // map SD Input to RB8 // clear SPI1BUF buffer // set SPIROV bit to 0 // send enhanced buffer mode // set bit time to 1100 // set transfer width to 8bit // set active edge to SPI_FIRST_EDGE // set clock idle state to active low // set SRXISEL to 01 // Set interrupt priority to 5 // clear SPI1RXIF // set SPI1RXIE // enable SPI