morten opprud / Mbed 2 deprecated ulx_datalogger

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
morten_opprud
Date:
Tue Sep 04 05:48:43 2012 +0000
Parent:
1:df4e9da66448
Commit message:
cleaned a bit before comitting, !NOTE! byte stuffing/unstuffing still needs wors, also CRC on incoming data is to be done

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
unilynx.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Tue Aug 28 19:53:42 2012 +0000
+++ b/main.cpp	Tue Sep 04 05:48:43 2012 +0000
@@ -15,6 +15,7 @@
     pc.baud(115200);
     /* setup RS485 */
     rs485init();
+    pc.printf("ULX Data logger init, build %s",__TIME__);
 
     while(1) 
     {
--- a/unilynx.cpp	Tue Aug 28 19:53:42 2012 +0000
+++ b/unilynx.cpp	Tue Sep 04 05:48:43 2012 +0000
@@ -42,19 +42,6 @@
 { 0x7E, 0xFF, 0x03, 0x00, 0x02, 0xFF, 0xFF, 0x00, 0x15, 0xB1, 0x8B, 0x7E };
 
 
-
-/*const char getNodeReqStr[41] =
-{ 0x7E, 0xFF, 0x03, 0x00, 0x02, 0x12, 0x03, 0x1D, 0x13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-        0xFF, 0xC9, 0x35, 0x7E };
-*/
-/*
-const char getNodeReqStr[41] =
-{ 0x7E, 0xFF, 0x03, 0x00, 0x02, 0x12, 0x03, 0x1D, 0x13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-        0xFF, 0xC9, 0x35, 0x7E };
-*/
-
 char pingAllStrWoCrc[12] =
 { 0x7E, 0xFF, 0x03, 0x00, 0x02, 0xFF, 0xFF, 0x00, 0x15, 0, 0, 0x7E };
 //{ 0x7E, 0xFF, 0x03, 0x00, 0x02, 0x12, 0x03, 0x00, 0x15, 0, 0, 0x7E };
@@ -72,6 +59,9 @@
 
 char tx[40];
 
+/*
+    Steup RS 485 ON UART1,using DTR for direction control on RS485
+*/
 void rs485init(void)
 {
     rs485.baud(19200);
@@ -94,11 +84,25 @@
 {
     int i;
     i=0;
-    while(i < len) {
-        rs485.putc(*(str +i));
+    while(i < len) 
+    {
+        /* Byte stuff needed ? */
+/*        if((*(str +i)) == 0x7E)
+        {
+            rs485.putc(0x7D);
+            rs485.putc(0x5E);
+        }        
+        else if((*(str +i)) == 0x7D)
+        {
+            rs485.putc(0x7D);
+            rs485.putc(0x5D);
+        }   
+        /* 
+        /* nope, TX as usual */            
+        //else
+            rs485.putc(*(str +i));
+        /* incr. index */
         i++;
-        //TODO byte stuff
-
     }
 }
 
@@ -108,8 +112,28 @@
     i=0;
     while(i < len) {
         (*(str +i)) = rs485.getc();
+
+#if 0
+        /* Byte unstuff needed ? */
+        if(((*(str +i-1)) == 0x7D) &&((*(str +i)) == 0x5E))
+        {
+            /* subtract first bytestuff-byte w 0x7E*/
+            (*(str +i-1)) = 0x7E;
+            /*decrement indenx, so next byte will contain next RX char, 
+            and not byte-stuff leftovers..*/
+            i--;
+            /*and btw. we need read one more char, since byte stuff has added one...*/
+            len++;
+        }        
+        else if(((*(str +i-1)) == 0x7D) &&((*(str +i)) == 0x5D))
+
+        {
+            (*(str +i-1)) = 0x7D;
+            i--;
+            len++;
+        }    
+#endif
         i++;
-        //TODO byte unstuff
         //TODO add timeout
     }
 }
@@ -169,7 +193,7 @@
     getNodeParamStrWoCrc[11] = 0xD0;//((source<<4) | page);
     getNodeParamStrWoCrc[12] = (param_idx);
     getNodeParamStrWoCrc[13] = (param_sub_idx);
-    getNodeParamStrWoCrc[14] = 0x80;//	we want reply (DO_REPLY | IM_REQUEST | TYPE_U16);
+    getNodeParamStrWoCrc[14] = 0x80;//    we want reply (DO_REPLY | IM_REQUEST | TYPE_U16);
     getNodeParamStrWoCrc[15] = 0;
     getNodeParamStrWoCrc[16] = 0;
     getNodeParamStrWoCrc[17] = 0;
@@ -190,11 +214,11 @@
     flags = rx[14];
 
     switch (flags & 0x0F) {
-        case 0x06:	//decode U16
+        case 0x06:    //decode U16
             u16val = ((rx[16]<<8)+rx[15]);
             return (int)u16val;
             break;
-        case 0x07:	//decode U32
+        case 0x07:    //decode U32
             u32val = ((rx[18]<<24)+(rx[17]<<16)+(rx[16]<<8)+rx[15]);
             return u32val;
             break;