東芝FlashAirを使って、直接ツイートするツイッタークライアントです。 supertweetやStewgate UなどのAPIプロキシを必要としません。 このプログラムは、mbed Advent Calendar 2014 をきっかけに作成されました。 http://www.adventar.org/calendars/523

Dependencies:   OAuth4Tw iSDIO mbed

Committer:
ban4jp
Date:
Mon Dec 15 12:31:48 2014 +0000
Revision:
1:904a199589b4
Parent:
0:b1be2bea94df
change library url. (iSDIO)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ban4jp 0:b1be2bea94df 1 #include "mbed.h"
ban4jp 0:b1be2bea94df 2 #include "iSDIO.h"
ban4jp 0:b1be2bea94df 3 #include "HTTPClient.h"
ban4jp 0:b1be2bea94df 4 #include "OAuth4Tw.h"
ban4jp 0:b1be2bea94df 5
ban4jp 0:b1be2bea94df 6 #if defined(TARGET_LPC11U24)
ban4jp 0:b1be2bea94df 7 SD_iSDIO sd(p11, p12, p13, p14, "sd"); // MOSI, MISO, SCLK, SSEL
ban4jp 0:b1be2bea94df 8 #elif defined(TARGET_LPC1114)
ban4jp 0:b1be2bea94df 9 SD_iSDIO sd(p11, p12, p13, p14, "sd"); // MOSI, MISO, SCLK, SSEL
ban4jp 0:b1be2bea94df 10 #elif defined(TARGET_LPC1549)
ban4jp 0:b1be2bea94df 11 SD_iSDIO sd(D11, D12, D13, D10, "sd"); // MOSI, MISO, SCLK, SSEL
ban4jp 0:b1be2bea94df 12 #else
ban4jp 0:b1be2bea94df 13 #error
ban4jp 0:b1be2bea94df 14 #endif
ban4jp 0:b1be2bea94df 15
ban4jp 0:b1be2bea94df 16 Serial pc(USBTX, USBRX);
ban4jp 0:b1be2bea94df 17
ban4jp 0:b1be2bea94df 18 OAuth4Tw oa4t("XXXXXXXXXXXXXXXXXXXXXXXXX", // Consumer key
ban4jp 0:b1be2bea94df 19 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", // Consumer secret
ban4jp 0:b1be2bea94df 20 "000000000-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", // Access token
ban4jp 0:b1be2bea94df 21 "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); // Access token secret
ban4jp 0:b1be2bea94df 22
ban4jp 0:b1be2bea94df 23 //**************************************************
ban4jp 0:b1be2bea94df 24 uint8_t buffer[512];
ban4jp 0:b1be2bea94df 25 void printByte(uint8_t value)
ban4jp 0:b1be2bea94df 26 {
ban4jp 0:b1be2bea94df 27 pc.printf("%x", value >> 4);
ban4jp 0:b1be2bea94df 28 pc.printf("%x", value & 0xF);
ban4jp 0:b1be2bea94df 29 }
ban4jp 0:b1be2bea94df 30 void printBytes(uint8_t* p, uint32_t len)
ban4jp 0:b1be2bea94df 31 {
ban4jp 0:b1be2bea94df 32 for (int i = 0; i < len; ++i) {
ban4jp 0:b1be2bea94df 33 printByte(p[i]);
ban4jp 0:b1be2bea94df 34 }
ban4jp 0:b1be2bea94df 35 }
ban4jp 0:b1be2bea94df 36 void printIPAddress(uint8_t* p)
ban4jp 0:b1be2bea94df 37 {
ban4jp 0:b1be2bea94df 38 pc.printf("%d", p[0]);
ban4jp 0:b1be2bea94df 39 pc.printf(".");
ban4jp 0:b1be2bea94df 40 pc.printf("%d", p[1]);
ban4jp 0:b1be2bea94df 41 pc.printf(".");
ban4jp 0:b1be2bea94df 42 pc.printf("%d", p[2]);
ban4jp 0:b1be2bea94df 43 pc.printf(".");
ban4jp 0:b1be2bea94df 44 pc.printf("%d", p[3]);
ban4jp 0:b1be2bea94df 45 }
ban4jp 0:b1be2bea94df 46 uint8_t iSDIO_status()
ban4jp 0:b1be2bea94df 47 {
ban4jp 0:b1be2bea94df 48 pc.printf("\nRead iSDIO Status Register");
ban4jp 0:b1be2bea94df 49 // Read iSDIO Status Register (E7 1.10 2.2.2.1)
ban4jp 0:b1be2bea94df 50 memset(buffer, 0, 0x200);
ban4jp 0:b1be2bea94df 51 if (!sd.readExtMemory(1, 1, 0x400, 0x200, buffer)) {
ban4jp 0:b1be2bea94df 52 return false;
ban4jp 0:b1be2bea94df 53 }
ban4jp 0:b1be2bea94df 54 #if 0
ban4jp 0:b1be2bea94df 55 for (int i = 0; i < 0x200; i++) {
ban4jp 0:b1be2bea94df 56 pc.printf("%2x ", buffer[i]);
ban4jp 0:b1be2bea94df 57 if ((i & 0xf) == 0xf) pc.printf("\n");
ban4jp 0:b1be2bea94df 58 }
ban4jp 0:b1be2bea94df 59 #endif
ban4jp 0:b1be2bea94df 60 // Show values in the common status area.
ban4jp 0:b1be2bea94df 61 pc.printf("\n == iSDIO Status Registers == ");
ban4jp 0:b1be2bea94df 62 pc.printf("\n [0400h] Command Write Status: ");
ban4jp 0:b1be2bea94df 63 if (buffer[0x000] & 0x01) pc.printf("CWU ");
ban4jp 0:b1be2bea94df 64 if (buffer[0x000] & 0x02) pc.printf("CWA ");
ban4jp 0:b1be2bea94df 65 pc.printf("\n [0420h] iSDIO Status: ");
ban4jp 0:b1be2bea94df 66 if (buffer[0x020] & 0x01) pc.printf("CRU ");
ban4jp 0:b1be2bea94df 67 if (buffer[0x020] & 0x02) pc.printf("ESU ");
ban4jp 0:b1be2bea94df 68 if (buffer[0x020] & 0x04) pc.printf("MCU ");
ban4jp 0:b1be2bea94df 69 if (buffer[0x020] & 0x08) pc.printf("ASU ");
ban4jp 0:b1be2bea94df 70 pc.printf("\n [0422h] iSDIO Int Enable: ");
ban4jp 0:b1be2bea94df 71 if (buffer[0x022] & 0x01) pc.printf("CRU_ENA ");
ban4jp 0:b1be2bea94df 72 if (buffer[0x022] & 0x02) pc.printf("ESU_ENA ");
ban4jp 0:b1be2bea94df 73 if (buffer[0x022] & 0x04) pc.printf("MCU_ENA ");
ban4jp 0:b1be2bea94df 74 if (buffer[0x022] & 0x08) pc.printf("ASU_ENA ");
ban4jp 0:b1be2bea94df 75 pc.printf("\n [0424h] Error Status: ");
ban4jp 0:b1be2bea94df 76 if (buffer[0x024] & 0x01) pc.printf("CRE ");
ban4jp 0:b1be2bea94df 77 if (buffer[0x024] & 0x02) pc.printf("CWE ");
ban4jp 0:b1be2bea94df 78 if (buffer[0x024] & 0x04) pc.printf("RRE ");
ban4jp 0:b1be2bea94df 79 if (buffer[0x024] & 0x08) pc.printf("APE ");
ban4jp 0:b1be2bea94df 80 pc.printf("\n [0426h] Memory Status: ");
ban4jp 0:b1be2bea94df 81 if (buffer[0x026] & 0x01) pc.printf("MEX ");
ban4jp 0:b1be2bea94df 82 if (buffer[0x026] & 0x02) pc.printf("FAT ");
ban4jp 0:b1be2bea94df 83 for (int i = 0; i < 8; ++i) {
ban4jp 0:b1be2bea94df 84 uint8_t addr = 0x40 + i * 0x14;
ban4jp 0:b1be2bea94df 85 pc.printf("\n [04");
ban4jp 0:b1be2bea94df 86 printByte(addr);
ban4jp 0:b1be2bea94df 87 pc.printf("h] Command Response Status #");
ban4jp 0:b1be2bea94df 88 pc.printf("%d", i + 1);
ban4jp 0:b1be2bea94df 89 pc.printf(": ");
ban4jp 0:b1be2bea94df 90 if (buffer[addr] & 0x01) {
ban4jp 0:b1be2bea94df 91 pc.printf("id = ");
ban4jp 0:b1be2bea94df 92 pc.printf("%d", get_u16(buffer + addr + 2));
ban4jp 0:b1be2bea94df 93 pc.printf(", sequence id = ");
ban4jp 0:b1be2bea94df 94 pc.printf("%d", get_u32(buffer + addr + 4));
ban4jp 0:b1be2bea94df 95 pc.printf(", status = ");
ban4jp 0:b1be2bea94df 96 switch (buffer[addr + 8]) {
ban4jp 0:b1be2bea94df 97 case 0x00:
ban4jp 0:b1be2bea94df 98 pc.printf("Initial");
ban4jp 0:b1be2bea94df 99 break;
ban4jp 0:b1be2bea94df 100 case 0x01:
ban4jp 0:b1be2bea94df 101 pc.printf("Command Processing");
ban4jp 0:b1be2bea94df 102 break;
ban4jp 0:b1be2bea94df 103 case 0x02:
ban4jp 0:b1be2bea94df 104 pc.printf("Command Rejected");
ban4jp 0:b1be2bea94df 105 break;
ban4jp 0:b1be2bea94df 106 case 0x03:
ban4jp 0:b1be2bea94df 107 pc.printf("Process Succeeded");
ban4jp 0:b1be2bea94df 108 break;
ban4jp 0:b1be2bea94df 109 case 0x04:
ban4jp 0:b1be2bea94df 110 pc.printf("Process Terminated");
ban4jp 0:b1be2bea94df 111 break;
ban4jp 0:b1be2bea94df 112 default:
ban4jp 0:b1be2bea94df 113 pc.printf("Process Failed ");
ban4jp 0:b1be2bea94df 114 pc.printf("%h", buffer[addr + 8]);
ban4jp 0:b1be2bea94df 115 break;
ban4jp 0:b1be2bea94df 116 }
ban4jp 0:b1be2bea94df 117 } else {
ban4jp 0:b1be2bea94df 118 pc.printf("Not registered");
ban4jp 0:b1be2bea94df 119 }
ban4jp 0:b1be2bea94df 120 }
ban4jp 0:b1be2bea94df 121 // Show values in the application status area.
ban4jp 0:b1be2bea94df 122 pc.printf("\n == Wireless LAN Status Registers ==");
ban4jp 0:b1be2bea94df 123 pc.printf("\n [0500h] DLNA Status: ");
ban4jp 0:b1be2bea94df 124 if (buffer[0x100] & 0x01) pc.printf("ULR ");
ban4jp 0:b1be2bea94df 125 if (buffer[0x100] & 0x02) pc.printf("DLU ");
ban4jp 0:b1be2bea94df 126 if (buffer[0x100] & 0x04) pc.printf("CBR ");
ban4jp 0:b1be2bea94df 127 if (buffer[0x100] & 0x08) pc.printf("CDR ");
ban4jp 0:b1be2bea94df 128 pc.printf("\n [0501h] P2P Status: ");
ban4jp 0:b1be2bea94df 129 if (buffer[0x101] & 0x01) pc.printf("ILU ");
ban4jp 0:b1be2bea94df 130 if (buffer[0x101] & 0x02) pc.printf("FLU ");
ban4jp 0:b1be2bea94df 131 pc.printf("\n [0502h] PTP Status: ");
ban4jp 0:b1be2bea94df 132 if (buffer[0x102] & 0x01) pc.printf("RPO ");
ban4jp 0:b1be2bea94df 133 if (buffer[0x102] & 0x02) pc.printf("RPD ");
ban4jp 0:b1be2bea94df 134 if (buffer[0x102] & 0x04) pc.printf("RPC ");
ban4jp 0:b1be2bea94df 135 if (buffer[0x102] & 0x08) pc.printf("CPI ");
ban4jp 0:b1be2bea94df 136 if (buffer[0x102] & 0x10) pc.printf("DPI ");
ban4jp 0:b1be2bea94df 137 if (buffer[0x102] & 0x20) pc.printf("CIL ");
ban4jp 0:b1be2bea94df 138 pc.printf("\n [0504h] Application: ");
ban4jp 0:b1be2bea94df 139 pc.printf((char *)buffer[0x104]);
ban4jp 0:b1be2bea94df 140 pc.printf("\n [0506h] WLAN: ");
ban4jp 0:b1be2bea94df 141 if ((buffer[0x106] & 0x01) == 0x00) pc.printf("No Scan, ");
ban4jp 0:b1be2bea94df 142 if ((buffer[0x106] & 0x01) == 0x01) pc.printf("Scanning, ");
ban4jp 0:b1be2bea94df 143 if ((buffer[0x106] & 0x06) == 0x00) pc.printf("No WPS, ");
ban4jp 0:b1be2bea94df 144 if ((buffer[0x106] & 0x06) == 0x02) pc.printf("WPS with PIN, ");
ban4jp 0:b1be2bea94df 145 if ((buffer[0x106] & 0x06) == 0x04) pc.printf("WPS with PBC, ");
ban4jp 0:b1be2bea94df 146 if ((buffer[0x106] & 0x08) == 0x00) pc.printf("Group Client, ");
ban4jp 0:b1be2bea94df 147 if ((buffer[0x106] & 0x08) == 0x08) pc.printf("Group Owner ");
ban4jp 0:b1be2bea94df 148 if ((buffer[0x106] & 0x10) == 0x00) pc.printf("STA, ");
ban4jp 0:b1be2bea94df 149 if ((buffer[0x106] & 0x10) == 0x10) pc.printf("AP, ");
ban4jp 0:b1be2bea94df 150 if ((buffer[0x106] & 0x60) == 0x00) pc.printf("Initial, ");
ban4jp 0:b1be2bea94df 151 if ((buffer[0x106] & 0x60) == 0x20) pc.printf("Infrastructure, ");
ban4jp 0:b1be2bea94df 152 if ((buffer[0x106] & 0x60) == 0x40) pc.printf("Wi-Fi Direct, ");
ban4jp 0:b1be2bea94df 153 if ((buffer[0x106] & 0x80) == 0x00) pc.printf("No Connection, ");
ban4jp 0:b1be2bea94df 154 if ((buffer[0x106] & 0x80) == 0x80) pc.printf("Connected, ");
ban4jp 0:b1be2bea94df 155 pc.printf("\n [0508h] SSID: ");
ban4jp 0:b1be2bea94df 156 for (int i = 0; i < 32 && buffer[0x108 + i] != 0; ++i) {
ban4jp 0:b1be2bea94df 157 pc.printf("%c", (char)buffer[0x108 + i]);
ban4jp 0:b1be2bea94df 158 }
ban4jp 0:b1be2bea94df 159 pc.printf("\n [0528h] Encryption Mode: ");
ban4jp 0:b1be2bea94df 160 switch (buffer[0x128]) {
ban4jp 0:b1be2bea94df 161 case 0 :
ban4jp 0:b1be2bea94df 162 pc.printf("Open System and no encryption");
ban4jp 0:b1be2bea94df 163 break;
ban4jp 0:b1be2bea94df 164 case 1 :
ban4jp 0:b1be2bea94df 165 pc.printf("Open System and WEP");
ban4jp 0:b1be2bea94df 166 break;
ban4jp 0:b1be2bea94df 167 case 2 :
ban4jp 0:b1be2bea94df 168 pc.printf("Shared Key and WEP");
ban4jp 0:b1be2bea94df 169 break;
ban4jp 0:b1be2bea94df 170 case 3 :
ban4jp 0:b1be2bea94df 171 pc.printf("WPA-PSK and TKIP");
ban4jp 0:b1be2bea94df 172 break;
ban4jp 0:b1be2bea94df 173 case 4 :
ban4jp 0:b1be2bea94df 174 pc.printf("WPA-PSK and AES");
ban4jp 0:b1be2bea94df 175 break;
ban4jp 0:b1be2bea94df 176 case 5 :
ban4jp 0:b1be2bea94df 177 pc.printf("WPA2-PSK and TKIP");
ban4jp 0:b1be2bea94df 178 break;
ban4jp 0:b1be2bea94df 179 case 6 :
ban4jp 0:b1be2bea94df 180 pc.printf("WPA2-PSK and AES");
ban4jp 0:b1be2bea94df 181 break;
ban4jp 0:b1be2bea94df 182 default:
ban4jp 0:b1be2bea94df 183 pc.printf("Unknown");
ban4jp 0:b1be2bea94df 184 }
ban4jp 0:b1be2bea94df 185 pc.printf("\n [0529h] Signal Strength: ");
ban4jp 0:b1be2bea94df 186 pc.printf("%d", buffer[0x129]);
ban4jp 0:b1be2bea94df 187 pc.printf("\n [052Ah] Channel: ");
ban4jp 0:b1be2bea94df 188 if (buffer[0x12A] == 0) pc.printf("No connection");
ban4jp 0:b1be2bea94df 189 else pc.printf("%d", buffer[0x12A]);
ban4jp 0:b1be2bea94df 190 pc.printf("\n [0530h] MAC Address: ");
ban4jp 0:b1be2bea94df 191 printBytes(buffer + 0x130, 6);
ban4jp 0:b1be2bea94df 192 pc.printf("\n [0540h] ID: ");
ban4jp 0:b1be2bea94df 193 for (int i = 0; i < 16 && buffer[0x140 + i] != 0; ++i) {
ban4jp 0:b1be2bea94df 194 pc.printf("%c", (char)buffer[0x140 + i]);
ban4jp 0:b1be2bea94df 195 }
ban4jp 0:b1be2bea94df 196 pc.printf("\n [0550h] IP Address: ");
ban4jp 0:b1be2bea94df 197 printIPAddress(buffer + 0x150);
ban4jp 0:b1be2bea94df 198 pc.printf("\n [0554h] Subnet Mask: ");
ban4jp 0:b1be2bea94df 199 printIPAddress(buffer + 0x154);
ban4jp 0:b1be2bea94df 200 pc.printf("\n [0558h] Default Gateway: ");
ban4jp 0:b1be2bea94df 201 printIPAddress(buffer + 0x158);
ban4jp 0:b1be2bea94df 202 pc.printf("\n [055Ch] Preferred DNS Server: ");
ban4jp 0:b1be2bea94df 203 printIPAddress(buffer + 0x15C);
ban4jp 0:b1be2bea94df 204 pc.printf("\n [0560h] Alternate DNS Server: ");
ban4jp 0:b1be2bea94df 205 printIPAddress(buffer + 0x160);
ban4jp 0:b1be2bea94df 206 pc.printf("\n [0564h] Proxy Server: ");
ban4jp 0:b1be2bea94df 207 if ((buffer[0x164] & 0x01) == 0x00) pc.printf("Disabled");
ban4jp 0:b1be2bea94df 208 if ((buffer[0x164] & 0x01) == 0x01) pc.printf("Enabled");
ban4jp 0:b1be2bea94df 209 pc.printf("\n [0570h] Date: ");
ban4jp 0:b1be2bea94df 210 pc.printf("%d", buffer[0x171] + 1980);
ban4jp 0:b1be2bea94df 211 pc.printf("-");
ban4jp 0:b1be2bea94df 212 pc.printf("%d", buffer[0x170] >> 4);
ban4jp 0:b1be2bea94df 213 pc.printf("-");
ban4jp 0:b1be2bea94df 214 pc.printf("%d", buffer[0x170] & 0xF);
ban4jp 0:b1be2bea94df 215 pc.printf("\n [0572h] Time: ");
ban4jp 0:b1be2bea94df 216 pc.printf("%d", buffer[0x173] >> 3);
ban4jp 0:b1be2bea94df 217 pc.printf(":");
ban4jp 0:b1be2bea94df 218 pc.printf("%d", buffer[0x172] << 3 | buffer[0x170] >> 3);
ban4jp 0:b1be2bea94df 219 pc.printf(":");
ban4jp 0:b1be2bea94df 220 pc.printf("%d", (buffer[0x172] & 0x1F) * 2);
ban4jp 0:b1be2bea94df 221 pc.printf("\n [0574h] HTTP Status: ");
ban4jp 0:b1be2bea94df 222 pc.printf("%d", buffer[0x174] & 0xEF);
ban4jp 0:b1be2bea94df 223 if ((buffer[0x174] & 0x80) == 0x00) pc.printf(" (No Processing)");
ban4jp 0:b1be2bea94df 224 if ((buffer[0x174] & 0x80) == 0x80) pc.printf(" (Processing)");
ban4jp 0:b1be2bea94df 225 pc.printf("\n [0575h] Power Save Management: ");
ban4jp 0:b1be2bea94df 226 if ((buffer[0x175] & 0x01) == 0x00) pc.printf("Power Save Mode Off");
ban4jp 0:b1be2bea94df 227 if ((buffer[0x175] & 0x01) == 0x01) pc.printf("Power Save Mode On");
ban4jp 0:b1be2bea94df 228 pc.printf("\n [0576h] File System Management: ");
ban4jp 0:b1be2bea94df 229 if ((buffer[0x176] & 0x01) == 0x00) pc.printf("FS Information may be modified");
ban4jp 0:b1be2bea94df 230 if ((buffer[0x176] & 0x01) == 0x01) pc.printf("FS Information shall not be modified");
ban4jp 0:b1be2bea94df 231 pc.printf("\n");
ban4jp 0:b1be2bea94df 232
ban4jp 0:b1be2bea94df 233 #if 0
ban4jp 0:b1be2bea94df 234 memset(buffer, 0, 0x200);
ban4jp 0:b1be2bea94df 235 if (!sd2->readExtMemory(1, 1, 0x600, 0x100, buffer)) {
ban4jp 0:b1be2bea94df 236 return false;
ban4jp 0:b1be2bea94df 237 }
ban4jp 0:b1be2bea94df 238
ban4jp 0:b1be2bea94df 239 for (int i = 0; i < 0x100; i++) {
ban4jp 0:b1be2bea94df 240 pc.printf("%2x ", buffer[i]);
ban4jp 0:b1be2bea94df 241 if ((i & 0xf) == 0xf) pc.printf("\n");
ban4jp 0:b1be2bea94df 242 }
ban4jp 0:b1be2bea94df 243 #endif
ban4jp 0:b1be2bea94df 244
ban4jp 0:b1be2bea94df 245 return true;
ban4jp 0:b1be2bea94df 246 }
ban4jp 0:b1be2bea94df 247 //**************************************************
ban4jp 0:b1be2bea94df 248
ban4jp 0:b1be2bea94df 249 int main()
ban4jp 0:b1be2bea94df 250 {
ban4jp 0:b1be2bea94df 251 pc.printf("start.\n");
ban4jp 0:b1be2bea94df 252
ban4jp 0:b1be2bea94df 253 //Initialise card
ban4jp 0:b1be2bea94df 254 FILE *fp = fopen("/sd/mbed.txt", "w");
ban4jp 0:b1be2bea94df 255 fclose(fp);
ban4jp 0:b1be2bea94df 256
ban4jp 0:b1be2bea94df 257 // WiFi Connection --------------------
ban4jp 0:b1be2bea94df 258
ban4jp 0:b1be2bea94df 259 // Connection wait
ban4jp 0:b1be2bea94df 260 while(1) {
ban4jp 0:b1be2bea94df 261 memset(buffer, 0, 0x14);
ban4jp 0:b1be2bea94df 262 if (!sd.readExtMemory(1, 1, 0x506, 0x14, buffer)) {
ban4jp 0:b1be2bea94df 263 return -1;
ban4jp 0:b1be2bea94df 264 }
ban4jp 0:b1be2bea94df 265 uint8_t resp = get_u8(buffer);
ban4jp 0:b1be2bea94df 266 if ((resp & 0x80) != 0) {
ban4jp 0:b1be2bea94df 267 break;
ban4jp 0:b1be2bea94df 268 }
ban4jp 0:b1be2bea94df 269 pc.printf(".\n");
ban4jp 0:b1be2bea94df 270 wait_ms(1000);
ban4jp 0:b1be2bea94df 271 }
ban4jp 0:b1be2bea94df 272
ban4jp 0:b1be2bea94df 273 // Dump status
ban4jp 0:b1be2bea94df 274 if (iSDIO_status() == false) {
ban4jp 0:b1be2bea94df 275 pc.printf("Failed to read status.\n");
ban4jp 0:b1be2bea94df 276 return -1;
ban4jp 0:b1be2bea94df 277 }
ban4jp 0:b1be2bea94df 278
ban4jp 0:b1be2bea94df 279 // Abort command
ban4jp 0:b1be2bea94df 280 for (int i = 0; i < 8; ++i) {
ban4jp 0:b1be2bea94df 281 uint8_t addr = 0x40 + i * 0x14;
ban4jp 0:b1be2bea94df 282 if (buffer[addr] & 0x01) {
ban4jp 0:b1be2bea94df 283 int abortSequenceId = get_u32(buffer + addr + 4);
ban4jp 0:b1be2bea94df 284 int sequenceId = sd.getSequenceId();
ban4jp 0:b1be2bea94df 285 memset(buffer, 0, 512);
ban4jp 0:b1be2bea94df 286 uint8_t* p = buffer;
ban4jp 0:b1be2bea94df 287 p = put_command_header(p, 1, 0);
ban4jp 0:b1be2bea94df 288 p = put_command_info_header(p, 0x12, sequenceId, 2);
ban4jp 0:b1be2bea94df 289 p = put_u32_arg(p, abortSequenceId);
ban4jp 0:b1be2bea94df 290 put_command_header(buffer, 1, (p - buffer));
ban4jp 0:b1be2bea94df 291 if ( sd.writeExtDataPort(1, 1, 0x000, buffer) == false ) {
ban4jp 0:b1be2bea94df 292 return -1;
ban4jp 0:b1be2bea94df 293 }
ban4jp 0:b1be2bea94df 294 sd.waitResponse(sequenceId);
ban4jp 0:b1be2bea94df 295 }
ban4jp 0:b1be2bea94df 296 }
ban4jp 0:b1be2bea94df 297 for (int i = 0; i < 16; i++) {
ban4jp 0:b1be2bea94df 298 if (!sd.readExtDataPort(1, 1, 0x200, buffer)) {
ban4jp 0:b1be2bea94df 299 return -1;
ban4jp 0:b1be2bea94df 300 }
ban4jp 0:b1be2bea94df 301 }
ban4jp 0:b1be2bea94df 302
ban4jp 0:b1be2bea94df 303 // Update time --------------------
ban4jp 0:b1be2bea94df 304
ban4jp 0:b1be2bea94df 305 HTTPClient http;
ban4jp 0:b1be2bea94df 306 char str[512];
ban4jp 0:b1be2bea94df 307
ban4jp 0:b1be2bea94df 308 pc.printf("Trying to update time...\n");
ban4jp 0:b1be2bea94df 309 int ret = http.get("http://ntp-a1.nict.go.jp/cgi-bin/jst", str, 128);
ban4jp 0:b1be2bea94df 310 if (ret) {
ban4jp 0:b1be2bea94df 311 pc.printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
ban4jp 0:b1be2bea94df 312 return -1;
ban4jp 0:b1be2bea94df 313 }
ban4jp 0:b1be2bea94df 314
ban4jp 0:b1be2bea94df 315 pc.printf("Page fetched successfully - read %d characters\n", strlen(str));
ban4jp 0:b1be2bea94df 316 pc.printf("Result: %s\n", str);
ban4jp 0:b1be2bea94df 317
ban4jp 0:b1be2bea94df 318 if (strncmp(str, "<HTML>", 6) != 0) {
ban4jp 0:b1be2bea94df 319 pc.printf("format error 1\n");
ban4jp 0:b1be2bea94df 320 return -1;
ban4jp 0:b1be2bea94df 321 }
ban4jp 0:b1be2bea94df 322 if (strncmp(&str[69], "</HTML>", 7) != 0) {
ban4jp 0:b1be2bea94df 323 pc.printf("format error 2\n");
ban4jp 0:b1be2bea94df 324 return -1;
ban4jp 0:b1be2bea94df 325 }
ban4jp 0:b1be2bea94df 326
ban4jp 0:b1be2bea94df 327 str[56] = '\0';
ban4jp 0:b1be2bea94df 328 //pc.printf("%d\n", atol(&str[46]));
ban4jp 0:b1be2bea94df 329 set_time( atol(&str[46]) );
ban4jp 0:b1be2bea94df 330
ban4jp 0:b1be2bea94df 331 time_t ctTime = time(NULL);
ban4jp 0:b1be2bea94df 332 pc.printf("Time is set to (UTC): %s\n", ctime(&ctTime));
ban4jp 0:b1be2bea94df 333
ban4jp 0:b1be2bea94df 334 // Tweet --------------------
ban4jp 0:b1be2bea94df 335
ban4jp 0:b1be2bea94df 336 std::string uri = "https://api.twitter.com/1.1/statuses/update.json";
ban4jp 0:b1be2bea94df 337
ban4jp 0:b1be2bea94df 338 uri += "?status=";
ban4jp 0:b1be2bea94df 339 uri += OAuth4Tw::url_escape("Hello World!");
ban4jp 0:b1be2bea94df 340 uri += OAuth4Tw::url_escape(ctime(&ctTime));
ban4jp 0:b1be2bea94df 341
ban4jp 0:b1be2bea94df 342 std::string postarg;
ban4jp 0:b1be2bea94df 343 std::string postres = oa4t.post(uri.c_str(), postarg);
ban4jp 0:b1be2bea94df 344 pc.printf("postres: %s\n", postres.c_str());
ban4jp 0:b1be2bea94df 345
ban4jp 0:b1be2bea94df 346 }