Adding Futaba GP1212A01A read requests.
19 FutabaVfdCommand::FutabaVfdCommand():/*iBuffer(NULL),*/iSize(0),iMaxSize(0)
23 FutabaVfdCommand::~FutabaVfdCommand()
32 void FutabaVfdCommand::Reset()
34 memset(iReports,0,sizeof(iReports));
43 void FutabaVfdCommand::Create(int aMaxSize)
45 iBuffer=new unsigned char[aMaxSize];
58 void FutabaVfdCommand::Delete()
74 int GP1212A01A::Open()
76 int success = HidDevice::Open(KFutabaVendorId,KFutabaProductIdGP1212A01A,NULL);
86 void GP1212A01A::SetPixel(int aX, int aY, bool aOn)
88 //Just specify a one pixel block
89 SetPixelBlock(aX,aY,0x00,0x01,aOn);
94 void GP1212A01A::SetAllPixels(bool aOn)
98 for (int i=0;i<256;i++)
100 for (int j=0;j<64;j++)
107 //16x16=256 pixels at a time goes much faster
108 //TODO: use even larger blocks
109 for (int i=0;i<256;i+=16)
111 for (int j=0;j<64;j+=16)
113 SetPixelBlock(i,j,15,32,(aOn?0xFF:0x00));
114 //FXThread::sleep(1000000000);
122 void GP1212A01A::SetBrightness(int aBrightness)
124 if (aBrightness<MinBrightness()||aBrightness>MaxBrightness())
126 //Brightness out of range.
127 //Just ignore that request.
131 FutabaVfdReport report;
132 report[0]=0x00; //Report ID
133 report[1]=0x06; //Report size
134 report[2]=0x1B; //Command ID
135 report[3]=0x5C; //Command ID
136 report[4]=0x3F; //Command ID
137 report[5]=0x4C; //Command ID
138 report[6]=0x44; //Command ID
139 report[7]=0x30+aBrightness; //Brightness level
145 Set the defined pixel block to the given value.
146 @param X coordinate of our pixel block starting point.
147 @param Y coordinate of our pixel block starting point.
148 @param The height of our pixel block.
149 @param The size of our pixel data. Number of pixels divided by 8.
150 @param The value set to 8 pixels.
152 void GP1212A01A::SetPixelBlock(int aX, int aY, int aHeight, int aSize, unsigned char aValue)
154 //Size must be 63 or below
155 FutabaVfdReport report;
156 report[0]=0x00; //Report ID
157 report[1]=0x08+aSize; //Report length
163 report[7]=aHeight; //Y length before return. Though outside the specs, setting this to zero apparently allows us to modify a single pixel without touching any other.
164 report[8]=0x00; //Size of pixel data in bytes (MSB)
165 report[9]=aSize; //Size of pixel data in bytes (LSB)
166 memset(report.Buffer()+10, aValue, aSize);
167 //iOutputReportBuffer[10]=aValue; //Pixel data
173 Clear our display's screen.
175 void GP1212A01A::Clear()
177 //Send Clear display command
178 FutabaVfdReport report;
179 report[0]=0x00; //Report ID
180 report[1]=0x04; //Report length
181 report[2]=0x1B; //Command ID
182 report[3]=0x5B; //Command ID
183 report[4]=0x32; //Command ID
184 report[5]=0x4A; //Command ID
190 void GP1212A01A::RequestId()
192 //1BH,5BH,63H,49H,44H
193 //Send Read ID command
194 FutabaVfdReport report;
195 report[0]=0x00; //Report ID
196 report[1]=0x05; //Report length
197 report[2]=0x1B; //Command ID
198 report[3]=0x5B; //Command ID
199 report[4]=0x63; //Command ID
200 report[5]=0x49; //Command ID
201 report[6]=0x44; //Command ID
207 void GP1212A01A::RequestFirmwareRevision()
209 //1BH,5BH,63H,46H,52H
210 //Send Software Revision Read Command
211 FutabaVfdReport report;
212 report[0]=0x00; //Report ID
213 report[1]=0x05; //Report length
214 report[2]=0x1B; //Command ID
215 report[3]=0x5B; //Command ID
216 report[4]=0x63; //Command ID
217 report[5]=0x46; //Command ID
218 report[6]=0x52; //Command ID
224 void GP1212A01A::RequestPowerSupplyStatus()
226 //1BH,5BH,63H,50H,4DH
227 //Send Power Suppply Monitor Command
228 FutabaVfdReport report;
229 report[0]=0x00; //Report ID
230 report[1]=0x05; //Report length
231 report[2]=0x1B; //Command ID
232 report[3]=0x5B; //Command ID
233 report[4]=0x63; //Command ID
234 report[5]=0x50; //Command ID
235 report[6]=0x4D; //Command ID