Пример #1
0
void bt_init( void )
{
	uint8_t num_baudrates = sizeof(baudrates)/sizeof(uint32_t);
	uint8_t i = 0;
	int16_t received;

	/* first set BT module AT mode pin */
	io_on( HC05_CMD_PORT, HC05_CMD_PIN);
	/* now wait 100ms */
	delay(100);

	/* iterate through baudrates */
	do
	{
		usart_config_baudrate( baudrates[i]);
		usart_flush();
		/* send AT command */
		usart_transmit( (uint8_t *)BTCMD_AT, BTCMD_AT_LEN);
		/* wait for response */
		received = usart_receive( response_buffer, 4, RESPONSE_TIMEOUT);

		/* we found a valid answer */
		if( received > 0)
		{
			break;
		}
		i++;
	}while(i < num_baudrates);

	if( i > 0)
	{
		/* module seems to be configured for default -> reprogram */
		usart_transmit( (uint8_t *)BTCMD_SET_NAME, BTCMD_SET_NAME_LEN);
		received = usart_receive( response_buffer, RESPONSE_LENGTH, RESPONSE_TIMEOUT);
		/* module seems to be configured for default -> reprogram */
		usart_transmit( (uint8_t *)BTCMD_SET_PW, BTCMD_SET_PW_LEN);
		received = usart_receive( response_buffer, RESPONSE_LENGTH, RESPONSE_TIMEOUT);
		/* module seems to be configured for default -> reprogram */
		usart_transmit( (uint8_t *)BTCMD_SET_BAUD, BTCMD_SET_BAUD_LEN);
		received = usart_receive( response_buffer, RESPONSE_LENGTH, RESPONSE_TIMEOUT);
	}


	/* send reset */
	usart_transmit( (uint8_t *)BTCMD_RESET, BTCMD_RESET_LEN);
	received = usart_receive( response_buffer, RESPONSE_LENGTH, RESPONSE_TIMEOUT);
	/* leave AT mode */
	io_off( HC05_CMD_PORT, HC05_CMD_PIN);
	/* wait a bit */
	delay( 100);
	usart_config_baudrate( baudrates[0]);
	usart_flush();

	bt_ready = 1;

}
Пример #2
0
/* Get character from stream */
int uart_getchar(FILE *stream) {
    char data = usart_receive();                // Temporarily store the received data
    if(data == '\r') {
        data = '\n';                            // Convert for terminal to understand
    }
    // stream_printf(data, stream);                // Send to console what has been received, so we can see when typing
    return data;        
}
Пример #3
0
int8_t debug_process(const message_t *msg)
{
    int8_t msg_recognized = 1;

    switch (msg->cmd) {
        default:
            msg_recognized = 0;
            break;
    }

    if (usart_rx_ischar()) {
        unsigned char ch = usart_receive();
        switch (ch) {
            case 'v': {
                message_t *nmsg = loop_put_msg_begin();
                nmsg->cmd = Cmd_SayTime;
                nmsg->arg1p = &gv_clock_main;      // WARN: discards volatile
                loop_put_msg_end(nmsg);
                break;
            }

#define SBUF_SIZE   (2*SNDBUF_SIZE)
            case 'O': {
                char *sbuf = (char*)g_sound_buf;
                usart_sendstr_P(PSTR(" / file open: Enter abs. file name = "));
                usart_getline(sbuf, SBUF_SIZE);
                usart_sendstr_P(PSTR("\nFile name: '"));
                usart_sendstr(sbuf);
                usart_sendstr_P(PSTR("'\n"));
                
                message_t *nmsg = loop_put_msg_begin();
                nmsg->cmd = Cmd_PlayFileName;
                nmsg->arg1p = sbuf;
                loop_put_msg_end(nmsg);
                break;
            }

            default: {
                usart_sendstr_P(PSTR("\nCmd? "));
                break;
            }
        }

    }


    return msg_recognized;
}