int main() { // Initialize PortHandler Structs // Set the port path // Get methods and members of PortHandlerLinux or PortHandlerWindows int port_num = PortHandler(DEVICENAME); // Initialize PacketHandler Structs PacketHandler(); int dxl_comm_result = COMM_TX_FAIL; // Communication result UINT8_T dxl_error = 0; // Dynamixel error UINT8_T dxl_baudnum_read; // Read baudnum // Open port if (OpenPort(port_num)) { printf("Succeeded to open the port!\n"); } else { printf("Failed to open the port!\n"); printf("Press any key to terminate...\n"); _getch(); return 0; } // Set port baudrate if (SetBaudRate(port_num, BAUDRATE)) { printf("Succeeded to change the baudrate!\n"); } else { printf("Failed to change the baudrate!\n"); printf("Press any key to terminate...\n"); _getch(); return 0; } // Read present baudrate of the controller printf("Now the controller baudrate is : %d\n", GetBaudRate(port_num)); // Try factoryreset printf("[ID:%03d] Try factoryreset : ", DXL_ID); FactoryReset(port_num, PROTOCOL_VERSION, DXL_ID, OPERATION_MODE); if ((dxl_comm_result = GetLastTxRxResult(port_num, PROTOCOL_VERSION)) != COMM_SUCCESS) { printf("Aborted\n"); PrintTxRxResult(PROTOCOL_VERSION, dxl_comm_result); return 0; } else if ((dxl_error = GetLastRxPacketError(port_num, PROTOCOL_VERSION)) != 0) PrintRxPacketError(PROTOCOL_VERSION, dxl_error); // Wait for reset printf("Wait for reset...\n"); msecSleep(2000); printf("[ID:%03d] FactoryReset Success!\n", DXL_ID); // Set controller baudrate to Dynamixel default baudrate if (SetBaudRate(port_num, FACTORYRST_DEFAULTBAUDRATE)) { printf("Succeed to change the controller baudrate to : %d\n", FACTORYRST_DEFAULTBAUDRATE); } else { printf("Failed to change the controller baudrate\n"); printf("Press any key to terminate...\n"); _getch(); return 0; } // Read Dynamixel baudnum dxl_baudnum_read = Read1ByteTxRx(port_num, PROTOCOL_VERSION, DXL_ID, ADDR_PRO_BAUDRATE); if ((dxl_comm_result = GetLastTxRxResult(port_num, PROTOCOL_VERSION)) != COMM_SUCCESS) PrintTxRxResult(PROTOCOL_VERSION, dxl_comm_result); else if ((dxl_error = GetLastRxPacketError(port_num, PROTOCOL_VERSION)) != 0) PrintRxPacketError(PROTOCOL_VERSION, dxl_error); else printf("[ID:%03d] DXL baudnum is now : %d\n", DXL_ID, dxl_baudnum_read); // Write new baudnum Write1ByteTxRx(port_num, PROTOCOL_VERSION, DXL_ID, ADDR_PRO_BAUDRATE, NEW_BAUDNUM); if ((dxl_comm_result = GetLastTxRxResult(port_num, PROTOCOL_VERSION)) != COMM_SUCCESS) PrintTxRxResult(PROTOCOL_VERSION, dxl_comm_result); else if ((dxl_error = GetLastRxPacketError(port_num, PROTOCOL_VERSION)) != 0) PrintRxPacketError(PROTOCOL_VERSION, dxl_error); else printf("[ID:%03d] Set Dynamixel baudnum to : %d\n", DXL_ID, NEW_BAUDNUM); // Set port baudrate to BAUDRATE if (SetBaudRate(port_num, BAUDRATE)) { printf("Succeed to change the controller baudrate to : %d\n", BAUDRATE); } else { printf("Failed to change the controller baudrate\n"); printf("Press any key to terminate...\n"); _getch(); return 0; } msecSleep(200); // Read Dynamixel baudnum dxl_baudnum_read = Read1ByteTxRx(port_num, PROTOCOL_VERSION, DXL_ID, ADDR_PRO_BAUDRATE); if ((dxl_comm_result = GetLastTxRxResult(port_num, PROTOCOL_VERSION)) != COMM_SUCCESS) PrintTxRxResult(PROTOCOL_VERSION, dxl_comm_result); else if ((dxl_error = GetLastRxPacketError(port_num, PROTOCOL_VERSION)) != 0) PrintRxPacketError(PROTOCOL_VERSION, dxl_error); else printf("[ID:%03d] Dynamixel Baudnum is now : %d\n", DXL_ID, dxl_baudnum_read); // Close port ClosePort(port_num); return 0; }
void FactoryReset(mozilla::dom::FactoryResetReason& aReason) { AssertMainThread(); PROXY_IF_SANDBOXED(FactoryReset(aReason)); }
void FactoryReset() { AssertMainThread(); PROXY_IF_SANDBOXED(FactoryReset()); }
// Process a touch event void ProcessTouch(DisplayField *df) { if (df->IsButton()) { Button *f = static_cast<Button*>(df); currentButton = f; mgr.Press(f, true); Event ev = (Event)(f->GetEvent()); switch(ev) { case evTabControl: case evTabPrint: // case evTabFiles: case evTabMsg: case evTabInfo: ChangeTab(f); break; case evAdjustActiveTemp: case evAdjustStandbyTemp: if (static_cast<IntegerButton*>(f)->GetValue() < 0) { static_cast<IntegerButton*>(f)->SetValue(0); } Adjusting(f); mgr.SetPopup(setTempPopup, tempPopupX, popupY); break; case evAdjustSpeed: case evExtrusionFactor: Adjusting(f); mgr.SetPopup(setTempPopup, tempPopupX, popupY); break; case evSetInt: if (fieldBeingAdjusted != NULL) { int val = static_cast<const IntegerButton*>(fieldBeingAdjusted)->GetValue(); switch(fieldBeingAdjusted->GetEvent()) { case evAdjustActiveTemp: { int heater = fieldBeingAdjusted->GetIParam(); if (heater == 0) { SerialIo::SendString("M140 S"); SerialIo::SendInt(val); SerialIo::SendChar('\n'); } else { SerialIo::SendString("G10 P"); SerialIo::SendInt(heater - 1); SerialIo::SendString(" S"); SerialIo::SendInt(val); SerialIo::SendChar('\n'); } } break; case evAdjustStandbyTemp: { int heater = fieldBeingAdjusted->GetIParam(); if (heater > 0) { SerialIo::SendString("G10 P"); SerialIo::SendInt(heater - 1); SerialIo::SendString(" R"); SerialIo::SendInt(val); SerialIo::SendChar('\n'); } } break; case evExtrusionFactor: { int heater = fieldBeingAdjusted->GetIParam(); SerialIo::SendString("M221 P"); SerialIo::SendInt(heater); SerialIo::SendString(" S"); SerialIo::SendInt(val); SerialIo::SendChar('\n'); } break; default: { const char* null cmd = fieldBeingAdjusted->GetSParam(); if (cmd != NULL) { SerialIo::SendString(cmd); SerialIo::SendInt(val); SerialIo::SendChar('\n'); } } break; } mgr.SetPopup(NULL); StopAdjusting(); } break; case evAdjustInt: if (fieldBeingAdjusted != NULL) { static_cast<IntegerButton*>(fieldBeingAdjusted)->Increment(f->GetIParam()); ShortenTouchDelay(); } break; case evMove: mgr.SetPopup(movePopup, movePopupX, movePopupY); break; case evMoveX: case evMoveY: case evMoveZ: SerialIo::SendString("G91\nG1 "); SerialIo::SendChar((ev == evMoveX) ? 'X' : (ev == evMoveY) ? 'Y' : 'Z'); SerialIo::SendString(f->GetSParam()); SerialIo::SendString(" F6000\nG90\n"); break; case evListFiles: FileManager::DisplayFilesList(); break; case evListMacros: FileManager::DisplayMacrosList(); break; case evCalTouch: CalibrateTouch(); CheckSettingsAreSaved(); break; case evFactoryReset: PopupAreYouSure(ev, "Confirm factory reset"); break; case evRestart: PopupAreYouSure(ev, "Confirm restart"); break; case evSaveSettings: SaveSettings(); if (restartNeeded) { PopupRestart(); } break; case evSelectHead: { int head = f->GetIParam(); if (head == 0) { // There is no command to switch the bed to standby temperature, so we always set it to the active temperature SerialIo::SendString("M140 S"); SerialIo::SendInt(activeTemps[0]->GetValue()); SerialIo::SendChar('\n'); } else if (head < (int)maxHeaters) { if (heaterStatus[head] == 2) // if head is active { SerialIo::SendString("T-1\n"); } else { SerialIo::SendChar('T'); SerialIo::SendInt(head - 1); SerialIo::SendChar('\n'); } } } break; case evFile: { const char *fileName = f->GetSParam(); if (fileName != nullptr) { currentFile = fileName; SerialIo::SendString("M36 /gcodes/"); // ask for the file info SerialIo::SendString(currentFile); SerialIo::SendChar('\n'); fpNameField->SetValue(currentFile); // Clear out the old field values, they relate to the previous file we looked at until we process the response fpSizeField->SetValue(0); // would be better to make it blank fpHeightField->SetValue(0.0); // would be better to make it blank fpLayerHeightField->SetValue(0.0); // would be better to make it blank fpFilamentField->SetValue(0); // would be better to make it blank generatedByText.clear(); fpGeneratedByField->SetChanged(); mgr.SetPopup(filePopup, (DisplayX - filePopupWidth)/2, (DisplayY - filePopupHeight)/2); } else { ErrorBeep(); } } break; case evMacro: { const char *fileName = f->GetSParam(); if (fileName != nullptr) { if (fileName[0] == '*') // if it's a directory { } else { SerialIo::SendString("M98 P/macros/"); SerialIo::SendString(fileName); SerialIo::SendChar('\n'); } } else { ErrorBeep(); } } break; case evPrint: mgr.SetPopup(NULL); if (currentFile != NULL) { SerialIo::SendString("M32 "); SerialIo::SendString(currentFile); SerialIo::SendChar('\n'); printingFile.copyFrom(currentFile); currentFile = NULL; // allow the file list to be updated CurrentButtonReleased(); ChangeTab(tabPrint); } break; case evCancelPrint: CurrentButtonReleased(); mgr.SetPopup(NULL); currentFile = NULL; // allow the file list to be updated break; case evDeleteFile: CurrentButtonReleased();; PopupAreYouSure(ev, "Confirm file delete"); break; case evSendCommand: case evPausePrint: case evResumePrint: case evReset: SerialIo::SendString(f->GetSParam()); SerialIo::SendChar('\n'); break; case evScrollFiles: FileManager::Scroll(f->GetIParam()); ShortenTouchDelay(); break; case evKeyboard: mgr.SetPopup(keyboardPopup, keyboardPopupX, keyboardPopupY); break; case evInvertDisplay: nvData.lcdOrientation = static_cast<DisplayOrientation>(nvData.lcdOrientation ^ (ReverseX | ReverseY | InvertText | InvertBitmap)); lcd.InitLCD(nvData.lcdOrientation); CalibrateTouch(); CheckSettingsAreSaved(); break; case evSetBaudRate: Adjusting(f); mgr.SetPopup(baudPopup, fullWidthPopupX, popupY); break; case evAdjustBaudRate: nvData.baudRate = f->GetIParam(); SerialIo::Init(nvData.baudRate); baudRateButton->SetValue(nvData.baudRate); CheckSettingsAreSaved(); CurrentButtonReleased(); mgr.SetPopup(NULL); StopAdjusting(); break; case evSetVolume: Adjusting(f); mgr.SetPopup(volumePopup, fullWidthPopupX, popupY); break; case evAdjustVolume: nvData.touchVolume = f->GetIParam(); volumeButton->SetValue(nvData.touchVolume); TouchBeep(); // give audible feedback of the touch at the new volume level CheckSettingsAreSaved(); break; case evSetLanguage: Adjusting(f); mgr.SetPopup(languagePopup, fullWidthPopupX, popupY); break; case evAdjustLanguage: nvData.language = f->GetIParam(); languageButton->SetText(longLanguageNames[nvData.language]); CheckSettingsAreSaved(); // not sure we need this because we are going to reset anyway break; case evYes: CurrentButtonReleased(); mgr.SetPopup(nullptr); switch (eventToConfirm) { case evFactoryReset: FactoryReset(); break; case evDeleteFile: if (currentFile != nullptr) { SerialIo::SendString("M30 "); SerialIo::SendString(currentFile); SerialIo::SendChar('\n'); filesListTimer.SetPending(); currentFile = nullptr; } break; case evRestart: if (nvData != savedNvData) { SaveSettings(); } Restart(); break; default: break; } eventToConfirm = evNull; currentFile = NULL; break; case evCancel: eventToConfirm = evNull; currentFile = NULL; CurrentButtonReleased(); mgr.SetPopup(NULL); break; case evKey: if (!userCommandBuffer.full()) { userCommandBuffer.add((char)f->GetIParam()); userCommandField->SetChanged(); } break; case evBackspace: if (!userCommandBuffer.isEmpty()) { userCommandBuffer.erase(userCommandBuffer.size() - 1); userCommandField->SetChanged(); ShortenTouchDelay(); } break; case evSendKeyboardCommand: if (userCommandBuffer.size() != 0) { SerialIo::SendString(userCommandBuffer.c_str()); SerialIo::SendChar('\n'); } break; default: break; }