Przeglądaj źródła

add queue && can wait queue

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 4 lat temu
rodzic
commit
11aa66ac0d

+ 1 - 5
Applications/foc/park_clark.h

@@ -7,13 +7,9 @@
 static __INLINE void Rev_Park(dq_t *dq, float angle, alpha_beta_t *alpha_bata) {
 	float c,s;
 	normal_sincosf(angle, &s, &c);
-#if 1
+
 	alpha_bata->alpha = dq->Vd * c - dq->Vq * s;
 	alpha_bata->beta = dq->Vd * s + dq->Vq * c;
-#else
-	alpha_bata->alpha = dq->d * s + dq->q * c;
-	alpha_bata->beta = dq->d * c - dq->q * s;
-#endif
 }
 
 static __INLINE void Clark(float phaseU, float phaseV, float phaseW, alpha_beta_t *alpha_bata){

+ 72 - 0
Applications/os/queue.c

@@ -0,0 +1,72 @@
+#include "os/queue.h"
+#include "os/co_task.h"
+
+typedef struct {
+	u8 * buffer;
+	int16_t count;
+	int16_t esize;
+	int16_t w_pos;
+	int16_t r_pos;
+}queue_t;
+static __inline__ bool _have_write_space(queue_t *queue){
+	int16_t buffer_len = queue->count * queue->esize;
+	int16_t size = (queue->w_pos >= queue->r_pos)?(buffer_len - queue->w_pos + queue->r_pos):(queue->r_pos - queue->w_pos);
+	size -= queue->esize;
+	if (size <= 0){
+		return false;
+	}
+	return true;
+}
+
+static __inline__ bool _have_read_space(queue_t *queue){
+	int16_t buffer_len = queue->count * queue->esize;
+	int16_t size = (queue->r_pos > queue->w_pos) ? (buffer_len - queue->r_pos + queue->w_pos) : (queue->w_pos - queue->r_pos);
+	if (size < queue->esize){
+		return false;
+	}
+	return true;
+}
+
+void *queue_create(u16 queue_count, u16 esize){
+	queue_t *queue = (queue_t *)co_malloc(queue_count * esize + sizeof(queue_t));
+	if (queue == NULL) {
+		return NULL;
+	}
+	queue->buffer = (u8 *)(queue + 1);
+	queue->count = queue_count;
+	queue->esize = esize;
+	queue->w_pos = queue->r_pos = 0;
+	return queue;
+}
+bool queue_put(void *vqueue, void *data){
+	queue_t *queue = (queue_t *)vqueue;
+	if (!_have_write_space(queue)){
+		return false;
+	}
+
+	memcpy(queue->buffer + queue->w_pos, data, queue->esize);
+
+	queue->w_pos = queue->w_pos + queue->esize;
+	if (queue->w_pos == queue->count * queue->esize){
+		queue->w_pos = 0;
+	}
+	return true;
+
+}
+
+bool queue_get(void *vqueue, void *data) {
+	queue_t *queue = (queue_t *)vqueue;
+	if(!_have_read_space(queue)){
+		return false;
+	}
+	if (data) {
+		memcpy(data, queue->buffer + queue->r_pos, queue->esize);
+	}
+	queue->r_pos = queue->r_pos + queue->esize;
+	if (queue->r_pos == queue->count * queue->esize){
+		queue->r_pos = 0;
+	}
+	return true;
+}
+
+

+ 10 - 0
Applications/os/queue.h

@@ -0,0 +1,10 @@
+#ifndef _Queue_H__
+#define _Queue_H__
+#include "os/os_type.h"
+
+void *queue_create(u16 queue_count, u16 esize);
+bool queue_put(void *queue, void *data);
+bool queue_get(void *queue, void *data);
+
+#endif /* _Queue_H__ */
+

+ 35 - 6
Applications/prot/can_message.c

@@ -3,10 +3,13 @@
 #include "libs/logger.h"
 #include "libs/utils.h"
 #include "can_message.h"
+#include "wait_queue.h"
 
 #define MAX_CAN_MESSAGE 4
 static can_message_t messages[MAX_CAN_MESSAGE];
 static msg_list_t msg_list[10];
+static wait_queue_t wait_queue;
+
 
 static node_list_t _pending_list = LIST_HEAD_INIT(_pending_list);
 static node_list_t _idle_list = LIST_HEAD_INIT(_idle_list);
@@ -75,8 +78,31 @@ static can_message_t *get_message_by_id(can_id_t id){
 }
 
 
-s32 can_send_message(uint32_t can_id, u8 *data, int len){
-	return shark_can0_send_message(can_id, data, len);
+s32 can_send_message(uint32_t can_id, u8 *data, int len, s32 timeout){
+	can_id_t id;
+	id.id = can_id;
+	if (id.type != ptype_request || id.retry <= 1) {
+		return shark_can0_send_message(can_id, data, len) == 0?CAN_SEND_SUCCESS:CAN_SEND_ERROR;
+	}
+	s32 s_ret = CAN_SEND_NO_WAIT_QUEUE;
+	s32 index = wait_queue_add(&wait_queue, decoder_can_key(data));
+	if (index >= 0){
+		s_ret = CAN_SEND_TIMEOUT;
+		s32 retry = id.retry;
+		while(retry -- > 0) {
+			s_ret = shark_can0_send_message(can_id, data, len) == 0?CAN_SEND_SUCCESS:CAN_SEND_ERROR;
+			if (s_ret != CAN_SEND_SUCCESS){
+				continue;
+			}
+			s_ret = wait_queue_wait_key(&wait_queue, index, timeout)?CAN_SEND_SUCCESS:CAN_SEND_TIMEOUT;
+			if (s_ret == CAN_SEND_SUCCESS){
+				break;
+			}
+		}
+		wait_queue_delete_key(&wait_queue, index);
+	}
+	return s_ret;
+
 }
 
 static void handle_can_frame(void){
@@ -117,6 +143,9 @@ static void handle_can_frame(void){
 				memcpy(message->data + message->len, data, len);
 				message->len += len;
 				if (idx == total) { //last frame
+					if (id.type == ptype_response) {
+						wait_queue_key_acked(&wait_queue, message->key);
+					}
 					can_process_message(message);
 				}
 				message->idx = (idx + 1);
@@ -146,22 +175,22 @@ static void free_can_message(can_message_t *message){
 
 
 void can_send_response(uint8_t can_add, uint8_t *data, int len){
-	can_send_message(get_reponse_can_id(can_add), data, len);
+	can_send_message(get_reponse_can_id(can_add), data, len, 50);
 }
 
 void can_send_message_ack(can_message_t *msg, uint8_t success){
 	u8 response[3];
 	encoder_can_key(response, msg->key);
 	response[2] = success;
-	can_send_message(get_reponse_can_id(msg->src), response, 3);
+	can_send_message(get_reponse_can_id(msg->src), response, 3, 50);
 }
 
 
 void can_send_indicator(uint8_t can_add, uint8_t *data, int len){
-	can_send_message(get_indicator_can_id(can_add), data, len);
+	can_send_message(get_indicator_can_id(can_add), data, len, 50);
 }
 
 void can_send_request(uint8_t can_add, uint8_t *data, int len){
-	can_send_message(get_request_can_id(can_add,3), data, len);
+	can_send_message(get_request_can_id(can_add,3), data, len, 300);
 }
 

+ 1 - 1
Applications/prot/can_message.h

@@ -37,7 +37,7 @@ typedef struct {
 #define CAN_SEND_NO_WAIT_QUEUE -4
 
 void can_message_init(void);
-s32 can_send_message(uint32_t can_id, u8 *data, int len);
+s32 can_send_message(uint32_t can_id, u8 *data, int len, s32 timeout);
 
 static __inline__ uint32 get_can_id(u8 dest, u8 src, u8 type, u8 retry){
 	can_id_t id;

+ 5 - 5
Applications/prot/wait_queue.c

@@ -1,15 +1,16 @@
 #include "wait_queue.h"
+#include "os/co_task.h"
+#include "libs/utils.h"
 
 void wait_queue_init(wait_queue_t *queue, int max_size){
-	queue->keys = mem_zalloc(max_size * sizeof(response_t));
+	queue->keys = co_malloc(max_size * sizeof(response_t));
+	memset(queue->keys, 0, sizeof(max_size * sizeof(response_t)));
 	queue->max_key_count = max_size;
-	queue->qlock = xSemaphoreCreateMutex();
 }
 
 
 s32 wait_queue_add_buffer(wait_queue_t *queue, u16 key, u8*buffer, u16 len) {
 	s32 q_index = -1;
-	xSemaphoreTake(queue->qlock, Max_Delay);
 	for(int i = 0; i < queue->max_key_count; i++){
 		if (key == queue->keys[i].key){
 			q_index = -1;
@@ -24,7 +25,6 @@ s32 wait_queue_add_buffer(wait_queue_t *queue, u16 key, u8*buffer, u16 len) {
 		queue->keys[q_index].data_len= len;
 		queue->keys[q_index].resp_data= buffer;
 	}
-	xSemaphoreGive(queue->qlock);
 	return q_index;
 }
 
@@ -59,7 +59,7 @@ bool wait_queue_key_acked(wait_queue_t *queue, u16 key){
 s32 wait_queue_wait_key(wait_queue_t *queue, s32 index, s32 timeout) {
 	volatile response_t *resp_key = queue->keys + index;
 	while((resp_key->key != ACKED_KEY) && (timeout-- >= 0)){
-		task_delay(1);
+		co_task_delay(1);
 	}
 	if (resp_key->key == ACKED_KEY){
 		return resp_key->data_len;

+ 1 - 2
Applications/prot/wait_queue.h

@@ -1,5 +1,5 @@
 #pragma once
-#include "libs/os.h"
+#include "os/os_type.h"
 
 typedef struct {
 	u16 key;
@@ -10,7 +10,6 @@ typedef struct {
 typedef struct {
 	response_t  *keys;
 	u16    max_key_count;
-	QueueHandle_t qlock;
 }wait_queue_t;
 
 #define KEY_FLAGS_IDLE 0

+ 83 - 42
Project/MC100_OS.uvoptx

@@ -148,7 +148,24 @@
           <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_HD -FS08000000 -FL010000 -FP0($$Device:GD32F303CC$Flash\GD32F30x_HD.FLM))</Name>
         </SetRegEntry>
       </TargetDriverDllRegistry>
-      <Breakpoint/>
+      <Breakpoint>
+        <Bp>
+          <Number>0</Number>
+          <Type>0</Type>
+          <LineNumber>16</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>134232614</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>..\Applications\main.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\MC100\../Applications/main.c\16</Expression>
+        </Bp>
+      </Breakpoint>
       <WatchWindow1>
         <Ww>
           <count>0</count>
@@ -435,6 +452,18 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>18</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Applications\prot\wait_queue.c</PathWithFileName>
+      <FilenameWithoutPath>wait_queue.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
 
   <Group>
@@ -445,7 +474,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>18</FileNumber>
+      <FileNumber>19</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -457,7 +486,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>19</FileNumber>
+      <FileNumber>20</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -469,7 +498,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>20</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -481,7 +510,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>21</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -493,7 +522,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>22</FileNumber>
+      <FileNumber>23</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -503,6 +532,18 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>24</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Applications\os\queue.c</PathWithFileName>
+      <FilenameWithoutPath>queue.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
 
   <Group>
@@ -513,7 +554,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>23</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -525,7 +566,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>24</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -537,7 +578,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>25</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -549,7 +590,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>26</FileNumber>
+      <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -561,7 +602,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>27</FileNumber>
+      <FileNumber>29</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -573,7 +614,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>28</FileNumber>
+      <FileNumber>30</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -593,7 +634,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>29</FileNumber>
+      <FileNumber>31</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -605,7 +646,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>30</FileNumber>
+      <FileNumber>32</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -617,7 +658,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>31</FileNumber>
+      <FileNumber>33</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -629,7 +670,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>32</FileNumber>
+      <FileNumber>34</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -641,7 +682,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>33</FileNumber>
+      <FileNumber>35</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -653,7 +694,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>34</FileNumber>
+      <FileNumber>36</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -665,7 +706,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>35</FileNumber>
+      <FileNumber>37</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -677,7 +718,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>36</FileNumber>
+      <FileNumber>38</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -689,7 +730,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>37</FileNumber>
+      <FileNumber>39</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -701,7 +742,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>38</FileNumber>
+      <FileNumber>40</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -713,7 +754,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>39</FileNumber>
+      <FileNumber>41</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -725,7 +766,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>40</FileNumber>
+      <FileNumber>42</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -745,7 +786,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>41</FileNumber>
+      <FileNumber>43</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -757,7 +798,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>42</FileNumber>
+      <FileNumber>44</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -769,7 +810,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>43</FileNumber>
+      <FileNumber>45</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -781,7 +822,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>44</FileNumber>
+      <FileNumber>46</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -793,7 +834,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>45</FileNumber>
+      <FileNumber>47</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -805,7 +846,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>46</FileNumber>
+      <FileNumber>48</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -817,7 +858,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>47</FileNumber>
+      <FileNumber>49</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -829,7 +870,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>48</FileNumber>
+      <FileNumber>50</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -841,7 +882,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>49</FileNumber>
+      <FileNumber>51</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -853,7 +894,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>50</FileNumber>
+      <FileNumber>52</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -865,7 +906,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>51</FileNumber>
+      <FileNumber>53</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -877,7 +918,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>52</FileNumber>
+      <FileNumber>54</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -889,7 +930,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>53</FileNumber>
+      <FileNumber>55</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -901,7 +942,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>54</FileNumber>
+      <FileNumber>56</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -913,7 +954,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>55</FileNumber>
+      <FileNumber>57</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -925,7 +966,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>56</FileNumber>
+      <FileNumber>58</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -945,7 +986,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>57</FileNumber>
+      <FileNumber>59</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -957,7 +998,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>58</FileNumber>
+      <FileNumber>60</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>

+ 10 - 0
Project/MC100_OS.uvprojx

@@ -483,6 +483,11 @@
               <FileType>1</FileType>
               <FilePath>..\Applications\prot\can_message.c</FilePath>
             </File>
+            <File>
+              <FileName>wait_queue.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Applications\prot\wait_queue.c</FilePath>
+            </File>
           </Files>
         </Group>
         <Group>
@@ -513,6 +518,11 @@
               <FileType>1</FileType>
               <FilePath>..\Applications\os\timer.c</FilePath>
             </File>
+            <File>
+              <FileName>queue.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Applications\os\queue.c</FilePath>
+            </File>
           </Files>
         </Group>
         <Group>