Revision b85b6b26
| core/src/aos_rtcan.c | ||
|---|---|---|
| 87 | 87 |
void pushRTCanMsg(rtcan_msg_t *msg,msgqueue_t* msgqueue){
|
| 88 | 88 |
if(msg != NULL){
|
| 89 | 89 |
if(msgqueueEmpty(msgqueue)){
|
| 90 |
msgqueue->head = msg; |
|
| 91 |
msgqueue->tail= msg; |
|
| 92 |
msg->next = NULL; |
|
| 90 |
queueInit(msg,msgqueue); |
|
| 93 | 91 |
return; |
| 94 | 92 |
} |
| 95 | 93 |
//todo special case handling |
| 96 | 94 |
if(msgqueue->tail != NULL){
|
| 97 | 95 |
if(msg->msgType == 10){
|
| 98 |
if(pushRTCanMsgSorted(msg,msgqueue) == true){
|
|
| 99 |
return;
|
|
| 100 |
};
|
|
| 96 |
if(pushRTCanMsgSorted(msg,msgqueue) == true){
|
|
| 97 |
return; |
|
| 98 |
}
|
|
| 101 | 99 |
} |
| 102 | 100 |
msgqueue->tail->next = msg; |
| 103 | 101 |
msg->next = NULL; |
| ... | ... | |
| 122 | 120 |
/* |
| 123 | 121 |
* @brief init Message Queue |
| 124 | 122 |
*/ |
| 125 |
void queueInit(rtcan_msg_t *head){
|
|
| 126 |
head->next = head; |
|
| 123 |
void queueInit(rtcan_msg_t *head,msgqueue_t* msgqueue){
|
|
| 124 |
msgqueue->size = 0; |
|
| 125 |
msgqueue->head = head; |
|
| 126 |
msgqueue->tail = head; |
|
| 127 |
head->next = NULL; |
|
| 128 |
msgqueue->size++; |
|
| 127 | 129 |
} |
| 128 | 130 |
|
| 129 | 131 |
/** |
Also available in: Unified diff