sl@6: sl@6: sl@6: #ifndef MAIN_WINDOW_H sl@6: #define MAIN_WINDOW_H sl@6: sl@6: #include sl@6: #include "hidapi.h" sl@6: #include "mac_support.h" sl@6: #include sl@6: #include sl@6: #include sl@9: #include "FutabaVfd.h" sl@6: sl@6: #ifdef _WIN32 sl@6: // Thanks Microsoft, but I know how to use strncpy(). sl@6: #pragma warning(disable:4996) sl@6: #endif sl@6: sl@6: class MainWindow : public FXMainWindow { sl@6: FXDECLARE(MainWindow) sl@6: sl@6: public: sl@6: enum { sl@6: ID_FIRST = FXMainWindow::ID_LAST, sl@6: ID_CONNECT, sl@6: ID_DISCONNECT, sl@6: ID_RESCAN, sl@6: ID_SEND_OUTPUT_REPORT, sl@6: ID_SEND_FEATURE_REPORT, sl@6: ID_GET_FEATURE_REPORT, sl@6: ID_CLEAR, sl@6: ID_TIMER, sl@6: ID_MAC_TIMER, sl@6: ID_FUTABA_CLEAR_DISPLAY, sl@6: ID_FUTABA_DIMMING, sl@6: ID_FUTABA_DISPLAY_DATA_INPUT, sl@6: ID_FUTABA_READ_ID, sl@6: ID_FUTABA_READ_FIRMWARE_REVISION, sl@6: ID_FUTABA_POWER_SUPPLY_MONITOR, sl@6: ID_FUTABA_SET_PIXEL, sl@6: ID_FUTABA_RESET_PIXEL, sl@6: ID_FUTABA_SET_ALL_PIXELS, sl@21: ID_FUTABA_SET_DISPLAY_POSITION, sl@23: ID_FUTABA_TOGGLE_OFF_SCREEN_MODE, sl@6: ID_SELECT_FONT, sl@6: ID_LAST sl@6: }; sl@6: sl@6: size_t getDataFromTextField(FXTextField *tf, char *buf, size_t len); sl@6: int getLengthFromTextField(FXTextField *tf); sl@6: sl@6: protected: sl@6: MainWindow() {}; sl@6: public: sl@6: MainWindow(FXApp *a); sl@6: ~MainWindow(); sl@6: virtual void create(); sl@6: sl@6: long onConnect(FXObject *sender, FXSelector sel, void *ptr); sl@6: long onDisconnect(FXObject *sender, FXSelector sel, void *ptr); sl@15: long onScan(FXObject *sender, FXSelector sel, void *ptr); sl@6: long onSendOutputReport(FXObject *sender, FXSelector sel, void *ptr); sl@6: long onSendFeatureReport(FXObject *sender, FXSelector sel, void *ptr); sl@6: long onGetFeatureReport(FXObject *sender, FXSelector sel, void *ptr); sl@6: long onClear(FXObject *sender, FXSelector sel, void *ptr); sl@6: // sl@6: long onFutabaClearDisplay(FXObject *sender, FXSelector sel, void *ptr); sl@6: long onFutabaDimming(FXObject *sender, FXSelector sel, void *ptr); sl@6: long onFutabaDisplayDataInput(FXObject *sender, FXSelector sel, void *ptr); sl@6: long onFutabaReadId(FXObject *sender, FXSelector sel, void *ptr); sl@6: long onFutabaReadFirmwareRevision(FXObject *sender, FXSelector sel, void *ptr); sl@6: long onFutabaPowerSupplyMonitor(FXObject *sender, FXSelector sel, void *ptr); sl@6: long onFutabaSetAllPixels(FXObject *sender, FXSelector sel, void *ptr); sl@6: long onFutabaSetPixel(FXObject *sender, FXSelector sel, void *ptr); sl@6: long onFutabaResetPixel(FXObject *sender, FXSelector sel, void *ptr); sl@21: long onFutabaSetDisplayPosition(FXObject *sender, FXSelector sel, void *ptr); sl@23: long onFutabaToggleOffScreenMode(FXObject *sender, FXSelector sel, void *ptr); sl@6: // sl@6: long onSelectFont(FXObject *sender, FXSelector sel, void *ptr); sl@6: // sl@6: long onTimeout(FXObject *sender, FXSelector sel, void *ptr); sl@6: long onMacTimeout(FXObject *sender, FXSelector sel, void *ptr); sl@22: sl@6: private: sl@15: void SetConnectedStates(); sl@15: bool IsConnected(); sl@15: sl@15: private: sl@6: FXList *device_list; sl@6: FXButton *connect_button; sl@6: FXButton *disconnect_button; sl@6: FXButton *rescan_button; sl@6: FXButton *output_button; sl@6: FXLabel *connected_label; sl@6: FXTextField *output_text; sl@6: FXTextField *output_len; sl@6: FXButton *feature_button; sl@6: FXButton *get_feature_button; sl@6: FXTextField *feature_text; sl@6: FXTextField *feature_len; sl@6: FXTextField *get_feature_text; sl@6: FXText *input_text; sl@6: FXFont *title_font; sl@6: //Futaba VFD control sl@6: FXButton *iButtonClearDisplay; sl@22: FXButton *iButtonBrightness; sl@6: FXButton *iButtonDisplayDataInput; sl@6: FXButton *iButtonReadId; sl@6: FXButton *iButtonReadFirmwareRevision; sl@6: FXButton *iButtonPowerSupplyMonitor; sl@6: FXTextField *iTextFieldX; sl@6: FXTextField *iTextFieldY; sl@6: FXButton *iButtonSetPixel; sl@6: FXButton *iButtonResetPixel; sl@6: FXButton *iButtonSetAllPixels; sl@21: FXButton *iButtonSetDisplayPosition; sl@23: FXButton *iButtonToggleOffScreenMode; sl@6: //Font sl@6: FXButton *iButtonSelectFont; sl@6: sl@6: unsigned char* iOutputReportBuffer; sl@18: unsigned char iBrightness; //Current VFD dimming sl@6: FXFontDesc iCurrentFontDesc; sl@7: FXFont* iCurrentFont; sl@8: FXTGAImage* iFontImage; sl@24: ///Used the following to convert our bitmap into display format sl@25: BitArray* iPixelBuffer; sl@6: sl@6: struct hid_device_info *devices; sl@6: hid_device *connected_device; sl@11: sl@11: //Futaba sl@11: GP1212A01A iVfd01; sl@11: sl@6: }; sl@6: sl@6: #endif //