result_t ser_putc(u8_t c) { ser_block_t **sb; sb = gen_add_base(&ser_block); if(*sb == NULL) { return FAILURE; } return SER_PUTC(*sb, c); }
void log_write(const char* format, ...) { va_list params; va_start (params, format); char temp; char *pchar; char buffer[17]; char digits = 0; char padding = ' '; char byte = *format++; while (byte != 0) { if (byte != '%') { SER_PUTC(byte); } else { /* Get next byte from format string */ byte = *format++; if (byte == 0) break; if (isdigit(byte)) { /* convert to number and remember it */ digits = byte - '0'; if (digits == 0) { padding = '0'; /* Get next byte from format string */ byte = *format++; if (byte == 0) break; if (isdigit(byte)) { digits = byte - '0'; } } /* Get next byte from format string */ byte = *format++; if (byte == 0) break; } switch (byte) { case 'c': temp = va_arg(params, int16_t); SER_PUTC(temp); break; case 's': pchar = va_arg(params, char*); SER_PUTS(pchar); break; case 'i': _format_number(va_arg(params, int16_t), 10, digits, padding, buffer); SER_PUTS(buffer); break; case 'x': _format_number(va_arg(params, uint16_t), 16, digits, padding, buffer); SER_PUTS(buffer); break; case 'b': _format_number(va_arg(params, int16_t), 2, digits, padding, buffer); SER_PUTS(buffer); break; } } /* Get next byte from format string */ byte = *format++; }; va_end(params); }