static int writeSerialBraille (BrailleDisplay *brl, const unsigned char *cells, unsigned char count, unsigned char start) { unsigned char buffer[2 + count]; unsigned char size = 0; buffer[size++] = start; buffer[size++] = count; memcpy(&buffer[size], cells, count); size += count; return writeSerialPacket(brl, 0X42, buffer, size); }
static int getSerialDisplayCurrent (BrailleDisplay *brl, unsigned char *current) { const unsigned int code = 0X43; if (writeSerialPacket(brl, code, NULL, 0)) { unsigned char buffer[2]; if (nextSerialPacket(brl, code, buffer, sizeof(buffer), 1)) { *current = buffer[1]; return 1; } } return 0; }
static int getSerialDisplayVoltage (BrailleDisplay *brl, unsigned char *voltage) { const unsigned char code = 0X47; if (writeSerialPacket(brl, code, NULL, 0)) { unsigned char buffer[2]; if (nextSerialPacket(brl, code, buffer, sizeof(buffer), 1)) { *voltage = buffer[1]; return 1; } } return 0; }
static int logSerialFirmwareVersion (BrailleDisplay *brl) { unsigned char device; for (device=0; device<ARRAY_COUNT(serialDeviceNames); ++device) { const unsigned char code = 0X46; unsigned char buffer[5]; if (!writeSerialPacket(brl, code, &device, 1)) return 0; if (!nextSerialPacket(brl, code, buffer, sizeof(buffer), 1)) return 0; logMessage(LOG_INFO, "%s Firmware Version: %c.%c.%c", serialDeviceNames[buffer[1]], buffer[2], buffer[3], buffer[4]); } return 1; }
static int logSerialSerialNumber (BrailleDisplay *brl) { unsigned char device; for (device=0; device<ARRAY_COUNT(serialDeviceNames); ++device) { const unsigned char code = 0X53; unsigned char buffer[10]; if (!writeSerialPacket(brl, code, &device, 1)) return 0; if (!nextSerialPacket(brl, code, buffer, sizeof(buffer), 1)) return 0; logMessage(LOG_INFO, "%s Serial Number: %02X%02X%02X%02X%02X%02X%02X%02X", serialDeviceNames[buffer[1]], buffer[2], buffer[3], buffer[4], buffer[5], buffer[6], buffer[7], buffer[8], buffer[9]); } return 1; }
void testUsingDeviceFile(const char* deviceFile) { printf("Testing communications using device-file %s\n", deviceFile); int fd = configuredDescriptor(deviceFile); FRGarminPacketRef requestInfo = FRGarminPacketCreateFromData(Pid_Product_Rqst, NULL, 0); writeSerialPacket(fd, requestInfo, 1); FRGarminPacketRef ackPacket = readSerialPacket(fd); printf("Response packet: %s\n", ackPacket->typeID == FR_ACK ? "Acknowledged." : "NotACK!"); FRGarminPacketDestroy(ackPacket); FRGarminPacketRef infoPacket = readSerialPacket(fd); printf("Received %i bytes in infoPacket\n", (int)infoPacket->dataSize); printf("Device ID: %s\n", infoPacket->data+4); FRGarminPacketDestroy(ackPacket); finishDescriptor(fd); }
static int soundSerialBeep (BrailleDisplay *brl, unsigned char duration) { return writeSerialPacket(brl, 0X41, &duration, 1); }
static int setSerialDisplayState (BrailleDisplay *brl, unsigned char state) { return writeSerialPacket(brl, 0X44, &state, 1); }
static int setSerialDisplayVoltage (BrailleDisplay *brl, unsigned char voltage) { return writeSerialPacket(brl, 0X56, &voltage, 1); }