DJI NAZA-M controller (remote controller side) see: https://developer.mbed.org/users/okini3939/notebook/drone/
Dependencies: NECnfc SpiOLED USBHost mbed
usbmsd.cpp
- Committer:
- okini3939
- Date:
- 2016-05-19
- Revision:
- 1:d83f8332ebfe
- Parent:
- 0:9f11e7a30865
File content as of revision 1:d83f8332ebfe:
#include "mbed.h" #include "drone.h" #include "USBHostMSD.h" Thread *thread_msd; volatile int log_flg = 0; char log_buf[256]; extern struct AirData send_data; extern struct Status stat, stat_gnd; void log () { time_t sec = time(NULL); struct tm *t = localtime(&sec); snprintf(log_buf, sizeof(log_buf), "%04d%02d%02d,%02d%02d%02d", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec); snprintf(&log_buf[15], sizeof(log_buf) - 15, ",G,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d", stat_gnd.gps_lat, stat_gnd.gps_lng, stat_gnd.gps_h, stat_gnd.gps_sat, stat_gnd.gps_type, send_data.aileron, send_data.elevator, send_data.throttle, send_data.rudder, send_data.analog1, send_data.analog2, send_data.sw1, send_data.sw2 ); snprintf(&log_buf[strlen(log_buf)], sizeof(log_buf) - strlen(log_buf), ",A,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\r\n", stat.gps_lat, stat.gps_lng, stat.gps_h, stat.gps_sat, stat.gps_type, stat.gps_flg, stat.gps_lost, stat.compass_x, stat.compass_y, stat.compass_z, stat.compass, stat.uptime, stat.battery, stat.current, stat.amphour, stat.distance1, stat.distance2 ); // printf(log_buf); log_flg = strlen(log_buf); } void taskMsd (void const *args) { int num; FILE *fp; char buf[20]; USBHostMSD msd("usb"); for (;;) { // usb connect while(! msd.connect()) { Thread::wait(500); } num = 1; fp = fopen("/usb/seq.txt", "r"); if (fp) { if (fgets(buf, sizeof(buf), fp) != NULL) { num = atoi(buf); if (! num) num = 1; } fclose(fp); } fp = fopen("/usb/seq.txt", "w"); if (fp) { fprintf(fp, "%d", num + 1); fclose(fp); } // filename sprintf(buf, "/usb/drone%03d.log", num); printf("log: %s\r\n", buf); while (msd.connected()) { if (log_flg) { // log fp = fopen(buf, "a"); if (fp) { fwrite(log_buf, sizeof(char), log_flg, fp); fclose(fp); } log_flg = 0; } Thread::wait(1); } } } int initMsd () { thread_msd = new Thread(taskMsd, NULL, osPriorityNormal, 1024 * 4); }