Subversion Repositories Code-Repo

Rev

Rev 224 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
224 Kevin 1
#include <xc.h>
2
#include "main.h"
3
#include "RN-42.h"
4
#include "UART.h"
5
#include <string.h>
6
 
7
extern char LED_G_ON;
8
extern char LED_R_ON;
9
 
10
void RN42_Init(void) {
11
    if (RN42_Enter_CMD_Mode()) {
12
        // Set authentication to open mode
13
        char sa[] = "SA,0\r";
14
        RN42_Send_CMD(sa, 5);
15
        // Optimize for low latency rather than throughput
16
        char sq[] = "SQ,16\r";
17
        RN42_Send_CMD(sq, 6);
18
//        // Allow continuous configuration
19
//        char st[] = "ST,255\r";
20
//        RN42_Send_CMD(st, 7);
21
//        // Set page scan window to maximum
22
//        char sj[] = "SJ,800\r";
23
//        RN42_Send_CMD(sj, 7);
24
//        // Enable connection status strings
25
//        char so[] = "SO,!\r";
26
//        RN42_Send_CMD(so, 5);
27
        // Reboot with the new settings
28
        char r[] = "R,1\r";
29
        RN42_Send_CMD(r, 4);
30
    }
31
}
32
 
33
char RN42_Enter_CMD_Mode(void) {
34
    char ret, buffer[10];
35
    char cmd_mode[] = "$$$";
36
    UART_Write(cmd_mode, 3);
37
    __delay_ms(30);
38
    ret = UART_Read(buffer);
39
    if (ret == 5 && !strncmp(buffer, "CMD\r\n", 5))
40
        return 1;
41
    else
42
        return 0;
43
}
44
 
45
void RN42_Exit_CMD_Mode(void) {
46
    char ret, buffer[10];
47
    char cmd_ret[] = "---\r";
48
    UART_Write(cmd_ret, 4);
49
    __delay_ms(30);
50
    ret = UART_Read(buffer); // Exiting should return "END"
51
}
52
 
53
char RN42_Send_CMD(char *cmd, char length) {
54
    char ret, buffer[10];
55
    UART_Write(cmd, length);
56
    __delay_ms(30);
57
    ret = UART_Read(buffer);
58
    if (ret == 5 && !strncmp(buffer, "AOK\r\n", 5))
59
        return 1;
60
    else
61
        return 0;
62
}
63
 
64
char RN42_Connected_Status(void) {
65
    if (RN42_Enter_CMD_Mode()) {
66
        char ret, buffer[10], cmd[] = "GK\r";
67
        UART_Write(cmd, 3);
68
        __delay_ms(30);
69
        ret = UART_Read(buffer);
70
        if (ret == 7 && !strncmp(buffer, "1,0,0\r\n", 7)) {
71
            RN42_Exit_CMD_Mode();
72
            return 1;
73
        } else {
74
            RN42_Exit_CMD_Mode();
75
            return 0;
76
        }
77
    } else {
78
        return 0;
79
    }
80
}