Esempio n. 1
0
void print_packet(uint8_t* rx_buffer) {
  uint8_t length = rx_buffer[0] - 3;
  uart_newline();
  uart_sendstr_p(PSTR("Data Length: "));
  utoa(length, (char *)msg_buf, 10);
  uart_sendstr((char *)msg_buf);
  uart_newline();

  uart_sendstr_p(PSTR("Dec\tHex\tChr"));
  uart_newline();

  uint8_t i;
  for (i = 1; i <= length; i++) {
    utoa(rx_buffer[i], (char *)msg_buf, 10);
    uart_sendstr((char *)msg_buf);
    uart_sendchar('\t');

    utoa(rx_buffer[i], (char *)msg_buf, 16);
    uart_sendstr((char *)msg_buf);
    uart_sendchar('\t');

    uart_sendchar(rx_buffer[i]);
    uart_newline();
  }
  uart_newline();
}
Esempio n. 2
0
void uart_sendstr(char *data) 
{
  while (*data) {
    uart_sendchar(*data);
    data++;
  }
}
Esempio n. 3
0
// Read a max of 2 digits from the serial line
// return value of -1 means no change (user just hit return)
signed char terminalmode_readnum(unsigned char chr_nl){
        unsigned char ch;
        unsigned char lineendcnt=1;
        unsigned char digits=2; // you can enter max 2 digits
        signed char rval=-1;
	if (chr_nl){
		// we expect \r\n as line end
		lineendcnt=2;
	}
	ch=uart_getchar(1);
	while(ch != '\r' && ch !='\n' && digits){
		if ((ch >= '0') && (ch <= '9')){
			if (rval==-1){
				rval=0;
			}
			uart_sendchar(ch); // echo number back to terminal
			rval=rval*10 + (ch  - (unsigned char)'0');
			digits--;
		}
		ch=uart_getchar(1);
	}
	// user just pressed return or enter just 1 digit
	if (ch == '\r' || ch == '\n'){
		lineendcnt--;
	}
	// get \n or \r\n after a number was entered:
	while(lineendcnt){
		ch=uart_getchar(1);
		lineendcnt--;
	}
	return(rval);
}
Esempio n. 4
0
void print_bits(uint16_t* bits) {
  utoa(((*bits) & 0x3f) << 4, (char *)msg_buf, 2);
  uart_sendstr((char *)msg_buf);
  uart_sendchar(' ');
  utoa((*bits) >> 6, (char *)msg_buf, 2);
  uart_sendstr((char *)msg_buf);
  uart_newline();
}
Esempio n. 5
0
void uart_sendstr_p(const char *progmem_s)
{
  // print string from program memory
  char c;
  while ((c = pgm_read_byte(progmem_s++))) {
    uart_sendchar(c);
  }
}
Esempio n. 6
0
/* transmit an answer back to the programmer software, message is
 * in msg_buf, seqnum is the seqnum of the last message from the programmer software,
 * len=1..275 according to avr068 */
void transmit_answer(unsigned char seqnum,unsigned int len)
{
        unsigned char cksum;
        unsigned char ch;
        int i;
        if (len>285 || len <1){
                // software error
                len = 2;
                // msg_buf[0]: not changed
                msg_buf[1] = STATUS_CMD_FAILED;
        }
        uart_sendchar(MESSAGE_START); // 0x1B
        cksum = MESSAGE_START^0;
        uart_sendchar(seqnum);
        cksum^=seqnum;
        ch=(len>>8)&0xFF;
        uart_sendchar(ch);
        cksum^=ch;
        ch=len&0xFF;
        uart_sendchar(ch);
        cksum^=ch;
        uart_sendchar(TOKEN); // 0x0E
        cksum^=TOKEN;
        wd_kick();
        for(i=0;i<len;i++){
                uart_sendchar(msg_buf[i]);
                cksum^=msg_buf[i];
        }
        uart_sendchar(cksum);
}
Esempio n. 7
0
File: main.c Progetto: bgbock/rdmp
 int main (void)
  {
  init_hw();
  LCD_init();
  SR_DAT_IN;
  while (1)
  	{
	uart_sendchar('A');
	uart_sendstr("0123456789abcdef");
 // 	dly_ms(40);
  	if (rcvd_flag)
  		{
  		rcvd_flag=0;
  		uart_sendstr("R:");
  		if (f_gsm_ok)
  			{
  			f_gsm_ok=0;
  			uart_sendstr("G_OK");
  			}
  		if (f_gsm_nc)
  			{
  			f_gsm_nc=0;
  			uart_sendstr("G_NC");
  			}
  		if (f_gsm_cr)
  			{
  			f_gsm_cr=0;
  			uart_sendstr("G_CR");
  			}
  		if (f_gsm_ring)
  			{
  			f_gsm_ring=0;
  			uart_sendstr("G_RI");
  			}
  		uart_sendstr("\r\n");
  		}


  	keys = read_keys();

  	if (keys==0x01) 		update_lcd("K1");
  	else if (keys==0x02) 	update_lcd("K2");
  	else if (keys==0x04) 	update_lcd("K3");
  	else if (keys==0x08) 	update_lcd("K4");
  	else if (keys==0x10) 	update_lcd("K5");
  	else if (keys==0x20) 	update_lcd("K6");
  	else if (keys==0x40) 	update_lcd("K7");
  	else if (keys==0x00) 	update_lcd("0123456789ABCDEF");
  	else update_lcd("Kx");
/*
	if (keys_handling(&key))
		{
		keys = key;
		}
*/
  	}
  }
Esempio n. 8
0
void terminalmode(unsigned char chr_nl)
{
	signed char i;
	// Init terminal
	uart_sendstr_p(terminal_init);
	//
	uart_sendstr_P("AvrUsb500-1.4 terminal mode\r\n");
	uart_sendstr_P("Enter SW Version Major [");
	utoa(CONFIG_PARAM_SW_MAJOR,(char *)msg_buf, 10);
	uart_sendstr((char *)msg_buf);
	uart_sendstr_P("]: ");
	i=terminalmode_readnum(chr_nl);
	if (i >=0){
		CONFIG_PARAM_SW_MAJOR=(unsigned char)i;
	}
	terminalmode_next_line();
	uart_sendstr_P("Enter SW Version Minor [");
	utoa(CONFIG_PARAM_SW_MINOR,(char *)msg_buf, 10);
	uart_sendstr((char *)msg_buf);
	uart_sendstr_P("]: ");
	i=terminalmode_readnum(chr_nl);
	if (i >=0){
		CONFIG_PARAM_SW_MINOR=(unsigned char)i;
	}
	terminalmode_next_line();
	eeprom_write_byte(EEPROM_MINOR, CONFIG_PARAM_SW_MINOR);
	eeprom_write_byte(EEPROM_MAJOR, CONFIG_PARAM_SW_MAJOR);
	eeprom_write_byte(EEPROM_MAGIC, 20);// magic number=data is valid
	uart_sendstr_P("\r\nOK, my SW version is now: ");
	utoa(CONFIG_PARAM_SW_MAJOR,(char *)msg_buf, 10);
	uart_sendstr((char *)msg_buf);
	uart_sendchar('.');
	if (CONFIG_PARAM_SW_MINOR < 10){
		uart_sendchar('0');
	}
	utoa(CONFIG_PARAM_SW_MINOR,(char *)msg_buf, 10);
	uart_sendstr((char *)msg_buf);
	uart_sendstr_P("\r\n");
	uart_sendstr_P("Ready. Just close the terminal. No reset needed.\r\n");
}
Esempio n. 9
0
void uart_newline(void) {
  uart_sendchar('\x1B');
  uart_sendchar('E');
}
Esempio n. 10
0
void terminalmode_next_line(void)
{
        uart_sendchar('\x1B');
        uart_sendchar('E');
}