Eli Hughes
/
InternetOfThing
2014 Freescale / Hack A Day Make It Challenge FRDM-K64 Internet of "Thing"
Queue.cpp@0:423d5729e94e, 2014-04-10 (annotated)
- Committer:
- emh203
- Date:
- Thu Apr 10 21:14:23 2014 +0000
- Revision:
- 0:423d5729e94e
1st add. Used for final demo
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
emh203 | 0:423d5729e94e | 1 | /* |
emh203 | 0:423d5729e94e | 2 | |
emh203 | 0:423d5729e94e | 3 | -------------------------------------------- |
emh203 | 0:423d5729e94e | 4 | | | |
emh203 | 0:423d5729e94e | 5 | | .... | |
emh203 | 0:423d5729e94e | 6 | | 7OO$?I78. | |
emh203 | 0:423d5729e94e | 7 | | .?8++++7+II?D. | |
emh203 | 0:423d5729e94e | 8 | | .?O++=I++II+?= | |
emh203 | 0:423d5729e94e | 9 | | .IO++?7==I??$. | |
emh203 | 0:423d5729e94e | 10 | | .8++=$===?+I$ | |
emh203 | 0:423d5729e94e | 11 | | ?+++===+===+ | |
emh203 | 0:423d5729e94e | 12 | | ???=+I++==+? | |
emh203 | 0:423d5729e94e | 13 | | .??++====+==++ | |
emh203 | 0:423d5729e94e | 14 | | ?+++==========~ | |
emh203 | 0:423d5729e94e | 15 | | $+++==========+= | |
emh203 | 0:423d5729e94e | 16 | | =?+===+==+I======== | |
emh203 | 0:423d5729e94e | 17 | | ..++======~~~~========? | |
emh203 | 0:423d5729e94e | 18 | | .$?I??+=~~===~~~===~===++. | |
emh203 | 0:423d5729e94e | 19 | | .+==.+=~~~=~==~~~~==~~=~==+? | |
emh203 | 0:423d5729e94e | 20 | | ?===I+====~~=~~~=~~=====~~~=?. | |
emh203 | 0:423d5729e94e | 21 | | .=~~~+==~==..~~~~~~= ~~~~=7= | |
emh203 | 0:423d5729e94e | 22 | | +=~~?+~~=. ==~~~~=. ~~~~=?. | |
emh203 | 0:423d5729e94e | 23 | | =~~~=~~~ ?===~~+. ~~~~+ | |
emh203 | 0:423d5729e94e | 24 | | +~~:+~~= =~~==. =~~+. | |
emh203 | 0:423d5729e94e | 25 | | ~:~ =~~= =~~~= ~=== | |
emh203 | 0:423d5729e94e | 26 | | I=~~ ,=~~= ,. | |
emh203 | 0:423d5729e94e | 27 | | ~~. ,==== | |
emh203 | 0:423d5729e94e | 28 | | ==== | |
emh203 | 0:423d5729e94e | 29 | | =~~. | |
emh203 | 0:423d5729e94e | 30 | | | |
emh203 | 0:423d5729e94e | 31 | |------------------------------------------| |
emh203 | 0:423d5729e94e | 32 | | Internet Of Thing | |
emh203 | 0:423d5729e94e | 33 | | Eli Hughes | |
emh203 | 0:423d5729e94e | 34 | | Freescale / Hack-a-day Make-It-Challenge | |
emh203 | 0:423d5729e94e | 35 | | FTF 2014 - Dallas, Tx | |
emh203 | 0:423d5729e94e | 36 | |------------------------------------------| |
emh203 | 0:423d5729e94e | 37 | |
emh203 | 0:423d5729e94e | 38 | */ |
emh203 | 0:423d5729e94e | 39 | #include "stdint.h" |
emh203 | 0:423d5729e94e | 40 | #include "Queue.h" |
emh203 | 0:423d5729e94e | 41 | #include <string.h> |
emh203 | 0:423d5729e94e | 42 | |
emh203 | 0:423d5729e94e | 43 | static char StringBuffer[256]; |
emh203 | 0:423d5729e94e | 44 | |
emh203 | 0:423d5729e94e | 45 | void InitByteQueue(ByteQueue *BQ,uint16_t Size,uint8_t * Storage) { |
emh203 | 0:423d5729e94e | 46 | uint16_t i; |
emh203 | 0:423d5729e94e | 47 | |
emh203 | 0:423d5729e94e | 48 | BQ->QueueSize = Size; |
emh203 | 0:423d5729e94e | 49 | BQ->ReadPtr=0; |
emh203 | 0:423d5729e94e | 50 | BQ->WritePtr=0; |
emh203 | 0:423d5729e94e | 51 | BQ->QueueStorage = Storage; |
emh203 | 0:423d5729e94e | 52 | |
emh203 | 0:423d5729e94e | 53 | for (i=0;i<BQ->QueueSize;i++) { |
emh203 | 0:423d5729e94e | 54 | BQ->QueueStorage[i] = 0; |
emh203 | 0:423d5729e94e | 55 | } |
emh203 | 0:423d5729e94e | 56 | } |
emh203 | 0:423d5729e94e | 57 | |
emh203 | 0:423d5729e94e | 58 | uint16_t BytesInQueue(ByteQueue *BQ) { |
emh203 | 0:423d5729e94e | 59 | if (BQ->ReadPtr > BQ->WritePtr) { |
emh203 | 0:423d5729e94e | 60 | return (BQ->QueueSize - BQ->ReadPtr + BQ->WritePtr); |
emh203 | 0:423d5729e94e | 61 | } else if (BQ->WritePtr > BQ->ReadPtr) { |
emh203 | 0:423d5729e94e | 62 | return (BQ->WritePtr - BQ->ReadPtr); |
emh203 | 0:423d5729e94e | 63 | } else { |
emh203 | 0:423d5729e94e | 64 | return 0; |
emh203 | 0:423d5729e94e | 65 | } |
emh203 | 0:423d5729e94e | 66 | } |
emh203 | 0:423d5729e94e | 67 | |
emh203 | 0:423d5729e94e | 68 | int16_t ByteEnqueue(ByteQueue *BQ,uint8_t Val) { |
emh203 | 0:423d5729e94e | 69 | if (BytesInQueue(BQ) == BQ->QueueSize - 1) { |
emh203 | 0:423d5729e94e | 70 | return QUEUE_FULL; |
emh203 | 0:423d5729e94e | 71 | } else { |
emh203 | 0:423d5729e94e | 72 | BQ->QueueStorage[BQ->WritePtr] = Val; |
emh203 | 0:423d5729e94e | 73 | BQ->WritePtr++; |
emh203 | 0:423d5729e94e | 74 | |
emh203 | 0:423d5729e94e | 75 | if (BQ->WritePtr >= BQ->QueueSize) { |
emh203 | 0:423d5729e94e | 76 | BQ->WritePtr = 0; |
emh203 | 0:423d5729e94e | 77 | } |
emh203 | 0:423d5729e94e | 78 | return QUEUE_OK; |
emh203 | 0:423d5729e94e | 79 | } |
emh203 | 0:423d5729e94e | 80 | } |
emh203 | 0:423d5729e94e | 81 | |
emh203 | 0:423d5729e94e | 82 | int16_t ByteArrayEnqueue(ByteQueue *BQ,uint8_t *Buf,uint16_t Len) { |
emh203 | 0:423d5729e94e | 83 | uint16_t i; |
emh203 | 0:423d5729e94e | 84 | for (i=0;i<Len;i++) { |
emh203 | 0:423d5729e94e | 85 | ByteEnqueue(BQ,Buf[i]); |
emh203 | 0:423d5729e94e | 86 | } |
emh203 | 0:423d5729e94e | 87 | return QUEUE_OK; |
emh203 | 0:423d5729e94e | 88 | } |
emh203 | 0:423d5729e94e | 89 | |
emh203 | 0:423d5729e94e | 90 | |
emh203 | 0:423d5729e94e | 91 | int16_t Qprintf(ByteQueue *BQ, const char *FormatString,...) |
emh203 | 0:423d5729e94e | 92 | { |
emh203 | 0:423d5729e94e | 93 | |
emh203 | 0:423d5729e94e | 94 | va_list argptr; |
emh203 | 0:423d5729e94e | 95 | va_start(argptr,FormatString); |
emh203 | 0:423d5729e94e | 96 | vsprintf((char *)StringBuffer,FormatString,argptr); |
emh203 | 0:423d5729e94e | 97 | va_end(argptr); |
emh203 | 0:423d5729e94e | 98 | |
emh203 | 0:423d5729e94e | 99 | return ByteArrayEnqueue(BQ,(uint8_t *)StringBuffer,strlen(StringBuffer)); |
emh203 | 0:423d5729e94e | 100 | } |
emh203 | 0:423d5729e94e | 101 | |
emh203 | 0:423d5729e94e | 102 | |
emh203 | 0:423d5729e94e | 103 | int16_t ByteDequeue(ByteQueue *BQ,uint8_t *Val) { |
emh203 | 0:423d5729e94e | 104 | |
emh203 | 0:423d5729e94e | 105 | if (BytesInQueue(BQ) == 0) { |
emh203 | 0:423d5729e94e | 106 | return QUEUE_EMPTY; |
emh203 | 0:423d5729e94e | 107 | } else { |
emh203 | 0:423d5729e94e | 108 | *Val = BQ->QueueStorage[BQ->ReadPtr]; |
emh203 | 0:423d5729e94e | 109 | |
emh203 | 0:423d5729e94e | 110 | BQ->ReadPtr++; |
emh203 | 0:423d5729e94e | 111 | |
emh203 | 0:423d5729e94e | 112 | if (BQ->ReadPtr >= BQ->QueueSize) { |
emh203 | 0:423d5729e94e | 113 | BQ->ReadPtr = 0; |
emh203 | 0:423d5729e94e | 114 | } |
emh203 | 0:423d5729e94e | 115 | return QUEUE_OK; |
emh203 | 0:423d5729e94e | 116 | } |
emh203 | 0:423d5729e94e | 117 | } |
emh203 | 0:423d5729e94e | 118 | |
emh203 | 0:423d5729e94e | 119 | uint8_t ForcedByteDequeue(ByteQueue *BQ) |
emh203 | 0:423d5729e94e | 120 | { |
emh203 | 0:423d5729e94e | 121 | uint8_t RetVal; |
emh203 | 0:423d5729e94e | 122 | |
emh203 | 0:423d5729e94e | 123 | if (BytesInQueue(BQ) == 0) { |
emh203 | 0:423d5729e94e | 124 | return 0; |
emh203 | 0:423d5729e94e | 125 | } else { |
emh203 | 0:423d5729e94e | 126 | RetVal = BQ->QueueStorage[BQ->ReadPtr]; |
emh203 | 0:423d5729e94e | 127 | |
emh203 | 0:423d5729e94e | 128 | BQ->ReadPtr++; |
emh203 | 0:423d5729e94e | 129 | |
emh203 | 0:423d5729e94e | 130 | if (BQ->ReadPtr >= BQ->QueueSize) { |
emh203 | 0:423d5729e94e | 131 | BQ->ReadPtr = 0; |
emh203 | 0:423d5729e94e | 132 | } |
emh203 | 0:423d5729e94e | 133 | return RetVal; |
emh203 | 0:423d5729e94e | 134 | } |
emh203 | 0:423d5729e94e | 135 | } |