FlashTool::FlashTool(QWidget *parent) : QWidget(parent) , ui(new Ui::FlashTool) { ui->setupUi(this); updatePorts(); // Listen to device events DEV_BROADCAST_DEVICEINTERFACE devInt; ZeroMemory(&devInt, sizeof(devInt)); devInt.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE); devInt.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE; devInt.dbcc_classguid = GUID_DEVINTERFACE_COMPORT; HANDLE blub; blub = RegisterDeviceNotification(winId(), &devInt, DEVICE_NOTIFY_WINDOW_HANDLE); connect(ui->bootFlashButton, SIGNAL(clicked()), SLOT(flashBootloader())); connect(ui->flashButton, SIGNAL(clicked()), SLOT(flashFirmware())); }
void onSdManagerMenu(const char *result) { TCHAR lfn[_MAX_LFN+1]; // TODO possible buffer overflows here! uint8_t index = m_posVert-s_pgOfs; char *line = reusableBuffer.sdmanager.lines[index]; if (result == STR_SD_INFO) { pushMenu(menuGeneralSdManagerInfo); } else if (result == STR_SD_FORMAT) { POPUP_CONFIRMATION(STR_CONFIRM_FORMAT); } else if (result == STR_COPY_FILE) { clipboard.type = CLIPBOARD_TYPE_SD_FILE; f_getcwd(clipboard.data.sd.directory, CLIPBOARD_PATH_LEN); strncpy(clipboard.data.sd.filename, line, CLIPBOARD_PATH_LEN-1); } else if (result == STR_PASTE) { f_getcwd(lfn, _MAX_LFN); POPUP_WARNING(fileCopy(clipboard.data.sd.filename, clipboard.data.sd.directory, lfn)); REFRESH_FILES(); } else if (result == STR_RENAME_FILE) { char *ext = getFileExtension(line, SD_SCREEN_FILE_LENGTH+1); if (ext) { memcpy(reusableBuffer.sdmanager.originalName, line, sizeof(reusableBuffer.sdmanager.originalName)); // write spaces to allow a longer filename memset(ext, ' ', SD_SCREEN_FILE_LENGTH-LEN_FILE_EXTENSION-(ext-line)); line[SD_SCREEN_FILE_LENGTH-LEN_FILE_EXTENSION] = '\0'; s_editMode = EDIT_MODIFY_STRING; editNameCursorPos = 0; } } else if (result == STR_DELETE_FILE) { getSelectionFullPath(lfn); f_unlink(lfn); strncpy(statusLineMsg, line, 13); strcpy_P(statusLineMsg+min((uint8_t)strlen(statusLineMsg), (uint8_t)13), STR_REMOVED); showStatusLine(); REFRESH_FILES(); if (m_posVert == reusableBuffer.sdmanager.count-1) { m_posVert--; } } else if (result == STR_PLAY_FILE) { getSelectionFullPath(lfn); audioQueue.stopAll(); audioQueue.playFile(lfn, 0, ID_PLAY_FROM_SD_MANAGER); } else if (result == STR_ASSIGN_BITMAP) { strAppendFilename(g_model.header.bitmap, line, sizeof(g_model.header.bitmap)); memcpy(modelHeaders[g_eeGeneral.currModel].bitmap, g_model.header.bitmap, sizeof(g_model.header.bitmap)); eeDirty(EE_MODEL); } else if (result == STR_VIEW_TEXT) { getSelectionFullPath(lfn); pushMenuTextView(lfn); } else if (result == STR_FLASH_BOOTLOADER) { getSelectionFullPath(lfn); flashBootloader(lfn); } else if (result == STR_FLASH_INTERNAL_MODULE) { getSelectionFullPath(lfn); flashSportDevice(INTERNAL_MODULE, lfn); } else if (result == STR_FLASH_EXTERNAL_DEVICE) { getSelectionFullPath(lfn); flashSportDevice(EXTERNAL_MODULE, lfn); } #if defined(LUA) else if (result == STR_EXECUTE_FILE) { getSelectionFullPath(lfn); luaExec(lfn); } #endif }