Pavan Shetty / sensomed

Dependencies:   ds3231 maxim_dev nexpaq_mdk MAX30102

Fork of IO_Demo by nexpaq

Revision:
0:088641a122ff
Child:
1:5fb525e83780
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Nov 08 18:38:59 2016 +0000
@@ -0,0 +1,162 @@
+#include "mbed.h"
+#include "nexpaq_mdk.h"
+
+PwmOut ledR(P2_4);
+PwmOut ledG(P2_5);
+PwmOut ledB(P2_6);
+AnalogIn aIn0(AIN_0);
+AnalogIn aIn1(AIN_1);
+AnalogIn aIn2(AIN_2);
+AnalogIn aIn3(AIN_3);
+AnalogIn aIn4(AIN_4);
+AnalogIn aIn5(AIN_5);
+DigitalInOut digPin[] = {DigitalInOut(P0_1),DigitalInOut(P0_0),DigitalInOut(P1_2),DigitalInOut(P1_1),
+                         DigitalInOut(P1_0),DigitalInOut(P1_3),DigitalInOut(P1_7),DigitalInOut(P1_6),
+                         DigitalInOut(P3_0),DigitalInOut(P3_1),DigitalInOut(P3_4),DigitalInOut(P3_5),
+                         DigitalInOut(P0_2),DigitalInOut(P0_3),DigitalInOut(P4_0),DigitalInOut(P4_1)
+                        };
+
+/***** Definitions *****/
+#define		FUNCTION_TABLE_NUM					2
+#define		UUID_NUM							16			// UUID number is 16, don't change it
+#define     LOOP_DELAY                          1000
+
+/***** Globals *****/
+void my_function_CMD_2700(unsigned char *pData, unsigned char len);
+void my_function_CMD_2702(unsigned char *pData, unsigned char len);
+const MDK_REGISTER_CMD my_cmd_func_table[FUNCTION_TABLE_NUM] = {
+    {0x2700, my_function_CMD_2700},		// Command -> function
+    {0x2702, my_function_CMD_2702},		// Command -> function
+};
+
+unsigned char dataOut[10];
+
+/***** Functions *****/
+void my_function_CMD_2700(unsigned char *pData, unsigned char len)
+{
+    unsigned char response = 0x00;
+    ledR = 1.0f - (pData[0] / 255.0f);
+    ledG = 1.0f - (pData[1] / 255.0f);
+    ledB = 1.0f - (pData[2] / 255.0f);
+    np_api_upload(0x2701, &response, 1);
+}
+
+void my_function_CMD_2702(unsigned char *pData, unsigned char len)
+{
+    unsigned char response = 0x00;
+    int pinIndex = pData[0];
+    int pinMode = pData[1];
+    switch(pinMode) {
+        case 0:
+        case 1:
+            digPin[pinIndex].mode(PullNone);
+            digPin[pinIndex].input();
+            break;
+        case 2:
+            digPin[pinIndex].mode(PullDown);
+            digPin[pinIndex].input();
+            break;
+        case 3:
+            digPin[pinIndex].mode(PullUp);
+            digPin[pinIndex].input();
+            break;
+        case 4:
+            digPin[pinIndex]=0;
+            digPin[pinIndex].output();
+            break;
+        case 5:
+            digPin[pinIndex]=1;
+            digPin[pinIndex].output();
+            break;
+    }
+    np_api_upload(0x2703, &response, 1);
+}
+
+void sendStatus()
+{
+    np_api_upload(0x2800, dataOut, 10);
+}
+
+/******************************************************************************/
+void app_setup()
+{
+    int i = 0;
+//	np_api_set_app_version(0, 0, 3);
+    if ( np_api_register((MDK_REGISTER_CMD*)my_cmd_func_table, FUNCTION_TABLE_NUM) == MDK_REGISTER_FAILD ) {
+        // Register failed handle code
+    }
+    ledR = 1.0f;
+    ledG = 1.0f;
+    ledB = 1.0f;
+    for (i = 0; i < 16; i++) {
+        digPin[i].mode(PullUp);
+        digPin[i].input();
+    }
+    for (i = 0; i < 10; i++) {
+        dataOut[i] = 0xFF;
+    }
+}
+
+void app_loop()
+{
+    int anaData;
+    anaData = aIn0.read_u16();
+    if (anaData >= 0xFFFF) {
+        anaData = anaData/5;
+        dataOut[0] = anaData;
+        dataOut[1] = anaData>>8;
+    } else {
+        anaData = aIn4.read_u16();
+        dataOut[0] = anaData;
+        dataOut[1] = anaData>>8;
+    }
+    anaData = aIn1.read_u16();
+    if (anaData >= 0xFFFF) {
+        anaData = anaData/5;
+        dataOut[2] = anaData;
+        dataOut[3] = anaData>>8;
+    } else {
+        anaData = aIn5.read_u16();
+        dataOut[2] = anaData;
+        dataOut[3] = anaData>>8;
+    }
+    anaData = aIn2.read_u16();
+    anaData = anaData/5;
+    dataOut[4] = anaData;
+    dataOut[5] = anaData>>8;
+    anaData = aIn3.read_u16();
+    anaData = anaData/5;
+    dataOut[6] = anaData;
+    dataOut[7] = anaData>>8;
+
+    dataOut[8] = (digPin[7].read()<<7) +
+                 (digPin[6].read()<<6) +
+                 (digPin[5].read()<<5) +
+                 (digPin[4].read()<<4) +
+                 (digPin[3].read()<<3) +
+                 (digPin[2].read()<<2) +
+                 (digPin[1].read()<<1) +
+                 (digPin[0].read());
+    dataOut[9] = (digPin[15].read()<<7) +
+                 (digPin[14].read()<<6) +
+                 (digPin[13].read()<<5) +
+                 (digPin[12].read()<<4) +
+                 (digPin[11].read()<<3) +
+                 (digPin[10].read()<<2) +
+                 (digPin[9].read()<<1) +
+                 (digPin[8].read());
+    sendStatus();
+}
+
+int main(void)
+{
+    np_api_init();
+    app_setup();
+    np_api_start();
+    while(1) {
+        app_loop();
+        np_api_bsl_chk();
+        Thread::wait(LOOP_DELAY);
+    }
+    return 0;
+}