Subversion Repositories Code-Repo

Rev

Rev 113 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 113 Rev 114
Line 68... Line 68...
68
    MQ_init_queue(&MQ_ToMainFromHigh);
68
    MQ_init_queue(&MQ_ToMainFromHigh);
69
    MQ_init_queue(&MQ_FromMainToLow);
69
    MQ_init_queue(&MQ_FromMainToLow);
70
    MQ_init_queue(&MQ_FromMainToHigh);
70
    MQ_init_queue(&MQ_FromMainToHigh);
71
}
71
}
72
 
72
 
73
signed char MQ_send_msg(msg_queue *qptr,unsigned char length,unsigned char msgtype, void *data) {
73
signed int MQ_send_msg(msg_queue *qptr,unsigned char length,unsigned char msgtype, void *data) {
74
    unsigned char slot;
74
    unsigned char slot;
75
    msg *qmsg;
75
    msg *qmsg;
76
    size_t tlength = length;
76
    size_t tlength = length;
77
 
77
 
78
#ifdef DEBUG
78
#ifdef DEBUG
Line 108... Line 108...
108
    // Mark the slot in the queue as filled and return
108
    // Mark the slot in the queue as filled and return
109
    qmsg->full = 1;
109
    qmsg->full = 1;
110
    return(MSG_SEND_OKAY);
110
    return(MSG_SEND_OKAY);
111
}
111
}
112
 
112
 
113
signed char MQ_recv_msg(msg_queue *qptr, unsigned char maxlength, unsigned char *msgtype, void *data) {
113
signed int MQ_recv_msg(msg_queue *qptr, unsigned char maxlength, unsigned char *msgtype, void *data) {
114
    unsigned char slot;
114
    unsigned char slot;
115
    msg *qmsg;
115
    msg *qmsg;
116
    size_t tlength;
116
    size_t tlength;
117
 
117
 
118
    // Get the index in the message queue to read from
118
    // Get the index in the message queue to read from
Line 184... Line 184...
184
    sleep
184
    sleep
185
    _endasm
185
    _endasm
186
}
186
}
187
 
187
 
188
/* Message Queue 1 - Low Interrupt -> Main */
188
/* Message Queue 1 - Low Interrupt -> Main */
189
signed char MQ_sendmsg_ToMainFromLow(unsigned char length, unsigned char msgtype, void *data) {
189
signed int MQ_sendmsg_ToMainFromLow(unsigned char length, unsigned char msgtype, void *data) {
190
#ifdef DEBUG
190
#ifdef DEBUG
191
    if (!interrupt_in_low_interrupt_routine()) {
191
    if (!interrupt_in_low_interrupt_routine()) {
192
        return (MSG_NOT_IN_LOW);
192
        return (MSG_NOT_IN_LOW);
193
    }
193
    }
194
#endif
194
#endif
195
    return (MQ_send_msg(&MQ_ToMainFromLow, length, msgtype, data));
195
    return (MQ_send_msg(&MQ_ToMainFromLow, length, msgtype, data));
196
}
196
}
197
 
197
 
198
signed char MQ_recvmsg_ToMainFromLow(unsigned char maxlength, unsigned char *msgtype, void *data) {
198
signed int MQ_recvmsg_ToMainFromLow(unsigned char maxlength, unsigned char *msgtype, void *data) {
199
#ifdef DEBUG
199
#ifdef DEBUG
200
    if (!interrupt_in_main_routine()) {
200
    if (!interrupt_in_main_routine()) {
201
        return (MSG_NOT_IN_MAIN);
201
        return (MSG_NOT_IN_MAIN);
202
    }
202
    }
203
#endif
203
#endif
204
    return (MQ_recv_msg(&MQ_ToMainFromLow, maxlength, msgtype, data));
204
    return (MQ_recv_msg(&MQ_ToMainFromLow, maxlength, msgtype, data));
205
}
205
}
206
 
206
 
207
unsigned char MQ_peek_ToMainFromLow() {
207
unsigned int MQ_peek_ToMainFromLow() {
208
    return (MQ_peek_msg(&MQ_ToMainFromLow));
208
    return (MQ_peek_msg(&MQ_ToMainFromLow));
209
}
209
}
210
 
210
 
211
/* Message Queue 2 - High Interrupt -> Main */
211
/* Message Queue 2 - High Interrupt -> Main */
212
signed char MQ_sendmsg_ToMainFromHigh(unsigned char length, unsigned char msgtype, void *data) {
212
signed int MQ_sendmsg_ToMainFromHigh(unsigned char length, unsigned char msgtype, void *data) {
213
#ifdef DEBUG
213
#ifdef DEBUG
214
    if (!interrupt_in_high_interrupt_routine()) {
214
    if (!interrupt_in_high_interrupt_routine()) {
215
        return (MSG_NOT_IN_HIGH);
215
        return (MSG_NOT_IN_HIGH);
216
    }
216
    }
217
#endif
217
#endif
218
    return (MQ_send_msg(&MQ_ToMainFromHigh, length, msgtype, data));
218
    return (MQ_send_msg(&MQ_ToMainFromHigh, length, msgtype, data));
219
}
219
}
220
 
220
 
221
signed char MQ_recvmsg_ToMainFromHigh(unsigned char maxlength, unsigned char *msgtype, void *data) {
221
signed int MQ_recvmsg_ToMainFromHigh(unsigned char maxlength, unsigned char *msgtype, void *data) {
222
#ifdef DEBUG
222
#ifdef DEBUG
223
    if (!interrupt_in_main_routine()) {
223
    if (!interrupt_in_main_routine()) {
224
        return (MSG_NOT_IN_MAIN);
224
        return (MSG_NOT_IN_MAIN);
225
    }
225
    }
226
#endif
226
#endif
227
    return (MQ_recv_msg(&MQ_ToMainFromHigh, maxlength, msgtype, data));
227
    return (MQ_recv_msg(&MQ_ToMainFromHigh, maxlength, msgtype, data));
228
}
228
}
229
 
229
 
230
unsigned char MQ_peek_ToMainFromHigh() {
230
unsigned int MQ_peek_ToMainFromHigh() {
231
    return (MQ_peek_msg(&MQ_ToMainFromHigh));
231
    return (MQ_peek_msg(&MQ_ToMainFromHigh));
232
}
232
}
233
 
233
 
234
/* Message Queue 3 - Main -> Low Interrupt */
234
/* Message Queue 3 - Main -> Low Interrupt */
235
signed char MQ_sendmsg_FromMainToLow(unsigned char length, unsigned char msgtype, void *data) {
235
signed int MQ_sendmsg_FromMainToLow(unsigned char length, unsigned char msgtype, void *data) {
236
#ifdef DEBUG
236
#ifdef DEBUG
237
    if (!interrupt_in_main_routine()) {
237
    if (!interrupt_in_main_routine()) {
238
        return (MSG_NOT_IN_MAIN);
238
        return (MSG_NOT_IN_MAIN);
239
    }
239
    }
240
#endif
240
#endif
241
    return (MQ_send_msg(&MQ_FromMainToLow, length, msgtype, data));
241
    return (MQ_send_msg(&MQ_FromMainToLow, length, msgtype, data));
242
}
242
}
243
 
243
 
244
signed char MQ_recvmsg_FromMainToLow(unsigned char maxlength, unsigned char *msgtype, void *data) {
244
signed int MQ_recvmsg_FromMainToLow(unsigned char maxlength, unsigned char *msgtype, void *data) {
245
#ifdef DEBUG
245
#ifdef DEBUG
246
    if (!interrupt_in_low_interrupt_routine()) {
246
    if (!interrupt_in_low_interrupt_routine()) {
247
        return (MSG_NOT_IN_LOW);
247
        return (MSG_NOT_IN_LOW);
248
    }
248
    }
249
#endif
249
#endif
250
    return (MQ_recv_msg(&MQ_FromMainToLow, maxlength, msgtype, data));
250
    return (MQ_recv_msg(&MQ_FromMainToLow, maxlength, msgtype, data));
251
}
251
}
252
 
252
 
253
unsigned char MQ_peek_FromMainToLow() {
253
unsigned int MQ_peek_FromMainToLow() {
254
    return (MQ_peek_msg(&MQ_FromMainToLow));
254
    return (MQ_peek_msg(&MQ_FromMainToLow));
255
}
255
}
256
 
256
 
257
/* Message Queue 4 - Main -> High Interrupt */
257
/* Message Queue 4 - Main -> High Interrupt */
258
signed char MQ_sendmsg_FromMainToHigh(unsigned char length, unsigned char msgtype, void *data) {
258
signed int MQ_sendmsg_FromMainToHigh(unsigned char length, unsigned char msgtype, void *data) {
259
#ifdef DEBUG
259
#ifdef DEBUG
260
    if (!interrupt_in_main_routine()) {
260
    if (!interrupt_in_main_routine()) {
261
        return (MSG_NOT_IN_MAIN);
261
        return (MSG_NOT_IN_MAIN);
262
    }
262
    }
263
#endif
263
#endif
264
    return (MQ_send_msg(&MQ_FromMainToHigh, length, msgtype, data));
264
    return (MQ_send_msg(&MQ_FromMainToHigh, length, msgtype, data));
265
}
265
}
266
 
266
 
267
signed char MQ_recvmsg_FromMainToHigh(unsigned char maxlength, unsigned char *msgtype, void *data) {
267
signed int MQ_recvmsg_FromMainToHigh(unsigned char maxlength, unsigned char *msgtype, void *data) {
268
#ifdef DEBUG
268
#ifdef DEBUG
269
    if (!interrupt_in_high_interrupt_routine()) {
269
    if (!interrupt_in_high_interrupt_routine()) {
270
        return (MSG_NOT_IN_HIGH);
270
        return (MSG_NOT_IN_HIGH);
271
    }
271
    }
272
#endif
272
#endif
273
    return (MQ_recv_msg(&MQ_FromMainToHigh, maxlength, msgtype, data));
273
    return (MQ_recv_msg(&MQ_FromMainToHigh, maxlength, msgtype, data));
274
}
274
}
275
 
275
 
276
unsigned char MQ_peek_FromMainToHigh() {
276
unsigned int MQ_peek_FromMainToHigh() {
277
    return (MQ_peek_msg(&MQ_FromMainToHigh));
277
    return (MQ_peek_msg(&MQ_FromMainToHigh));
278
}
278
}
279
 
279
 
280
// This should only be called from a High Priority Interrupt
280
// This should only be called from a High Priority Interrupt
281
void MQ_sleep_high_interrupt_if_okay() {
281
void MQ_sleep_high_interrupt_if_okay() {