Trond Enger / d7a_1x

Fork of d7a_1x by WizziLab

Committer:
Jeej
Date:
Thu Jan 05 12:59:13 2017 +0000
Revision:
83:f4054d0b29ba
Parent:
79:82b01c1a62f6
Child:
84:e5388f1b8ed9
Selective FPRINT

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jeej 25:aac250164497 1 #include "mbed.h"
Jeej 25:aac250164497 2 #include "rtos.h"
Jeej 25:aac250164497 3 #include "dbg.h"
Jeej 25:aac250164497 4 #include "d7a_com.h"
Jeej 25:aac250164497 5 #include "d7a_common.h"
Jeej 25:aac250164497 6 #include "d7a_fs.h"
Jeej 25:aac250164497 7 #include "d7a_sys.h"
Jeej 43:28202405094d 8 #include "d7a.h"
Jeej 25:aac250164497 9
Jeej 79:82b01c1a62f6 10 #if 0
Jeej 79:82b01c1a62f6 11 #define SYS_DPRINT(...) DPRINT(__VA_ARGS__)
Jeej 79:82b01c1a62f6 12 #define SYS_DPRINT_DATA(...) DPRINT_DATA(__VA_ARGS__)
Jeej 83:f4054d0b29ba 13 #define SYS_FPRINT(...) FPRINT(__VA_ARGS__)
Jeej 79:82b01c1a62f6 14 #else
Jeej 79:82b01c1a62f6 15 #define SYS_DPRINT(...);
Jeej 79:82b01c1a62f6 16 #define SYS_DPRINT_DATA(...);
Jeej 83:f4054d0b29ba 17 #define SYS_FPRINT(...);
Jeej 79:82b01c1a62f6 18 #endif
Jeej 79:82b01c1a62f6 19
Jeej 78:f1c0affd99e7 20 static Thread g_sys_thread(osPriorityHigh, 512, NULL);
Jeej 77:8c792719a1fc 21 static Queue<d7a_com_rx_msg_t, 8> g_sys_pkt_queue;
Jeej 77:8c792719a1fc 22 static Queue<bool, 1> g_sys_wait_pong;
Jeej 25:aac250164497 23
Jeej 76:fda2e34ff19d 24 void d7a_sys_thread();
Jeej 25:aac250164497 25
Jeej 56:da34fc11e760 26 d7a_errors_t d7a_sys_open(void)
Jeej 25:aac250164497 27 {
Jeej 83:f4054d0b29ba 28 SYS_FPRINT("\r\n");
Jeej 76:fda2e34ff19d 29
Jeej 77:8c792719a1fc 30 osStatus err = g_sys_thread.start(d7a_sys_thread);
Jeej 76:fda2e34ff19d 31 ASSERT(err == osOK, "Failed to start d7a_sys_thread (err: %d)\r\n", err);
Jeej 49:81d5bddb02f0 32
Jeej 49:81d5bddb02f0 33 return D7A_ERR_NONE;
Jeej 25:aac250164497 34 }
Jeej 25:aac250164497 35
Jeej 56:da34fc11e760 36 d7a_errors_t d7a_sys_close(void)
Jeej 56:da34fc11e760 37 {
Jeej 83:f4054d0b29ba 38 SYS_FPRINT("\r\n");
Jeej 56:da34fc11e760 39
Jeej 77:8c792719a1fc 40 g_sys_thread.terminate();
Jeej 56:da34fc11e760 41
Jeej 56:da34fc11e760 42 return D7A_ERR_NONE;
Jeej 56:da34fc11e760 43 }
Jeej 56:da34fc11e760 44
Jeej 25:aac250164497 45 void d7a_sys_new_pkt(d7a_com_rx_msg_t* pkt)
Jeej 25:aac250164497 46 {
Jeej 83:f4054d0b29ba 47 SYS_FPRINT("\r\n");
Jeej 77:8c792719a1fc 48 ASSERT(g_sys_pkt_queue.put(pkt) == osOK, "SYS queue full!\r\n");
Jeej 25:aac250164497 49 }
Jeej 25:aac250164497 50
Jeej 25:aac250164497 51 d7a_com_rx_msg_t* d7a_sys_wait_pkt( uint32_t millisec )
Jeej 25:aac250164497 52 {
Jeej 83:f4054d0b29ba 53 SYS_FPRINT("\r\n");
Jeej 77:8c792719a1fc 54 osEvent evt = g_sys_pkt_queue.get(millisec);
Jeej 25:aac250164497 55 return (evt.status == osEventMessage)? (d7a_com_rx_msg_t*)evt.value.p : NULL;
Jeej 25:aac250164497 56 }
Jeej 25:aac250164497 57
Jeej 28:0376b97b4b55 58 void d7a_sys_tlev(uint8_t mod, uint16_t lev)
Jeej 28:0376b97b4b55 59 {
Jeej 83:f4054d0b29ba 60 SYS_FPRINT("\r\n");
Jeej 28:0376b97b4b55 61 uint8_t buf[3];
Jeej 30:d775c1409849 62
Jeej 28:0376b97b4b55 63 buf[0] = mod;
Jeej 28:0376b97b4b55 64 buf[1] = (uint8_t)(lev << 8);
Jeej 28:0376b97b4b55 65 buf[2] = (uint8_t)(lev & 0x00FF);
Jeej 30:d775c1409849 66
Jeej 30:d775c1409849 67 d7a_com_dump(buf, 3, KAL_COM_FLOW_SYS_TLEV);
Jeej 28:0376b97b4b55 68 }
Jeej 28:0376b97b4b55 69
Jeej 30:d775c1409849 70 bool d7a_sys_ping_modem(uint32_t millisec)
Jeej 30:d775c1409849 71 {
Jeej 83:f4054d0b29ba 72 SYS_FPRINT("\r\n");
Jeej 30:d775c1409849 73 uint8_t buf[5] = "PING";
Jeej 30:d775c1409849 74
Jeej 30:d775c1409849 75 d7a_com_dump(buf, 4, KAL_COM_FLOW_SYS_PING);
Jeej 30:d775c1409849 76
Jeej 77:8c792719a1fc 77 osEvent evt = g_sys_wait_pong.get(millisec);
Jeej 30:d775c1409849 78
Jeej 30:d775c1409849 79 return (evt.status == osEventMessage)? true: false;
Jeej 30:d775c1409849 80 }
Jeej 30:d775c1409849 81
Jeej 30:d775c1409849 82 void d7a_sys_software_reset(void)
Jeej 29:8e7c5c1e9aab 83 {
Jeej 83:f4054d0b29ba 84 SYS_FPRINT("\r\n");
Jeej 30:d775c1409849 85 uint8_t buf[4] = "RST";
Jeej 30:d775c1409849 86
Jeej 40:b4df548bd9d8 87 d7a_com_dump(buf, 3, KAL_COM_FLOW_SYS_RST);
Jeej 30:d775c1409849 88 }
Jeej 30:d775c1409849 89
Jeej 30:d775c1409849 90 void d7a_sys_button(uint8_t button)
Jeej 30:d775c1409849 91 {
Jeej 83:f4054d0b29ba 92 SYS_FPRINT("\r\n");
Jeej 30:d775c1409849 93 button += '0';
Jeej 29:8e7c5c1e9aab 94
Jeej 30:d775c1409849 95 d7a_com_dump(&button, 1, KAL_COM_FLOW_SYS_BUTTON);
Jeej 29:8e7c5c1e9aab 96 }
Jeej 30:d775c1409849 97
Jeej 34:1311cc53201a 98 void d7a_sys_xack(void)
Jeej 34:1311cc53201a 99 {
Jeej 34:1311cc53201a 100 uint8_t buf[] = "X";
Jeej 34:1311cc53201a 101 d7a_com_dump(buf, 1, KAL_COM_FLOW_SYS_XACK);
Jeej 34:1311cc53201a 102 }
Jeej 29:8e7c5c1e9aab 103
Jeej 76:fda2e34ff19d 104 void d7a_sys_thread()
Jeej 25:aac250164497 105 {
Jeej 83:f4054d0b29ba 106 SYS_FPRINT("(id:0x%08x)\r\n", osThreadGetId());
Jeej 25:aac250164497 107 d7a_com_rx_msg_t* pkt;
Jeej 25:aac250164497 108
Jeej 25:aac250164497 109 while (true)
Jeej 25:aac250164497 110 {
Jeej 25:aac250164497 111 pkt = d7a_sys_wait_pkt();
Jeej 25:aac250164497 112 ASSERT(pkt != NULL, "SYS NULL pkt\r\n");
Jeej 25:aac250164497 113
Jeej 25:aac250164497 114 switch(pkt->id)
Jeej 25:aac250164497 115 {
Jeej 25:aac250164497 116 case KAL_COM_FLOW_SYS_RST:
Jeej 79:82b01c1a62f6 117 SYS_DPRINT("KAL_COM_FLOW_SYS_RST\r\n");
Jeej 25:aac250164497 118 FLUSH();
Jeej 25:aac250164497 119 NVIC_SystemReset();
Jeej 25:aac250164497 120 break;
Jeej 25:aac250164497 121 case KAL_COM_FLOW_SYS_BUTTON:
Jeej 79:82b01c1a62f6 122 SYS_DPRINT("KAL_COM_FLOW_SYS_BUTTON\r\n");
Jeej 25:aac250164497 123 break;
Jeej 25:aac250164497 124 case KAL_COM_FLOW_SYS_INFO:
Jeej 79:82b01c1a62f6 125 SYS_DPRINT("KAL_COM_FLOW_SYS_INFO\r\n");
Jeej 25:aac250164497 126 break;
Jeej 25:aac250164497 127 case KAL_COM_FLOW_SYS_CUP:
Jeej 79:82b01c1a62f6 128 SYS_DPRINT("KAL_COM_FLOW_SYS_CUP\r\n");
Jeej 25:aac250164497 129 break;
Jeej 25:aac250164497 130 case KAL_COM_FLOW_SYS_PING:
Jeej 79:82b01c1a62f6 131 SYS_DPRINT("KAL_COM_FLOW_SYS_PING\r\n");
Jeej 25:aac250164497 132 uint8_t buf[5] = "PONG";
Jeej 34:1311cc53201a 133 d7a_com_dump(buf, 4, KAL_COM_FLOW_SYS_PONG);
Jeej 25:aac250164497 134 break;
Jeej 25:aac250164497 135 case KAL_COM_FLOW_SYS_PONG:
Jeej 79:82b01c1a62f6 136 SYS_DPRINT("KAL_COM_FLOW_SYS_PONG\r\n");
Jeej 77:8c792719a1fc 137 g_sys_wait_pong.put(NULL);
Jeej 25:aac250164497 138 break;
Jeej 25:aac250164497 139 case KAL_COM_FLOW_SYS_CFG:
Jeej 79:82b01c1a62f6 140 SYS_DPRINT("KAL_COM_FLOW_SYS_CFG\r\n");
Jeej 25:aac250164497 141 break;
Jeej 25:aac250164497 142 case KAL_COM_FLOW_SYS_TLEV:
Jeej 79:82b01c1a62f6 143 SYS_DPRINT("KAL_COM_FLOW_SYS_TLEV\r\n");
Jeej 25:aac250164497 144 break;
Jeej 25:aac250164497 145 case KAL_COM_FLOW_SYS_REDIR:
Jeej 79:82b01c1a62f6 146 SYS_DPRINT("KAL_COM_FLOW_SYS_REDIR\r\n");
Jeej 25:aac250164497 147 break;
Jeej 25:aac250164497 148 default:
Jeej 25:aac250164497 149 EPRINT("SYS Unknown Flow ID 0x%02X\r\n", pkt->id);
Jeej 25:aac250164497 150 break;
Jeej 25:aac250164497 151 }
Jeej 25:aac250164497 152
Jeej 25:aac250164497 153 FREE(pkt);
Jeej 25:aac250164497 154 }
Jeej 25:aac250164497 155 }