Fixing crash on stratup if no Futaba VFD connected.
8 #include "mac_support.h"
12 #include "FutabaVfd.h"
15 // Thanks Microsoft, but I know how to use strncpy().
16 #pragma warning(disable:4996)
19 class MainWindow : public FXMainWindow {
24 ID_FIRST = FXMainWindow::ID_LAST,
28 ID_SEND_OUTPUT_REPORT,
29 ID_SEND_FEATURE_REPORT,
30 ID_GET_FEATURE_REPORT,
34 ID_FUTABA_CLEAR_DISPLAY,
36 ID_FUTABA_DISPLAY_DATA_INPUT,
38 ID_FUTABA_READ_FIRMWARE_REVISION,
39 ID_FUTABA_POWER_SUPPLY_MONITOR,
41 ID_FUTABA_RESET_PIXEL,
42 ID_FUTABA_SET_ALL_PIXELS,
47 size_t getDataFromTextField(FXTextField *tf, char *buf, size_t len);
48 int getLengthFromTextField(FXTextField *tf);
55 virtual void create();
57 long onConnect(FXObject *sender, FXSelector sel, void *ptr);
58 long onDisconnect(FXObject *sender, FXSelector sel, void *ptr);
59 long onRescan(FXObject *sender, FXSelector sel, void *ptr);
60 long onSendOutputReport(FXObject *sender, FXSelector sel, void *ptr);
61 long onSendFeatureReport(FXObject *sender, FXSelector sel, void *ptr);
62 long onGetFeatureReport(FXObject *sender, FXSelector sel, void *ptr);
63 long onClear(FXObject *sender, FXSelector sel, void *ptr);
65 long onFutabaClearDisplay(FXObject *sender, FXSelector sel, void *ptr);
66 long onFutabaDimming(FXObject *sender, FXSelector sel, void *ptr);
67 long onFutabaDisplayDataInput(FXObject *sender, FXSelector sel, void *ptr);
68 long onFutabaReadId(FXObject *sender, FXSelector sel, void *ptr);
69 long onFutabaReadFirmwareRevision(FXObject *sender, FXSelector sel, void *ptr);
70 long onFutabaPowerSupplyMonitor(FXObject *sender, FXSelector sel, void *ptr);
71 long onFutabaSetAllPixels(FXObject *sender, FXSelector sel, void *ptr);
72 long onFutabaSetPixel(FXObject *sender, FXSelector sel, void *ptr);
73 long onFutabaResetPixel(FXObject *sender, FXSelector sel, void *ptr);
75 long onSelectFont(FXObject *sender, FXSelector sel, void *ptr);
77 long onTimeout(FXObject *sender, FXSelector sel, void *ptr);
78 long onMacTimeout(FXObject *sender, FXSelector sel, void *ptr);
80 void SetPixel(int aX, int aY, unsigned char aValue);
81 void SetPixelBlock(int aX, int aY, int aHeight, int aSize, unsigned char aValue);
85 FXButton *connect_button;
86 FXButton *disconnect_button;
87 FXButton *rescan_button;
88 FXButton *output_button;
89 FXLabel *connected_label;
90 FXTextField *output_text;
91 FXTextField *output_len;
92 FXButton *feature_button;
93 FXButton *get_feature_button;
94 FXTextField *feature_text;
95 FXTextField *feature_len;
96 FXTextField *get_feature_text;
100 FXButton *iButtonClearDisplay;
101 FXButton *iButtonDimming;
102 FXButton *iButtonDisplayDataInput;
103 FXButton *iButtonReadId;
104 FXButton *iButtonReadFirmwareRevision;
105 FXButton *iButtonPowerSupplyMonitor;
106 FXTextField *iTextFieldX;
107 FXTextField *iTextFieldY;
108 FXButton *iButtonSetPixel;
109 FXButton *iButtonResetPixel;
110 FXButton *iButtonSetAllPixels;
112 FXButton *iButtonSelectFont;
114 unsigned char* iOutputReportBuffer;
115 unsigned char iDimming; //Current VFD dimming
116 FXFontDesc iCurrentFontDesc;
117 FXFont* iCurrentFont;
118 FXTGAImage* iFontImage;
120 struct hid_device_info *devices;
121 hid_device *connected_device;