20 #define NEIGHBOR_PERIOD_DEFAULT                 330 
   21 #define NEIGHBOR_TIMEOUT_ROUNDS                 4 
   22 #define OBSTACLE_TIMEOUT_ROUNDS                 2 
   23 #define NEIGHBOR_MAX                                    10 
   33 #define NEIGHBOR_XMIT_MIN_DELAY         50 
   35 #define ROBOT_ID_NULL                                   0 
   36 #define ROBOT_ID_MIN                                    1 
   37 #define ROBOT_ID_MAX                                    80 
   38 #define ROBOT_ID_ALL                                    0xFF 
   40 #define MAX_PARENT_ID                                   0x7F 
   43 #define NBR_RADIO_MESSAGES_MAX                                  16 
   44 #define NBR_RADIO_MESSAGES_SENDER_ID_IDX                0 
   45 #define NBR_RADIO_MESSAGES_LENGTH_IDX                   1 
   46 #define NBR_RADIO_MESSAGES_DATA_IDX                             2 
   47 #define NBR_RADIO_MESSAGE_DATA_LENGTH                   (RADIO_COMMAND_MESSAGE_DATA_LENGTH - NBR_RADIO_MESSAGES_DATA_IDX) 
   50 #define NBR_DATA_IR_IDX_MAX                     7 
   51 #define NBR_DATA_IR_BITS_MAX                    (IR_COMMS_MESSAGE_BIT_LENGTH_MAX) 
   53 #define NBR_DATA_RF_PACKETS_MAX                 4 
   54 #define NBR_DATA_RF_IDX_PER_PACKET              NBR_RADIO_MESSAGE_DATA_LENGTH 
   55 #define NBR_DATA_RF_IDX_MAX                     (NBR_RADIO_MESSAGE_DATA_LENGTH * NBR_DATA_RF_PACKETS_MAX) 
   56 #define NBR_DATA_RF_BITS_MAX                    (NBR_DATA_RF_IDX_MAX * 8) 
   58 #define NBR_DATA_TYPE_IR                0 
   59 #define NBR_DATA_TYPE_RF                1 
   61 #define NBR_ANGLE_HISTORY                               3 
   62 #define NBR_ANGLE_MAX_DELTA_PER_ROUND   (MILLIRAD_PI / 4) 
   88         uint8 data[NBR_RADIO_MESSAGE_DATA_LENGTH];      
 
   99         uint8 data[NBR_RADIO_MESSAGE_DATA_LENGTH];
 
  115         int16 bearingHistory[NBR_ANGLE_HISTORY];                                
 
  116         int16 orientationHistory[NBR_ANGLE_HISTORY];                    
 
  117         boolean orientationValid;                                                               
 
  120         uint8 orientationsBitsMatrix[IR_COMMS_NUM_OF_RECEIVERS];
 
  121         uint8 rangeBits[IR_COMMS_NUM_OF_RECEIVERS];                             
 
  123         uint8 orientationBits;                                                                  
 
  126         uint8 messages[NBR_DATA_IR_IDX_MAX];                                    
 
  136         Nbr nbrs[NEIGHBOR_MAX];                                         
 
  139         char message[IR_COMMS_MESSAGE_LENGTH_MAX];      
 
  149         Nbr* nbrs[NEIGHBOR_MAX];        
 
  159         uint8 orientationsBitsMatrix[IR_COMMS_NUM_OF_RECEIVERS];        
 
  160         uint8 rangeBits[IR_COMMS_NUM_OF_RECEIVERS];                                     
 
  177 void neighborsInit(uint32 neighbor_period);
 
  185 void neighborsDisable(
void);
 
  194 void neighborsXmitEnable(
boolean neighbor_xmit_enable_arg);
 
  203 void neighborsSetPeriod(uint32 neighbor_period_arg);
 
  214 void neighborsSetTimeoutRounds(uint8 timeoutRounds, uint8 minActive, uint8 maxInactive);
 
  222 uint32 neighborsGetPeriod(
void);
 
  226 void neighborsAddReceiveCallback(
void(*receiveCallbackArg)(
NbrDatabase* ndPtr));
 
  234 void neighborsGetMutex(
void);
 
  242 void neighborsPutMutex(
void);
 
  250 uint32 neighborsGetRound(
void);
 
  259 boolean neighborsNewRoundCheck(uint32* roundOldPtr);
 
  268 void neighborsIgnore(uint8 neighborID);
 
  275 uint8 irObstaclesGetBits(
void);
 
  283 uint8* irObstaclesGetRangeBits(
void);
 
  291 uint8* irObstaclesGetBitMatrix(
void);
 
  302 int16 irObstaclesGetBearing(
void);
 
  306 int8 irObstaclesGetBearingBitVector(
void);
 
  308 void obstacleExcludeNbrs(
NbrList* nbrListPtr, uint8* obstacleBitsGroupPtr, uint8* obstacleBitsCountPtr, int16* obstacleBearingPtr);
 
  316 void obstaclePrint(
void);
 
  318 uint32 pseudoRandNumGen(uint32 init, uint32 seed);
 
  329 uint8 nbrGetID(
Nbr* nbrPtr);
 
  338 int32 nbrGetBearing(
Nbr* nbrPtr);
 
  347 int32 nbrGetOrientation(
Nbr* nbrPtr);
 
  356 int32 nbrGetRange(
Nbr* nbrPtr);
 
  365 boolean nbrGetOrientationValid(
Nbr* nbrPtr);
 
  375 uint8 nbrGetRangeBits(
Nbr* nbrPtr);
 
  386 uint8 nbrGetReceiverBits(
Nbr* nbrPtr);
 
  397 uint8 nbrGetTransmitterBits(
Nbr* nbrPtr);
 
  406 uint32 nbrGetUpdateTime(
Nbr* nbrPtr);
 
  415 uint32 nbrGetUpdateRound(
Nbr* nbrPtr);
 
  427 void nbrPrint(
Nbr* nbr);
 
  441 void nbrPrintData(
Nbr* nbr, uint32 round);
 
  450 boolean nbrIsRobot(
Nbr* nbrPtr);
 
  459 boolean nbrIsBeacon(
Nbr* nbrPtr);
 
  463 boolean nbrIsCharger(
Nbr* nbrPtr);
 
  516 Nbr* nbrsGetWithID(uint8 nbrID);