예제 #1
0
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);
}
예제 #2
0
 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);
 }