roneos
Operating System for the r-one robot
 All Data Structures Files Functions Variables Typedefs Groups
radioCommand.h
Go to the documentation of this file.
1 
10 #ifndef RADIOCMD_H_
11 #define RADIOCMD_H_
12 
13 /******** Defines ********/
14 
15 
16 /******** Structs ********/
17 //TODO Add field documentation
20 typedef struct RadioCmd {
21  uint8 type;
22  const char* name;
23  void (*funcPtr)(struct RadioCmd* radioCmdPtr, RadioMessage* message);
24  osQueueHandle messageQueue;
25  uint32 lastTimeStamp;
26  void* externalDataPtr;
27  struct RadioCmd* nextPtr;
28 } RadioCmd;
29 
30 /******** Functions ********/
31 
37 void radioCommandInit(void);
38 
47 void radioCommandAddCallback(RadioCmd* radioCmdPtr, const char* name, void(*funcPtr)(RadioCmd* radioCmdPtr, RadioMessage* message));
48 
59 void radioCommandAddQueue(RadioCmd* radioCmdPtr, const char* name, uint8 messageQueueSize);
60 
74 void radioCommandAdd(RadioCmd* radioCmdPtr,
75  const char* name,
76  void(*funcPtr)(RadioCmd* radioCmdPtr, RadioMessage* message),
77  uint8 messageQueueSize,
78  void* externalDataPtr);
79 
89 boolean radioCommandReceive(RadioCmd* radioCmdPtr, RadioMessage* messagePtr, uint32 maxDelay);
90 
98 boolean radioCommandReceiveNonBlocking(RadioCmd* radioCmdPtr, RadioMessage* messagePtr);
99 
108 void radioCommandXmit(RadioCmd* radioCmdPtr, uint8 destinationID, RadioMessage* message);
109 
117 boolean radioCommandTimeout(RadioCmd* radioCmdPtr, uint32 timeout);
118 
119 
126 uint8 radioCommandGetType(RadioMessage* messagePtr);
127 
134 uint8 radioCommandGetSubnet(RadioMessage* messagePtr);
135 
142 void radioCommandSetSubnet(uint8 subnet);
143 
150 char* radioCommandGetDataPtr(RadioMessage* messagePtr);
151 
152 
153 //TODO: implement, delete, or debug?
155 // * @brief Get radio command destination ID.
156 // *
157 // * @param messagePtr will contain the next message for the given radio command group
158 // * @returns radio command message destination ID
159 // */
160 //uint8 radioCommandGetDestID(RadioMessageRaw* messagePtr);
161 //void radioCommandXmit_internal(RadioCmd* radioCmdPtr, uint8 destinationID, RadioMessageRaw* radioMsgPtr);
162 //boolean radioCommandReceive_internal(RadioCmd* radioCmdPtr, RadioMessageRaw* messagePtr, uint32 maxDelay);
163 //boolean radioCommandReceiveNonBlocking_internal(RadioCmd* radioCmdPtr, RadioMessageRaw* messagePtr);
164 
165 
166 #endif /* RADIOCMD_H_ */