inc/MainWindow.h
author sl
Thu, 22 May 2014 22:36:43 +0200
changeset 24 c6b5c552980a
parent 23 d4e164906a1b
child 25 233a997193b8
permissions -rw-r--r--
Draft implementation of our bitmap to display format.
sl@6
     1
sl@6
     2
sl@6
     3
#ifndef MAIN_WINDOW_H
sl@6
     4
#define MAIN_WINDOW_H
sl@6
     5
sl@6
     6
#include <fx.h>
sl@6
     7
#include "hidapi.h"
sl@6
     8
#include "mac_support.h"
sl@6
     9
#include <string.h>
sl@6
    10
#include <stdlib.h>
sl@6
    11
#include <limits.h>
sl@9
    12
#include "FutabaVfd.h"
sl@6
    13
sl@6
    14
#ifdef _WIN32
sl@6
    15
// Thanks Microsoft, but I know how to use strncpy().
sl@6
    16
#pragma warning(disable:4996)
sl@6
    17
#endif
sl@6
    18
sl@6
    19
class MainWindow : public FXMainWindow {
sl@6
    20
    FXDECLARE(MainWindow)
sl@6
    21
sl@6
    22
public:
sl@6
    23
    enum {
sl@6
    24
        ID_FIRST = FXMainWindow::ID_LAST,
sl@6
    25
        ID_CONNECT,
sl@6
    26
        ID_DISCONNECT,
sl@6
    27
        ID_RESCAN,
sl@6
    28
        ID_SEND_OUTPUT_REPORT,
sl@6
    29
        ID_SEND_FEATURE_REPORT,
sl@6
    30
        ID_GET_FEATURE_REPORT,
sl@6
    31
        ID_CLEAR,
sl@6
    32
        ID_TIMER,
sl@6
    33
        ID_MAC_TIMER,
sl@6
    34
        ID_FUTABA_CLEAR_DISPLAY,
sl@6
    35
        ID_FUTABA_DIMMING,
sl@6
    36
        ID_FUTABA_DISPLAY_DATA_INPUT,
sl@6
    37
        ID_FUTABA_READ_ID,
sl@6
    38
        ID_FUTABA_READ_FIRMWARE_REVISION,
sl@6
    39
        ID_FUTABA_POWER_SUPPLY_MONITOR,
sl@6
    40
        ID_FUTABA_SET_PIXEL,
sl@6
    41
        ID_FUTABA_RESET_PIXEL,
sl@6
    42
        ID_FUTABA_SET_ALL_PIXELS,
sl@21
    43
        ID_FUTABA_SET_DISPLAY_POSITION,
sl@23
    44
		ID_FUTABA_TOGGLE_OFF_SCREEN_MODE,
sl@6
    45
        ID_SELECT_FONT,
sl@6
    46
        ID_LAST
sl@6
    47
    };
sl@6
    48
sl@6
    49
    size_t getDataFromTextField(FXTextField *tf, char *buf, size_t len);
sl@6
    50
    int getLengthFromTextField(FXTextField *tf);
sl@6
    51
sl@6
    52
protected:
sl@6
    53
    MainWindow() {};
sl@6
    54
public:
sl@6
    55
    MainWindow(FXApp *a);
sl@6
    56
    ~MainWindow();
sl@6
    57
    virtual void create();
sl@6
    58
sl@6
    59
    long onConnect(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    60
    long onDisconnect(FXObject *sender, FXSelector sel, void *ptr);
sl@15
    61
    long onScan(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    62
    long onSendOutputReport(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    63
    long onSendFeatureReport(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    64
    long onGetFeatureReport(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    65
    long onClear(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    66
    //
sl@6
    67
    long onFutabaClearDisplay(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    68
    long onFutabaDimming(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    69
    long onFutabaDisplayDataInput(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    70
    long onFutabaReadId(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    71
    long onFutabaReadFirmwareRevision(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    72
    long onFutabaPowerSupplyMonitor(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    73
    long onFutabaSetAllPixels(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    74
    long onFutabaSetPixel(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    75
    long onFutabaResetPixel(FXObject *sender, FXSelector sel, void *ptr);
sl@21
    76
    long onFutabaSetDisplayPosition(FXObject *sender, FXSelector sel, void *ptr);
sl@23
    77
	long onFutabaToggleOffScreenMode(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    78
    //
sl@6
    79
    long onSelectFont(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    80
    //
sl@6
    81
    long onTimeout(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    82
    long onMacTimeout(FXObject *sender, FXSelector sel, void *ptr);
sl@22
    83
    
sl@6
    84
private:
sl@15
    85
    void SetConnectedStates();
sl@15
    86
    bool IsConnected();
sl@15
    87
sl@15
    88
private:
sl@6
    89
    FXList *device_list;
sl@6
    90
    FXButton *connect_button;
sl@6
    91
    FXButton *disconnect_button;
sl@6
    92
    FXButton *rescan_button;
sl@6
    93
    FXButton *output_button;
sl@6
    94
    FXLabel *connected_label;
sl@6
    95
    FXTextField *output_text;
sl@6
    96
    FXTextField *output_len;
sl@6
    97
    FXButton *feature_button;
sl@6
    98
    FXButton *get_feature_button;
sl@6
    99
    FXTextField *feature_text;
sl@6
   100
    FXTextField *feature_len;
sl@6
   101
    FXTextField *get_feature_text;
sl@6
   102
    FXText *input_text;
sl@6
   103
    FXFont *title_font;
sl@6
   104
    //Futaba VFD control
sl@6
   105
    FXButton *iButtonClearDisplay;
sl@22
   106
    FXButton *iButtonBrightness;
sl@6
   107
    FXButton *iButtonDisplayDataInput;
sl@6
   108
    FXButton *iButtonReadId;
sl@6
   109
    FXButton *iButtonReadFirmwareRevision;
sl@6
   110
    FXButton *iButtonPowerSupplyMonitor;
sl@6
   111
    FXTextField *iTextFieldX;
sl@6
   112
    FXTextField *iTextFieldY;
sl@6
   113
    FXButton *iButtonSetPixel;
sl@6
   114
    FXButton *iButtonResetPixel;
sl@6
   115
    FXButton *iButtonSetAllPixels;
sl@21
   116
    FXButton *iButtonSetDisplayPosition;
sl@23
   117
	FXButton *iButtonToggleOffScreenMode;
sl@6
   118
    //Font
sl@6
   119
    FXButton *iButtonSelectFont;
sl@6
   120
sl@6
   121
    unsigned char* iOutputReportBuffer;
sl@18
   122
    unsigned char iBrightness; //Current VFD dimming
sl@6
   123
    FXFontDesc iCurrentFontDesc;
sl@7
   124
    FXFont* iCurrentFont;
sl@8
   125
    FXTGAImage* iFontImage;
sl@24
   126
	///Used the following to convert our bitmap into display format
sl@24
   127
	unsigned char* iPixelBuffer;
sl@6
   128
sl@6
   129
    struct hid_device_info *devices;
sl@6
   130
    hid_device *connected_device;
sl@11
   131
sl@11
   132
	//Futaba
sl@11
   133
	GP1212A01A iVfd01;
sl@11
   134
sl@6
   135
};
sl@6
   136
sl@6
   137
#endif //