Beispiel #1
0
/**
 * @brief Checks if "OK<CR>" is waiting in the buffer
 * @retval TRUE if "OK<CR>" is received, FALSE otherwise.
 */
uint8_t XBee_CheckOkResponse(void) {
  uint8_t ret;
  Blox_VUSART_Receive(XBEE_VUSART_ID, &ret);
  if (ret != 'O') {
    Blox_DebugPat("XBee_CheckOKResponse received %x instead of O\r\n", (char)ret);
    return FALSE;
  }
  Blox_VUSART_Receive(XBEE_VUSART_ID, &ret);
  if (ret != 'K') {
    Blox_DebugPat("XBee_CheckOKResponse received %x instead of K\r\n", (char)ret);
    return FALSE;
  }
  Blox_VUSART_Receive(XBEE_VUSART_ID, &ret);
  if (ret != CR) {
    Blox_DebugPat("XBee_CheckOKResponse received %x instead of <CR>\r\n", (char)ret);
    return FALSE;
  }
  return TRUE;
}
Beispiel #2
0
/**
 * @brief Initializes the pointer to the system variables array
 * @retval None
 */
void Blox_System_Init(void) {
  Blox_Debug_Init();
  //sys = (SysVar *)MEM_SYS_VAR_START;  
  if(sys->magic != SYS_MAGIC) {
    Blox_DebugPat("Blox_System_Init sys magic fails, got:%x\r\n", sys->magic);
    while(1) ;
  }   
    
  numDeInit = 0;
}
Beispiel #3
0
/**
 * @brief Registers a new function to be called when the system deInits.
 *        Only adds if it isn't already there.
 * @param fn: a fn pointer to a module's deinit function
 * @retval None
 */
void Blox_System_Register_DeInit(ptrVoidFn fn) {
  uint32_t i;
  if (numDeInit == MAX_DEINIT_FN) {
    Blox_DebugPat("Blox_System_Register_DeInit numDeInit reached max of:%d\r\n",
        MAX_DEINIT_FN);
    while(1) ;
  }
  
  for (i = 0; i < numDeInit; i++) {
    if(deInit[i] == fn)
      return;
  }
  
  deInit[numDeInit++] = fn;
}
Beispiel #4
0
/**
 * @brief Prints out the configuration options of the XBee.
 * @retval XBEE_OK if successfull, XBEE_INIT_FAIL on failure.
 */
XBEE_STATUS Blox_XBee_Print(void) {
  uint8_t garbage;
  
  Blox_VUSART_TryReceive(XBEE_VUSART_ID, &garbage);   //clear VUSART buffer before send/receive
  Blox_VUSART_Send(XBEE_VUSART_ID, 'X');           // Junk character to before init
  SysTick_Wait(1100);
  Blox_VUSART_SendData(XBEE_VUSART_ID, "+++", 3) ; //Enter Command Mode
  if (XBee_CheckOkResponse() == FALSE)
    return XBEE_INIT_FAIL;
  SysTick_Wait(1100);
  
  Blox_VUSART_SendData(XBEE_VUSART_ID, "ATMY\r", 5) ; //Read source address
  Blox_DebugStr("ATMY:");
  Blox_VUSART_Receive(XBEE_VUSART_ID, &garbage);
  Blox_DebugPat("%c\r\n", garbage);
  Blox_VUSART_Receive(XBEE_VUSART_ID, &garbage); //\r
  
  Blox_VUSART_SendData(XBEE_VUSART_ID, "ATDL\r", 5) ; //Read source address
  Blox_DebugStr("ATDL:");
  Blox_VUSART_Receive(XBEE_VUSART_ID, &garbage);
  Blox_DebugPat("%c", garbage);
  Blox_VUSART_Receive(XBEE_VUSART_ID, &garbage);
  Blox_DebugPat("%c", garbage);
  Blox_VUSART_Receive(XBEE_VUSART_ID, &garbage);
  Blox_DebugPat("%c", garbage);
  Blox_VUSART_Receive(XBEE_VUSART_ID, &garbage);
  Blox_DebugPat("%c\r\n", garbage);
  Blox_VUSART_Receive(XBEE_VUSART_ID, &garbage); //\r
  
  Blox_VUSART_SendData(XBEE_VUSART_ID, "ATDH\r", 5) ; //Read source address
  Blox_DebugStr("ATDH:");
  Blox_VUSART_Receive(XBEE_VUSART_ID, &garbage);
  Blox_DebugPat("%c\r\n", garbage);
  Blox_VUSART_Receive(XBEE_VUSART_ID, &garbage); //\r
 
  Blox_VUSART_SendData(XBEE_VUSART_ID, "ATAP\r", 5) ; //Read source address
  Blox_DebugStr("ATAP:");
  Blox_VUSART_Receive(XBEE_VUSART_ID, &garbage);
  Blox_DebugPat("%c\r\n", garbage);
  Blox_VUSART_Receive(XBEE_VUSART_ID, &garbage); //\r
  
  Blox_VUSART_SendData(XBEE_VUSART_ID, "ATCN\r", 5) ; //Exit command mode
  if (XBee_CheckOkResponse() == FALSE)
    return XBEE_INIT_FAIL;
  SysTick_Wait(20);
  
  return XBEE_OK;
}