Subversion Repositories NaviCtrl

Rev

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
/**************************************************************/