static int writePacket (BrailleDisplay *brl, unsigned char function, unsigned char *data, unsigned char count) { unsigned char buffer[count + 4]; unsigned char *byte = buffer; *byte++ = 0; *byte++ = function; *byte++ = count; byte = mempcpy(byte, data, count); { unsigned char checksum = 0; const unsigned char *ptr = buffer; while (ptr < byte) checksum ^= *ptr++; *byte++ = checksum; } { int size = byte - buffer; logOutputPacket(buffer, size); brl->writeDelay += (count * 1000 / charactersPerSecond) + 1; if (serialWriteData(serialDevice, buffer, size) != -1) return 1; } logSystemError("serial write"); return 0; }
int writeBraillePacket ( BrailleDisplay *brl, GioEndpoint *endpoint, const void *packet, size_t size ) { if (!endpoint) endpoint = brl->gioEndpoint; logOutputPacket(packet, size); if (gioWriteData(endpoint, packet, size) == -1) return 0; if (endpoint == brl->gioEndpoint) { brl->writeDelay += gioGetMillisecondsToTransfer(endpoint, size); } return 1; }
static int writePacket (BrailleDisplay *brl, const unsigned char *packet, int size) { unsigned char buffer[1 + (size * 2)]; unsigned char *byte = buffer; *byte++ = BNO_BEGIN; while (size > 0) { if ((*byte++ = *packet++) == BNO_BEGIN) *byte++ = BNO_BEGIN; --size; } { int count = byte - buffer; logOutputPacket(buffer, count); { int ok = serialWriteData(serialDevice, buffer, count) != -1; if (ok) brl->writeDelay += (count * 1000 / charactersPerSecond) + 1; return ok; } } }
static int writePacket (BrailleDisplay *brl, const unsigned char *packet, size_t size) { logOutputPacket(packet, size); brl->writeDelay += (size * 1000 / charactersPerSecond) + 1; return serialWriteData(serialDevice, packet, size) != -1; }
static int writeBytes (BrailleDisplay *brl, const unsigned char *buffer, int count) { logOutputPacket(buffer, count); if (io->writeBytes(buffer, count) != -1) return 1; return 0; }