Rev 244 | Rev 261 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 244 | Rev 245 | ||
---|---|---|---|
Line 52... | Line 52... | ||
52 | // + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
52 | // + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
53 | // + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
53 | // + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
54 | // + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
54 | // + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
55 | // + POSSIBILITY OF SUCH DAMAGE. |
55 | // + POSSIBILITY OF SUCH DAMAGE. |
56 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
56 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
57 | #include <string.h> |
- | |
58 | #include <stdarg.h> |
57 | #include <stdarg.h> |
59 | #include "91x_lib.h" |
58 | #include "91x_lib.h" |
60 | #include "mkprotocol.h" |
59 | #include "mkprotocol.h" |
61 | #include "ramfunc.h" |
60 | #include "ramfunc.h" |
62 | #include "usb.h" |
61 | #include "usb.h" |
Line 63... | Line -... | ||
63 | - | ||
64 | void Buffer_Clear(Buffer_t* pBuffer) |
- | |
65 | { |
- | |
66 | pBuffer->DataBytes = 0; |
- | |
67 | pBuffer->Position = 0; |
- | |
68 | pBuffer->Locked = FALSE; |
- | |
69 | } |
- | |
70 | - | ||
71 | void Buffer_Init(Buffer_t* pBuffer, u8* pDataBuffer, u16 DataBufferSize) |
- | |
72 | { |
- | |
73 | pBuffer->pData = pDataBuffer; |
- | |
74 | pBuffer->Size = DataBufferSize; |
- | |
75 | Buffer_Clear(pBuffer); |
- | |
76 | } |
- | |
77 | - | ||
78 | u8 Buffer_Copy(Buffer_t* pSrcBuffer, Buffer_t* pDstBuffer) |
- | |
79 | { |
- | |
80 | u8 retval = 0; |
- | |
81 | - | ||
82 | if( (pSrcBuffer != NULL) && (pDstBuffer != NULL) ) |
- | |
83 | { |
- | |
84 | if(pSrcBuffer->Locked && !(pDstBuffer->Locked) && (pDstBuffer->Size >= pSrcBuffer->DataBytes)) |
- | |
85 | { |
- | |
86 | memcpy(pDstBuffer->pData, pSrcBuffer->pData, pSrcBuffer->DataBytes); |
- | |
87 | pDstBuffer->DataBytes = pSrcBuffer->DataBytes; |
- | |
88 | pDstBuffer->Position = 0; |
- | |
89 | pDstBuffer->Locked = TRUE; |
- | |
90 | retval = 1; |
- | |
91 | } |
- | |
92 | } |
- | |
93 | return retval; |
- | |
94 | } |
- | |
95 | 62 | ||
96 | /**************************************************************/ |
63 | /**************************************************************/ |
97 | /* Create serial output frame */ |
64 | /* Create serial output frame */ |
98 | /**************************************************************/ |
65 | /**************************************************************/ |
99 | void MKProtocol_CreateSerialFrame(Buffer_t* pTxBuff, u8 CmdID, u8 Address, u8 numofbuffers , ...) //u8 *data, u8 len, .... |
66 | u8 MKProtocol_CreateSerialFrame(Buffer_t* pTxBuff, u8 CmdID, u8 Address, u8 numofbuffers , ...) //u8 *data, u8 len, .... |
100 | { |
67 | { |
Line 101... | Line 68... | ||
101 | va_list ap; |
68 | va_list ap; |
102 | 69 | ||
103 | u8 a,b,c; |
70 | u8 a,b,c; |
Line 104... | Line 71... | ||
104 | u8 ptr = 0; |
71 | u8 ptr = 0; |
105 | u16 tmpCRC = 0, i; |
72 | u16 tmpCRC = 0, i; |
Line 106... | Line 73... | ||
106 | 73 | ||
- | 74 | u8* pdata = NULL; |
|
107 | u8* pdata = NULL; |
75 | int len = 0; |
108 | int len = 0; |
76 | |
109 | 77 | if(pTxBuff->Locked == TRUE) return(0); |
|
110 | if(pTxBuff->Locked == FALSE) |
78 | |
111 | { // tx-buffer is not in use |
79 | // tx-buffer is not in use |
112 | // lock the buffer |
80 | // lock the buffer |
Line 180... | Line 148... | ||
180 | pTxBuff->pData[pTxBuff->Position++] = '=' + tmpCRC / 64; |
148 | pTxBuff->pData[pTxBuff->Position++] = '=' + tmpCRC / 64; |
181 | pTxBuff->pData[pTxBuff->Position++] = '=' + tmpCRC % 64; |
149 | pTxBuff->pData[pTxBuff->Position++] = '=' + tmpCRC % 64; |
182 | pTxBuff->pData[pTxBuff->Position++] = '\r'; |
150 | pTxBuff->pData[pTxBuff->Position++] = '\r'; |
183 | pTxBuff->DataBytes = pTxBuff->Position; |
151 | pTxBuff->DataBytes = pTxBuff->Position; |
184 | pTxBuff->Position = 0; // reset buffer position for transmision |
152 | pTxBuff->Position = 0; // reset buffer position for transmision |
185 | } // EOF buffer not in use |
153 | return(pTxBuff->Locked); |
186 | } |
154 | } |
Line 187... | Line 155... | ||
187 | 155 | ||
188 | // typical called in an UART Rx ISR |
156 | // typical called in an UART Rx ISR |
189 | /**************************************************************/ |
157 | /**************************************************************/ |