![](/media/cache/profiles/logo_uOArsqL.png.50x50_q85.png)
This is a working HTTP server with I2C, GPIO and PWM commands accessible through URLs. It also includes the ability to serve files from an SD card.
Dependencies: EthernetInterfaceMuri SDFileSystem mbed-rtos mbed
muri.cpp@2:5c9ce3b50de6, 2013-12-06 (annotated)
- Committer:
- gsteiert
- Date:
- Fri Dec 06 03:59:01 2013 +0000
- Revision:
- 2:5c9ce3b50de6
- Parent:
- 1:64f023138627
Publishing project
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gsteiert | 0:28bc7ce77e20 | 1 | #include "mbed.h" |
gsteiert | 1:64f023138627 | 2 | #include "rtos.h" |
gsteiert | 0:28bc7ce77e20 | 3 | #include "muri.h" |
gsteiert | 0:28bc7ce77e20 | 4 | |
gsteiert | 0:28bc7ce77e20 | 5 | I2C i2c(p28, p27); |
gsteiert | 1:64f023138627 | 6 | //PwmOut pwm1(p26); |
gsteiert | 1:64f023138627 | 7 | PwmOut pwm(p25); |
gsteiert | 1:64f023138627 | 8 | DigitalInOut pmd1(p14); |
gsteiert | 1:64f023138627 | 9 | DigitalInOut pmd2(p11); |
gsteiert | 1:64f023138627 | 10 | DigitalInOut pmd3(p12); |
gsteiert | 1:64f023138627 | 11 | DigitalInOut pmd4(p13); |
gsteiert | 1:64f023138627 | 12 | DigitalInOut pmd7(p24); |
gsteiert | 1:64f023138627 | 13 | DigitalInOut pmd8(p23); |
gsteiert | 1:64f023138627 | 14 | DigitalInOut pmd9(p22); |
gsteiert | 1:64f023138627 | 15 | DigitalInOut pmd10(p21); |
gsteiert | 0:28bc7ce77e20 | 16 | |
gsteiert | 1:64f023138627 | 17 | osTimerDef(poff, pwm_off); |
gsteiert | 1:64f023138627 | 18 | osTimerId off_timer; |
gsteiert | 1:64f023138627 | 19 | |
gsteiert | 1:64f023138627 | 20 | void init_dio() |
gsteiert | 1:64f023138627 | 21 | { |
gsteiert | 1:64f023138627 | 22 | pmd1.mode(PullNone); |
gsteiert | 1:64f023138627 | 23 | pmd1.mode(OpenDrain); |
gsteiert | 1:64f023138627 | 24 | pmd1.write(1); |
gsteiert | 1:64f023138627 | 25 | pmd1.output(); |
gsteiert | 1:64f023138627 | 26 | pmd2.mode(PullNone); |
gsteiert | 1:64f023138627 | 27 | pmd2.mode(OpenDrain); |
gsteiert | 1:64f023138627 | 28 | pmd2.write(1); |
gsteiert | 1:64f023138627 | 29 | pmd2.output(); |
gsteiert | 1:64f023138627 | 30 | pmd3.mode(PullNone); |
gsteiert | 1:64f023138627 | 31 | pmd3.mode(OpenDrain); |
gsteiert | 1:64f023138627 | 32 | pmd3.write(1); |
gsteiert | 1:64f023138627 | 33 | pmd3.output(); |
gsteiert | 1:64f023138627 | 34 | pmd4.mode(PullNone); |
gsteiert | 1:64f023138627 | 35 | pmd4.mode(OpenDrain); |
gsteiert | 1:64f023138627 | 36 | pmd4.write(1); |
gsteiert | 1:64f023138627 | 37 | pmd4.output(); |
gsteiert | 1:64f023138627 | 38 | pmd7.mode(PullNone); |
gsteiert | 1:64f023138627 | 39 | pmd7.mode(OpenDrain); |
gsteiert | 1:64f023138627 | 40 | pmd7.write(1); |
gsteiert | 1:64f023138627 | 41 | pmd7.output(); |
gsteiert | 1:64f023138627 | 42 | pmd8.mode(PullNone); |
gsteiert | 1:64f023138627 | 43 | pmd8.mode(OpenDrain); |
gsteiert | 1:64f023138627 | 44 | pmd8.write(1); |
gsteiert | 1:64f023138627 | 45 | pmd8.output(); |
gsteiert | 1:64f023138627 | 46 | pmd9.mode(PullNone); |
gsteiert | 1:64f023138627 | 47 | pmd9.mode(OpenDrain); |
gsteiert | 1:64f023138627 | 48 | pmd9.write(1); |
gsteiert | 1:64f023138627 | 49 | pmd9.output(); |
gsteiert | 1:64f023138627 | 50 | pmd10.mode(PullNone); |
gsteiert | 1:64f023138627 | 51 | pmd10.mode(OpenDrain); |
gsteiert | 1:64f023138627 | 52 | pmd10.write(1); |
gsteiert | 1:64f023138627 | 53 | pmd10.output(); |
gsteiert | 1:64f023138627 | 54 | off_timer = osTimerCreate(osTimer(poff), osTimerOnce, NULL); |
gsteiert | 1:64f023138627 | 55 | } |
gsteiert | 0:28bc7ce77e20 | 56 | |
gsteiert | 0:28bc7ce77e20 | 57 | void cmd_i2c_write(char* qry, char* data, char* resp) |
gsteiert | 0:28bc7ce77e20 | 58 | { |
gsteiert | 0:28bc7ce77e20 | 59 | int addr = 0; |
gsteiert | 0:28bc7ce77e20 | 60 | int dlen = 0; |
gsteiert | 0:28bc7ce77e20 | 61 | int dtmp = 0; |
gsteiert | 0:28bc7ce77e20 | 62 | if (sscanf(qry, "?%2x", &addr) == 1) { |
gsteiert | 0:28bc7ce77e20 | 63 | qry += 3; |
gsteiert | 0:28bc7ce77e20 | 64 | while (sscanf(qry, "&%2x", &dtmp) == 1) { |
gsteiert | 0:28bc7ce77e20 | 65 | data[dlen] = dtmp; |
gsteiert | 0:28bc7ce77e20 | 66 | qry +=3; |
gsteiert | 0:28bc7ce77e20 | 67 | dlen +=1; |
gsteiert | 0:28bc7ce77e20 | 68 | } |
gsteiert | 0:28bc7ce77e20 | 69 | } else { |
gsteiert | 0:28bc7ce77e20 | 70 | dlen = -1; |
gsteiert | 0:28bc7ce77e20 | 71 | } |
gsteiert | 0:28bc7ce77e20 | 72 | if (dlen > 0 ) { |
gsteiert | 0:28bc7ce77e20 | 73 | i2c.write(addr, data, dlen); |
gsteiert | 0:28bc7ce77e20 | 74 | sprintf(resp,"200 %d\r\n", dlen); |
gsteiert | 0:28bc7ce77e20 | 75 | } else { |
gsteiert | 0:28bc7ce77e20 | 76 | if (dlen == 0) { |
gsteiert | 0:28bc7ce77e20 | 77 | sprintf(resp,"204 No data to write: %s\r\n", qry); |
gsteiert | 0:28bc7ce77e20 | 78 | } else { |
gsteiert | 0:28bc7ce77e20 | 79 | sprintf(resp,"400 Invalid parameters: %s\r\n", qry); |
gsteiert | 0:28bc7ce77e20 | 80 | |
gsteiert | 0:28bc7ce77e20 | 81 | } |
gsteiert | 0:28bc7ce77e20 | 82 | } |
gsteiert | 0:28bc7ce77e20 | 83 | } |
gsteiert | 0:28bc7ce77e20 | 84 | |
gsteiert | 0:28bc7ce77e20 | 85 | void cmd_i2c_read(char* qry, char* data, char* resp) |
gsteiert | 0:28bc7ce77e20 | 86 | { |
gsteiert | 0:28bc7ce77e20 | 87 | int addr = 0; |
gsteiert | 0:28bc7ce77e20 | 88 | int dlen = 0; |
gsteiert | 0:28bc7ce77e20 | 89 | int dcnt = 0; |
gsteiert | 0:28bc7ce77e20 | 90 | if (sscanf(qry, "?%2x", &addr) == 1) { |
gsteiert | 0:28bc7ce77e20 | 91 | qry += 3; |
gsteiert | 0:28bc7ce77e20 | 92 | if (sscanf(qry, "&%2x", &dlen) == 1) { |
gsteiert | 0:28bc7ce77e20 | 93 | if (i2c.read(addr, data, dlen)!=0) { |
gsteiert | 0:28bc7ce77e20 | 94 | dlen = -1; |
gsteiert | 0:28bc7ce77e20 | 95 | sprintf(resp, "500 I2C read failed\r\n"); |
gsteiert | 0:28bc7ce77e20 | 96 | } |
gsteiert | 0:28bc7ce77e20 | 97 | } else { |
gsteiert | 0:28bc7ce77e20 | 98 | sprintf(resp, "400 Invalid data length: %s\r\n", qry); |
gsteiert | 0:28bc7ce77e20 | 99 | } |
gsteiert | 0:28bc7ce77e20 | 100 | } else { |
gsteiert | 0:28bc7ce77e20 | 101 | dlen = -1; |
gsteiert | 0:28bc7ce77e20 | 102 | sprintf(resp, "400 Invalid address: %s\r\n", qry); |
gsteiert | 0:28bc7ce77e20 | 103 | } |
gsteiert | 0:28bc7ce77e20 | 104 | if (dlen > 0) { |
gsteiert | 0:28bc7ce77e20 | 105 | sprintf(resp,"200"); |
gsteiert | 0:28bc7ce77e20 | 106 | resp += 3; |
gsteiert | 0:28bc7ce77e20 | 107 | for (dcnt = 0; dcnt < dlen; dcnt++) { |
gsteiert | 0:28bc7ce77e20 | 108 | sprintf(resp," %02x", data[dcnt]); |
gsteiert | 0:28bc7ce77e20 | 109 | resp +=3; |
gsteiert | 0:28bc7ce77e20 | 110 | } |
gsteiert | 0:28bc7ce77e20 | 111 | } |
gsteiert | 0:28bc7ce77e20 | 112 | } |
gsteiert | 0:28bc7ce77e20 | 113 | |
gsteiert | 0:28bc7ce77e20 | 114 | void cmd_i2c_addr_read(char* qry, char* data, char* resp) |
gsteiert | 0:28bc7ce77e20 | 115 | { |
gsteiert | 0:28bc7ce77e20 | 116 | int addr = 0; |
gsteiert | 0:28bc7ce77e20 | 117 | int radd = 0; |
gsteiert | 0:28bc7ce77e20 | 118 | int dlen = 0; |
gsteiert | 0:28bc7ce77e20 | 119 | int dcnt = 0; |
gsteiert | 0:28bc7ce77e20 | 120 | if (sscanf(qry, "?%2x", &addr) == 1) { |
gsteiert | 0:28bc7ce77e20 | 121 | qry += 3; |
gsteiert | 0:28bc7ce77e20 | 122 | if (sscanf(qry, "&%2x", &radd) == 1) { |
gsteiert | 0:28bc7ce77e20 | 123 | qry += 3; |
gsteiert | 0:28bc7ce77e20 | 124 | if (sscanf(qry, "&%2x", &dlen) == 1) { |
gsteiert | 0:28bc7ce77e20 | 125 | data[0] = radd; |
gsteiert | 0:28bc7ce77e20 | 126 | i2c.write(addr, data, 1, false); |
gsteiert | 0:28bc7ce77e20 | 127 | if (i2c.read(addr, data, dlen)!=0) { |
gsteiert | 0:28bc7ce77e20 | 128 | dlen = -1; |
gsteiert | 0:28bc7ce77e20 | 129 | sprintf(resp, "500 I2C read failed\r\n"); |
gsteiert | 0:28bc7ce77e20 | 130 | } |
gsteiert | 0:28bc7ce77e20 | 131 | } else { |
gsteiert | 0:28bc7ce77e20 | 132 | sprintf(resp, "400 Invalid data length: %s\r\n", qry); |
gsteiert | 0:28bc7ce77e20 | 133 | } |
gsteiert | 0:28bc7ce77e20 | 134 | } else { |
gsteiert | 0:28bc7ce77e20 | 135 | dlen = -1; |
gsteiert | 0:28bc7ce77e20 | 136 | sprintf(resp, "400 Invalid register address: %s\r\n", qry); |
gsteiert | 0:28bc7ce77e20 | 137 | } |
gsteiert | 0:28bc7ce77e20 | 138 | } else { |
gsteiert | 0:28bc7ce77e20 | 139 | dlen = -1; |
gsteiert | 0:28bc7ce77e20 | 140 | sprintf(resp, "400 Invalid address: %s\r\n", qry); |
gsteiert | 0:28bc7ce77e20 | 141 | } |
gsteiert | 0:28bc7ce77e20 | 142 | if (dlen > 0) { |
gsteiert | 0:28bc7ce77e20 | 143 | sprintf(resp,"200"); |
gsteiert | 0:28bc7ce77e20 | 144 | resp += 3; |
gsteiert | 0:28bc7ce77e20 | 145 | for (dcnt = 0; dcnt < dlen; dcnt++) { |
gsteiert | 0:28bc7ce77e20 | 146 | sprintf(resp," %02x", data[dcnt]); |
gsteiert | 0:28bc7ce77e20 | 147 | resp +=3; |
gsteiert | 0:28bc7ce77e20 | 148 | } |
gsteiert | 0:28bc7ce77e20 | 149 | } |
gsteiert | 0:28bc7ce77e20 | 150 | } |
gsteiert | 0:28bc7ce77e20 | 151 | |
gsteiert | 1:64f023138627 | 152 | void cmd_pmd_setio(char* qry, char* data, char* resp) |
gsteiert | 1:64f023138627 | 153 | { |
gsteiert | 1:64f023138627 | 154 | int pdir = -1; |
gsteiert | 1:64f023138627 | 155 | int pdata = -1; |
gsteiert | 1:64f023138627 | 156 | if (sscanf(qry, "?%2x", &pdir) == 1) { |
gsteiert | 1:64f023138627 | 157 | if (pdir == 0) { |
gsteiert | 1:64f023138627 | 158 | pmd1.mode(PullNone); |
gsteiert | 1:64f023138627 | 159 | pmd2.mode(PullNone); |
gsteiert | 1:64f023138627 | 160 | pmd3.mode(PullNone); |
gsteiert | 1:64f023138627 | 161 | pmd4.mode(PullNone); |
gsteiert | 1:64f023138627 | 162 | pmd7.mode(PullNone); |
gsteiert | 1:64f023138627 | 163 | pmd8.mode(PullNone); |
gsteiert | 1:64f023138627 | 164 | pmd9.mode(PullNone); |
gsteiert | 1:64f023138627 | 165 | pmd10.mode(PullNone); |
gsteiert | 1:64f023138627 | 166 | } else { |
gsteiert | 1:64f023138627 | 167 | if (sscanf(qry+3, "&%2x", &pdata) == 1) { |
gsteiert | 1:64f023138627 | 168 | if (pdir & (1 << 0)) { |
gsteiert | 1:64f023138627 | 169 | if (pdata & (1 << 0)) pmd1.mode(PullUp); |
gsteiert | 1:64f023138627 | 170 | else pmd1.mode(PullDown); |
gsteiert | 1:64f023138627 | 171 | } else { |
gsteiert | 1:64f023138627 | 172 | pmd1.mode(PullNone); |
gsteiert | 1:64f023138627 | 173 | } |
gsteiert | 1:64f023138627 | 174 | if (pdir & (1 << 1)) { |
gsteiert | 1:64f023138627 | 175 | if (pdata & (1 << 1)) pmd2.mode(PullUp); |
gsteiert | 1:64f023138627 | 176 | else pmd2.mode(PullDown); |
gsteiert | 1:64f023138627 | 177 | } else { |
gsteiert | 1:64f023138627 | 178 | pmd2.mode(PullNone); |
gsteiert | 1:64f023138627 | 179 | } |
gsteiert | 1:64f023138627 | 180 | if (pdir & (1 << 2)) { |
gsteiert | 1:64f023138627 | 181 | if (pdata & (1 << 2)) pmd3.mode(PullUp); |
gsteiert | 1:64f023138627 | 182 | else pmd3.mode(PullDown); |
gsteiert | 1:64f023138627 | 183 | } else { |
gsteiert | 1:64f023138627 | 184 | pmd3.mode(PullNone); |
gsteiert | 1:64f023138627 | 185 | } |
gsteiert | 1:64f023138627 | 186 | if (pdir & (1 << 3)) { |
gsteiert | 1:64f023138627 | 187 | if (pdata & (1 << 3)) pmd4.mode(PullUp); |
gsteiert | 1:64f023138627 | 188 | else pmd4.mode(PullDown); |
gsteiert | 1:64f023138627 | 189 | } else { |
gsteiert | 1:64f023138627 | 190 | pmd4.mode(PullNone); |
gsteiert | 1:64f023138627 | 191 | } |
gsteiert | 1:64f023138627 | 192 | if (pdir & (1 << 4)) { |
gsteiert | 1:64f023138627 | 193 | if (pdata & (1 << 4)) pmd7.mode(PullUp); |
gsteiert | 1:64f023138627 | 194 | else pmd7.mode(PullDown); |
gsteiert | 1:64f023138627 | 195 | } else { |
gsteiert | 1:64f023138627 | 196 | pmd7.mode(PullNone); |
gsteiert | 1:64f023138627 | 197 | } |
gsteiert | 1:64f023138627 | 198 | if (pdir & (1 << 5)) { |
gsteiert | 1:64f023138627 | 199 | if (pdata & (1 << 5)) pmd8.mode(PullUp); |
gsteiert | 1:64f023138627 | 200 | else pmd8.mode(PullDown); |
gsteiert | 1:64f023138627 | 201 | } else { |
gsteiert | 1:64f023138627 | 202 | pmd8.mode(PullNone); |
gsteiert | 1:64f023138627 | 203 | } |
gsteiert | 1:64f023138627 | 204 | if (pdir & (1 << 6)) { |
gsteiert | 1:64f023138627 | 205 | if (pdata & (1 << 6)) pmd9.mode(PullUp); |
gsteiert | 1:64f023138627 | 206 | else pmd9.mode(PullDown); |
gsteiert | 1:64f023138627 | 207 | } else { |
gsteiert | 1:64f023138627 | 208 | pmd9.mode(PullNone); |
gsteiert | 1:64f023138627 | 209 | } |
gsteiert | 1:64f023138627 | 210 | if (pdir & (1 << 7)) { |
gsteiert | 1:64f023138627 | 211 | if (pdata & (1 << 7)) pmd10.mode(PullUp); |
gsteiert | 1:64f023138627 | 212 | else pmd10.mode(PullDown); |
gsteiert | 1:64f023138627 | 213 | } else { |
gsteiert | 1:64f023138627 | 214 | pmd10.mode(PullNone); |
gsteiert | 1:64f023138627 | 215 | } |
gsteiert | 1:64f023138627 | 216 | } |
gsteiert | 1:64f023138627 | 217 | } |
gsteiert | 1:64f023138627 | 218 | |
gsteiert | 1:64f023138627 | 219 | pdata = 0; |
gsteiert | 1:64f023138627 | 220 | pdata += (pmd1 << 0); |
gsteiert | 1:64f023138627 | 221 | pdata += (pmd2 << 1); |
gsteiert | 1:64f023138627 | 222 | pdata += (pmd3 << 2); |
gsteiert | 1:64f023138627 | 223 | pdata += (pmd4 << 3); |
gsteiert | 1:64f023138627 | 224 | pdata += (pmd7 << 4); |
gsteiert | 1:64f023138627 | 225 | pdata += (pmd8 << 5); |
gsteiert | 1:64f023138627 | 226 | pdata += (pmd9 << 6); |
gsteiert | 1:64f023138627 | 227 | pdata += (pmd10 << 7); |
gsteiert | 1:64f023138627 | 228 | sprintf(resp,"200 %02x", pdata); |
gsteiert | 1:64f023138627 | 229 | } else { |
gsteiert | 1:64f023138627 | 230 | sprintf(resp,"400 Invalid parameters: %s\r\n", qry); |
gsteiert | 1:64f023138627 | 231 | } |
gsteiert | 1:64f023138627 | 232 | } |
gsteiert | 1:64f023138627 | 233 | |
gsteiert | 1:64f023138627 | 234 | void cmd_pmd_write(char* qry, char* data, char* resp) |
gsteiert | 1:64f023138627 | 235 | { |
gsteiert | 1:64f023138627 | 236 | int pdata = -1; |
gsteiert | 1:64f023138627 | 237 | if (sscanf(qry, "?%2x", &pdata) == 1) { |
gsteiert | 1:64f023138627 | 238 | pmd1 = pdata & (1 << 0); |
gsteiert | 1:64f023138627 | 239 | pmd2 = pdata & (1 << 1); |
gsteiert | 1:64f023138627 | 240 | pmd3 = pdata & (1 << 2); |
gsteiert | 1:64f023138627 | 241 | pmd4 = pdata & (1 << 3); |
gsteiert | 1:64f023138627 | 242 | pmd7 = pdata & (1 << 4); |
gsteiert | 1:64f023138627 | 243 | pmd8 = pdata & (1 << 5); |
gsteiert | 1:64f023138627 | 244 | pmd9 = pdata & (1 << 6); |
gsteiert | 1:64f023138627 | 245 | pmd10 = pdata & (1 << 7); |
gsteiert | 1:64f023138627 | 246 | pdata = 0; |
gsteiert | 1:64f023138627 | 247 | pdata += (pmd1 << 0); |
gsteiert | 1:64f023138627 | 248 | pdata += (pmd2 << 1); |
gsteiert | 1:64f023138627 | 249 | pdata += (pmd3 << 2); |
gsteiert | 1:64f023138627 | 250 | pdata += (pmd4 << 3); |
gsteiert | 1:64f023138627 | 251 | pdata += (pmd7 << 4); |
gsteiert | 1:64f023138627 | 252 | pdata += (pmd8 << 5); |
gsteiert | 1:64f023138627 | 253 | pdata += (pmd9 << 6); |
gsteiert | 1:64f023138627 | 254 | pdata += (pmd10 << 7); |
gsteiert | 1:64f023138627 | 255 | sprintf(resp,"200 %02x", pdata); |
gsteiert | 1:64f023138627 | 256 | } else { |
gsteiert | 1:64f023138627 | 257 | sprintf(resp,"400 Invalid parameters: %s\r\n", qry); |
gsteiert | 1:64f023138627 | 258 | |
gsteiert | 1:64f023138627 | 259 | } |
gsteiert | 1:64f023138627 | 260 | } |
gsteiert | 1:64f023138627 | 261 | |
gsteiert | 1:64f023138627 | 262 | void cmd_pmd_read(char* qry, char* data, char* resp) |
gsteiert | 1:64f023138627 | 263 | { |
gsteiert | 1:64f023138627 | 264 | int pdata = 0; |
gsteiert | 1:64f023138627 | 265 | pdata += (pmd1 << 0); |
gsteiert | 1:64f023138627 | 266 | pdata += (pmd2 << 1); |
gsteiert | 1:64f023138627 | 267 | pdata += (pmd3 << 2); |
gsteiert | 1:64f023138627 | 268 | pdata += (pmd4 << 3); |
gsteiert | 1:64f023138627 | 269 | pdata += (pmd7 << 4); |
gsteiert | 1:64f023138627 | 270 | pdata += (pmd8 << 5); |
gsteiert | 1:64f023138627 | 271 | pdata += (pmd9 << 6); |
gsteiert | 1:64f023138627 | 272 | pdata += (pmd10 << 7); |
gsteiert | 1:64f023138627 | 273 | sprintf(resp,"200 %02x", pdata); |
gsteiert | 1:64f023138627 | 274 | } |
gsteiert | 1:64f023138627 | 275 | |
gsteiert | 1:64f023138627 | 276 | void pwm_off(void const *arg) |
gsteiert | 1:64f023138627 | 277 | { |
gsteiert | 1:64f023138627 | 278 | // pwm.period_us(0); |
gsteiert | 1:64f023138627 | 279 | pwm.pulsewidth_us(0); |
gsteiert | 1:64f023138627 | 280 | } |
gsteiert | 1:64f023138627 | 281 | |
gsteiert | 1:64f023138627 | 282 | void cmd_pwm_set(char* qry, char* data, char* resp) |
gsteiert | 1:64f023138627 | 283 | { |
gsteiert | 1:64f023138627 | 284 | int pwmP = 0; |
gsteiert | 1:64f023138627 | 285 | int pwmW = 0; |
gsteiert | 1:64f023138627 | 286 | int pwmD = 0; |
gsteiert | 1:64f023138627 | 287 | if (sscanf(qry, "?%4x&%4x&%4x", &pwmP, &pwmW, &pwmD) == 3) { |
gsteiert | 1:64f023138627 | 288 | pwm.period_us(pwmP); |
gsteiert | 1:64f023138627 | 289 | pwm.pulsewidth_us(pwmW); |
gsteiert | 1:64f023138627 | 290 | osTimerStart(off_timer, pwmD); |
gsteiert | 1:64f023138627 | 291 | sprintf(resp,"200 %04x %04x %04x", pwmP, pwmW, pwmD); |
gsteiert | 1:64f023138627 | 292 | } else { |
gsteiert | 1:64f023138627 | 293 | sprintf(resp,"400 Invalid parameters: %s\r\n", qry); |
gsteiert | 1:64f023138627 | 294 | |
gsteiert | 1:64f023138627 | 295 | } |
gsteiert | 1:64f023138627 | 296 | } |
gsteiert | 0:28bc7ce77e20 | 297 | |
gsteiert | 0:28bc7ce77e20 | 298 | void muri(char* uri, char* data, char* resp) |
gsteiert | 0:28bc7ce77e20 | 299 | { |
gsteiert | 0:28bc7ce77e20 | 300 | // sprintf(resp, "501 %s", uri); |
gsteiert | 0:28bc7ce77e20 | 301 | //} |
gsteiert | 0:28bc7ce77e20 | 302 | //void get_cgi(char* uri, char* qry) |
gsteiert | 0:28bc7ce77e20 | 303 | //{ |
gsteiert | 0:28bc7ce77e20 | 304 | char *qry; |
gsteiert | 0:28bc7ce77e20 | 305 | printf("muri uri: %s\n", uri); |
gsteiert | 0:28bc7ce77e20 | 306 | qry = strstr(uri, "?"); |
gsteiert | 1:64f023138627 | 307 | if (!strncmp(uri, "i2cw?", 5)) { // i2cw [addr] [data] [data] [data] ... |
gsteiert | 0:28bc7ce77e20 | 308 | cmd_i2c_write(qry, data, resp); |
gsteiert | 1:64f023138627 | 309 | } else if (!strncmp(uri, "i2cr?", 5)) { // i2cr [addr] [count] |
gsteiert | 0:28bc7ce77e20 | 310 | cmd_i2c_read(qry, data, resp); |
gsteiert | 1:64f023138627 | 311 | } else if (!strncmp(uri, "i2car?", 6)) { // i2car [addr] [radd] [count] |
gsteiert | 0:28bc7ce77e20 | 312 | cmd_i2c_addr_read(qry, data, resp); |
gsteiert | 1:64f023138627 | 313 | } else if (!strncmp(uri, "pmdio?", 6)) { // pmdio [dir] [data] |
gsteiert | 1:64f023138627 | 314 | cmd_pmd_setio(qry, data, resp); |
gsteiert | 1:64f023138627 | 315 | } else if (!strncmp(uri, "pmdw?", 5)) { // pmdw [data] |
gsteiert | 1:64f023138627 | 316 | cmd_pmd_write(qry, data, resp); |
gsteiert | 1:64f023138627 | 317 | } else if (!strncmp(uri, "pmdr", 4)) { // pmdr |
gsteiert | 1:64f023138627 | 318 | cmd_pmd_read(qry, data, resp); |
gsteiert | 1:64f023138627 | 319 | } else if (!strncmp(uri, "pwmd?", 5)) { // pwmd [period] [width] [duration] |
gsteiert | 1:64f023138627 | 320 | cmd_pwm_set(qry, data, resp); |
gsteiert | 0:28bc7ce77e20 | 321 | } else { |
gsteiert | 0:28bc7ce77e20 | 322 | sprintf(resp, "501 %s", uri); |
gsteiert | 0:28bc7ce77e20 | 323 | } |
gsteiert | 0:28bc7ce77e20 | 324 | printf("muri resp: %s\n", resp); |
gsteiert | 0:28bc7ce77e20 | 325 | } |
gsteiert | 0:28bc7ce77e20 | 326 | |
gsteiert | 0:28bc7ce77e20 | 327 |