# HG changeset patch # User sl # Date 1408997130 -7200 # Node ID 2d749a2bea340b7985f2137fc301f591a17bf212 # Parent 1c3a4964a5bde4da46739c244a730feb50e69e6b Now having only one generic request API. That will help us support different display types. diff -r 1c3a4964a5bd -r 2d749a2bea34 Display.h --- a/Display.h Mon Aug 25 00:07:01 2014 +0200 +++ b/Display.h Mon Aug 25 22:05:30 2014 +0200 @@ -11,6 +11,7 @@ class DisplayBase { public: + DisplayBase():iRequest(EMiniDisplayRequestNone){} virtual ~DisplayBase(){}; // virtual int Open()=0; @@ -23,6 +24,20 @@ virtual void Fill()=0; // virtual void SwapBuffers()=0; + + //Request management + virtual void Request(TMiniDisplayRequest /*aRequest*/){ /*No request supported by default*/ }; + virtual TMiniDisplayRequest AttemptRequestCompletion()=0; + + virtual TMiniDisplayRequest CurrentRequest(){return iRequest;} + virtual void CancelRequest(){iRequest=EMiniDisplayRequestNone;} + virtual bool RequestPending(){return iRequest!=EMiniDisplayRequestNone;} + +protected: + void SetRequest(TMiniDisplayRequest aRequest) { iRequest=aRequest; } + +private: + TMiniDisplayRequest iRequest; }; diff -r 1c3a4964a5bd -r 2d749a2bea34 FutabaGP1212A01.cpp --- a/FutabaGP1212A01.cpp Mon Aug 25 00:07:01 2014 +0200 +++ b/FutabaGP1212A01.cpp Mon Aug 25 22:05:30 2014 +0200 @@ -21,7 +21,7 @@ iFrameBeta(NULL), iFrameGamma(NULL), iNeedFullFrameUpdate(0), - iRequest(EMiniDisplayRequestNone),iPowerOn(false) + iPowerOn(false) { iDeviceId[0]=0; iFirmwareRevision[0]=0; @@ -475,6 +475,28 @@ //memset(iFrameBeta,0x00,sizeof(iFrameBeta)); } + +/** +*/ +void GP1212A01A::Request(TMiniDisplayRequest aRequest) + { + switch (aRequest) + { + case EMiniDisplayRequestDeviceId: + RequestDeviceId(); + break; + case EMiniDisplayRequestFirmwareRevision: + RequestFirmwareRevision(); + break; + case EMiniDisplayRequestPowerSupplyStatus: + RequestPowerSupplyStatus(); + break; + default: + //Not supported + break; + }; + } + /** */ void GP1212A01A::RequestDeviceId() @@ -497,7 +519,7 @@ report[6]=0x44; //Command ID if (Write(report)==report.Size()) { - iRequest=EMiniDisplayRequestDeviceId; + SetRequest(EMiniDisplayRequestDeviceId); } } @@ -523,7 +545,7 @@ report[6]=0x52; //Command ID if (Write(report)==report.Size()) { - iRequest=EMiniDisplayRequestFirmwareRevision; + SetRequest(EMiniDisplayRequestFirmwareRevision); } } @@ -548,7 +570,7 @@ report[6]=0x4D; //Command ID if (Write(report)==report.Size()) { - iRequest=EMiniDisplayRequestPowerSupplyStatus; + SetRequest(EMiniDisplayRequestPowerSupplyStatus); } } @@ -624,9 +646,9 @@ strcpy(iFirmwareRevision,(const char*)ptr); } - TMiniDisplayRequest completed=iRequest; + TMiniDisplayRequest completed=CurrentRequest(); //Our request was completed - iRequest=EMiniDisplayRequestNone; + SetRequest(EMiniDisplayRequestNone); return completed; } diff -r 1c3a4964a5bd -r 2d749a2bea34 FutabaGP1212A01.h --- a/FutabaGP1212A01.h Mon Aug 25 00:07:01 2014 +0200 +++ b/FutabaGP1212A01.h Mon Aug 25 22:05:30 2014 +0200 @@ -44,9 +44,7 @@ // void SwapBuffers(); // - void RequestDeviceId(); - void RequestFirmwareRevision(); - void RequestPowerSupplyStatus(); + virtual void Request(TMiniDisplayRequest aRequest); // void ToggleOffScreenMode(); void SetOffScreenMode(bool aOn); @@ -55,9 +53,6 @@ void SetFrameDifferencing(bool aOn){iUseFrameDifferencing=aOn;} bool FrameDifferencing() const {return iUseFrameDifferencing;} // - bool RequestPending(){return iRequest!=EMiniDisplayRequestNone;} - TMiniDisplayRequest CurrentRequest(){return iRequest;} - void CancelRequest(){iRequest=EMiniDisplayRequestNone;} TMiniDisplayRequest AttemptRequestCompletion(); FutabaVfdReport& InputReport() {return iInputReport;} bool PowerOn(); @@ -65,6 +60,12 @@ char* FirmwareRevision(); private: + void RequestDeviceId(); + void RequestFirmwareRevision(); + void RequestPowerSupplyStatus(); + + +private: enum DW { DW1=0xC0, @@ -102,7 +103,6 @@ //unsigned char iFrameBeta[256*64]; //unsigned char *iFrontBuffer; //unsigned char *iBackBuffer; - TMiniDisplayRequest iRequest; FutabaVfdReport iInputReport; // char iDeviceId[KFutabaMaxHidReportSize]; diff -r 1c3a4964a5bd -r 2d749a2bea34 FutabaGP1212A02.cpp --- a/FutabaGP1212A02.cpp Mon Aug 25 00:07:01 2014 +0200 +++ b/FutabaGP1212A02.cpp Mon Aug 25 22:05:30 2014 +0200 @@ -22,7 +22,7 @@ iFrameBeta(NULL), iFrameGamma(NULL), iNeedFullFrameUpdate(0), - iRequest(EMiniDisplayRequestNone),iPowerOn(false) + iPowerOn(false) { iDeviceId[0]=0; iFirmwareRevision[0]=0; @@ -480,77 +480,21 @@ */ void GP1212A02A::RequestDeviceId() { - if (RequestPending()) - { - //Abort silently for now - return; - } - - //1BH,5BH,63H,49H,44H - //Send Read ID command - FutabaVfdReport report; - report[0]=0x00; //Report ID - report[1]=0x05; //Report length - report[2]=0x1B; //Command ID - report[3]=0x5B; //Command ID - report[4]=0x63; //Command ID - report[5]=0x49; //Command ID - report[6]=0x44; //Command ID - if (Write(report)==report.Size()) - { - iRequest=EMiniDisplayRequestDeviceId; - } + //Not supported } /** */ void GP1212A02A::RequestFirmwareRevision() { - if (RequestPending()) - { - //Abort silently for now - return; - } - - //1BH,5BH,63H,46H,52H - //Send Software Revision Read Command - FutabaVfdReport report; - report[0]=0x00; //Report ID - report[1]=0x05; //Report length - report[2]=0x1B; //Command ID - report[3]=0x5B; //Command ID - report[4]=0x63; //Command ID - report[5]=0x46; //Command ID - report[6]=0x52; //Command ID - if (Write(report)==report.Size()) - { - iRequest=EMiniDisplayRequestFirmwareRevision; - } + //Not supported } /** */ void GP1212A02A::RequestPowerSupplyStatus() { - if (RequestPending()) - { - //Abort silently for now - return; - } - //1BH,5BH,63H,50H,4DH - //Send Power Suppply Monitor Command - FutabaVfdReport report; - report[0]=0x00; //Report ID - report[1]=0x05; //Report length - report[2]=0x1B; //Command ID - report[3]=0x5B; //Command ID - report[4]=0x63; //Command ID - report[5]=0x50; //Command ID - report[6]=0x4D; //Command ID - if (Write(report)==report.Size()) - { - iRequest=EMiniDisplayRequestPowerSupplyStatus; - } + //Not supported } @@ -590,47 +534,9 @@ */ TMiniDisplayRequest GP1212A02A::AttemptRequestCompletion() { - if (!RequestPending()) - { - return EMiniDisplayRequestNone; - } - - int res=Read(iInputReport); - - if (!res) - { - return EMiniDisplayRequestNone; - } - - //Process our request - if (CurrentRequest()==EMiniDisplayRequestPowerSupplyStatus) - { - if (iInputReport[1]==0x4F && iInputReport[2]==0x4E) - { - iPowerOn = true; - } - else if (iInputReport[1]==0x4F && iInputReport[2]==0x46 && iInputReport[3]==0x46) - { - iPowerOn = false; - } - } - else if (CurrentRequest()==EMiniDisplayRequestDeviceId) - { - unsigned char* ptr=&iInputReport[1]; - strcpy(iDeviceId,(const char*)ptr); - } - else if (CurrentRequest()==EMiniDisplayRequestFirmwareRevision) - { - unsigned char* ptr=&iInputReport[1]; - strcpy(iFirmwareRevision,(const char*)ptr); - } - - TMiniDisplayRequest completed=iRequest; - //Our request was completed - iRequest=EMiniDisplayRequestNone; - - return completed; - } + //That display does not support any requests + return EMiniDisplayRequestNone; + } /** diff -r 1c3a4964a5bd -r 2d749a2bea34 FutabaGP1212A02.h --- a/FutabaGP1212A02.h Mon Aug 25 00:07:01 2014 +0200 +++ b/FutabaGP1212A02.h Mon Aug 25 22:05:30 2014 +0200 @@ -54,10 +54,7 @@ // void SetFrameDifferencing(bool aOn){iUseFrameDifferencing=aOn;} bool FrameDifferencing() const {return iUseFrameDifferencing;} - // - bool RequestPending(){return iRequest!=EMiniDisplayRequestNone;} - TMiniDisplayRequest CurrentRequest(){return iRequest;} - void CancelRequest(){iRequest=EMiniDisplayRequestNone;} + // TMiniDisplayRequest AttemptRequestCompletion(); FutabaVfdReport& InputReport() {return iInputReport;} bool PowerOn(); @@ -102,7 +99,6 @@ //unsigned char iFrameBeta[256*64]; //unsigned char *iFrontBuffer; //unsigned char *iBackBuffer; - TMiniDisplayRequest iRequest; FutabaVfdReport iInputReport; // char iDeviceId[KFutabaMaxHidReportSize]; diff -r 1c3a4964a5bd -r 2d749a2bea34 MiniDisplay.cpp --- a/MiniDisplay.cpp Mon Aug 25 00:07:01 2014 +0200 +++ b/MiniDisplay.cpp Mon Aug 25 22:05:30 2014 +0200 @@ -157,21 +157,9 @@ } //------------------------------------------------------------- -void MiniDisplayRequestDeviceId(MiniDisplayDevice aDevice) +void MiniDisplayRequest(MiniDisplayDevice aDevice, TMiniDisplayRequest aRequest) { - ((GP1212A01A*)aDevice)->RequestDeviceId(); - } - -//------------------------------------------------------------- -void MiniDisplayRequestPowerSupplyStatus(MiniDisplayDevice aDevice) - { - ((GP1212A01A*)aDevice)->RequestPowerSupplyStatus(); - } - -//------------------------------------------------------------- -void MiniDisplayRequestFirmwareRevision(MiniDisplayDevice aDevice) - { - ((GP1212A01A*)aDevice)->RequestFirmwareRevision(); + ((GraphicDisplay*)aDevice)->Request(aRequest); } //------------------------------------------------------------- diff -r 1c3a4964a5bd -r 2d749a2bea34 MiniDisplay.h --- a/MiniDisplay.h Mon Aug 25 00:07:01 2014 +0200 +++ b/MiniDisplay.h Mon Aug 25 22:05:30 2014 +0200 @@ -135,19 +135,7 @@ Request device ID. @param [IN] The device to apply this command to. */ -extern "C" MDAPI void MiniDisplayRequestDeviceId(MiniDisplayDevice aDevice); - -/** -Request power status. -@param [IN] The device to apply this command to. -*/ -extern "C" MDAPI void MiniDisplayRequestPowerSupplyStatus(MiniDisplayDevice aDevice); - -/** -Request firmware version. -@param [IN] The device to apply this command to. -*/ -extern "C" MDAPI void MiniDisplayRequestFirmwareRevision(MiniDisplayDevice aDevice); +extern "C" MDAPI void MiniDisplayRequest(MiniDisplayDevice aDevice, TMiniDisplayRequest aRequest); /** Tell whether or not a request is pending.