idigi_callback_status_t iDigiFileSystem::app_process_file_write(idigi_file_write_request_t * const request_data, idigi_file_write_response_t * const response_data) { idigi_callback_status_t status = idigi_callback_continue; SdFile *file = (SdFile *) request_data->handle; file->clearWriteError(); size_t wrote = file->write(request_data->data_ptr, request_data->size_in_bytes); if (file->getWriteError()) { response_data->error->error_status = idigi_file_unspec_error; APP_DEBUG("write attempt %d, returned err (wrote: %d)\n", request_data->size_in_bytes, wrote); goto done; } APP_DEBUG("write attempt %d, wrote: %d\n", request_data->size_in_bytes, wrote); response_data->size_in_bytes = wrote; done: return status; }
bool open(char* fileName) { // Create LDxxxx.CSV for the lowest value of x. #ifdef SDCARD uint16_t i = 0; do { fileName[2] = (i/1000) % 10 + '0'; fileName[3] = (i/100) % 10 + '0'; fileName[4] = (i/10) % 10 + '0'; fileName[5] = i % 10 + '0'; i++; } while(sd.exists(fileName)); if(!file.open(fileName, O_CREAT | O_WRITE | O_EXCL)) { // error_P("file open"); return false; } file.clearWriteError(); // write data header file.print("time (s)"); #endif Serial.print("v"); Serial.println(FIRMWARE_VERSION); Serial.print("File: "); Serial.println(fileName); // write data header Serial.print("time (s)"); /* We are no longer using the junction temperature in our data output. // write data header file.print("time (s), ambient"); Serial.print("time (s), ambient"); switch(temperatureUnit) { case TEMPERATURE_UNITS_C: file.print(" (C)"); Serial.print(" (C)"); break; case TEMPERATURE_UNITS_F: file.print(" (F)"); Serial.print(" (F)"); break; case TEMPERATURE_UNITS_K: file.print(" (K)"); Serial.print(" (K)"); break; }*/ for (uint8_t i = 0; i < SENSOR_COUNT; i++) { #ifdef SDCARD file.print(", temp_"); file.print(i, DEC); #endif Serial.print(", temp_"); Serial.print(i, DEC); switch(temperatureUnit) { case TEMPERATURE_UNITS_C: #ifdef SDCARD file.print(" (C)"); #endif Serial.print(" (C)"); break; case TEMPERATURE_UNITS_F: #ifdef SDCARD file.print(" (F)"); #endif Serial.print(" (F)"); break; case TEMPERATURE_UNITS_K: #ifdef SDCARD file.print(" (K)"); #endif Serial.print(" (K)"); break; } } #ifdef SDCARD file.println(); file.flush(); #endif Serial.println(); #ifdef SDCARD return (file.getWriteError() == false); #else return true; #endif }