summaryrefslogtreecommitdiffstats
path: root/rf_test/recv.c
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2024-11-17 17:09:27 +0800
committerSadeep Madurange <sadeep@asciimx.com>2024-11-17 17:09:27 +0800
commit956a9c26e42d842a0c49c3bf9aa3f71c00c49488 (patch)
tree91d513ce47897f9b6e3ce621ab9726d9252141be /rf_test/recv.c
parent7f568115a564740c1f8b9573de72eb79f48f169a (diff)
downloadsmart-home-956a9c26e42d842a0c49c3bf9aa3f71c00c49488.tar.gz
Lower baud rate.
Diffstat (limited to 'rf_test/recv.c')
-rw-r--r--rf_test/recv.c62
1 files changed, 30 insertions, 32 deletions
diff --git a/rf_test/recv.c b/rf_test/recv.c
index 02fab41..a908bbe 100644
--- a/rf_test/recv.c
+++ b/rf_test/recv.c
@@ -7,10 +7,10 @@
#define LOCK_LED PD6
#define UNLOCK_LED PD7
-#define SYN 0xA4
-#define ADDR 0x44
-#define LOCK_CMD 0x11
-#define UNLOCK_CMD 0x22
+#define SYN 0xA1
+#define FIN 0xB2
+#define LOCK 0xC3
+#define UNLOCK 0xD3
static void usart_init(void)
{
@@ -30,6 +30,7 @@ static void led_init(void)
{
DDRB |= (1 << TEST_LED);
DDRD |= (1 << LOCK_LED) | (1 << UNLOCK_LED);
+ PORTD |= (1 << LOCK_LED) | (1 << UNLOCK_LED);
}
int main(void)
@@ -45,38 +46,35 @@ int main(void)
return 0;
}
-static inline int is_btn_pressed(unsigned char btn)
+ISR(USART_RX_vect)
{
- if (!((PIND >> btn) & 0x01)) {
- _delay_us(2000);
- return !((PIND >> btn) & 0x01);
- }
+ unsigned char data, buf;
+
+ data = 0;
+ buf = usart_recv();
- return 0;
-}
+ if (buf == SYN) {
+ buf = usart_recv();
-ISR(USART_RX_vect)
-{
- unsigned char syn, addr, data, chk;
-
- syn = usart_recv();
- addr = usart_recv();
- data = usart_recv();
- chk = usart_recv();
-
- if(chk == (addr + data))
- {
- if(addr == ADDR)
- {
- if(data == LOCK_CMD) {
- PORTD |= (1 << LOCK_LED);
- PORTD &= ~(1 << UNLOCK_LED);
-
- } else if (data == UNLOCK_LED) {
- PORTD |= (1 << UNLOCK_LED);
- PORTD &= ~(1 << LOCK_LED);
+ while (buf != FIN) {
+ buf = usart_recv();
+
+ if (buf == SYN) {
+ PORTB ^= (1 << TEST_LED);
+ return;
}
+
+ if (buf != FIN)
+ data = buf;
+ }
+
+ if(data == LOCK) {
+ PORTD |= (1 << LOCK_LED);
+ PORTD &= ~(1 << UNLOCK_LED);
+ } else if (data == UNLOCK) {
+ PORTD |= (1 << UNLOCK_LED);
+ PORTD &= ~(1 << LOCK_LED);
}
- PORTB ^= (1 << TEST_LED);
}
+
}