zformat1.cpp
This minimal sketch demonstrates 'custom Z handlers'.
void ZPrinter(u8 face, void * arg, bool alt, int width, bool zerofill) {
API_ASSERT_NONNULL(arg);
char c = * (char*) arg;
facePrint(face,c,BYTE);
facePrint(face,c,BYTE);
}
bool ZScanner(u8 * packet, void * arg, bool alt, int width) {
u32 ch1, ch2;
if (!packetRead(packet,ch1,BYTE)) return false;
if (!packetRead(packet,ch2,BYTE)) return false;
if (ch1 != ch2) return false;
API_ASSERT_NONNULL(arg);
char * p = (char*) arg;
*p = ch1;
return true;
}
void doubleDouble(u8 * packet) {
char c;
if (packetScanf(packet,"%Zd%z\n", ZScanner, &c) != 3) return;
facePrintf(packetSource(packet),"%Zd%z\n", ZPrinter, &c);
}
void setup() {
Body.reflex('d',doubleDouble);
}
void loop() {
}