Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:516a9e85a3fb, 2013-05-26 (annotated)
- Committer:
- MRSa
- Date:
- Sun May 26 13:14:41 2013 +0000
- Revision:
- 0:516a9e85a3fb
- Child:
- 1:05e9a83b721c
first revision.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| MRSa | 0:516a9e85a3fb | 1 | #include "mbed.h" |
| MRSa | 0:516a9e85a3fb | 2 | #include "bc_ant.h" |
| MRSa | 0:516a9e85a3fb | 3 | |
| MRSa | 0:516a9e85a3fb | 4 | /** USBTX - Tranmit on USB USBRX - receive on USB **/ |
| MRSa | 0:516a9e85a3fb | 5 | Serial pc(USBTX, USBRX); |
| MRSa | 0:516a9e85a3fb | 6 | |
| MRSa | 0:516a9e85a3fb | 7 | /** LPC1768 LEDs **/ |
| MRSa | 0:516a9e85a3fb | 8 | BusOut myLeds(LED1, LED2, LED3, LED4); |
| MRSa | 0:516a9e85a3fb | 9 | |
| MRSa | 0:516a9e85a3fb | 10 | /** for BC-ANT-SERIAL (LPC1768) **/ |
| MRSa | 0:516a9e85a3fb | 11 | bc_ant antPort(p13, p14, p15, 9600); |
| MRSa | 0:516a9e85a3fb | 12 | |
| MRSa | 0:516a9e85a3fb | 13 | /** DIP-SW (for NODE SHARED ADDRESS) **/ |
| MRSa | 0:516a9e85a3fb | 14 | DigitalIn dip1(p20); // DIP-SW1 |
| MRSa | 0:516a9e85a3fb | 15 | DigitalIn dip2(p19); // DIP-SW2 |
| MRSa | 0:516a9e85a3fb | 16 | |
| MRSa | 0:516a9e85a3fb | 17 | /** OUTPUT DEVICES **/ |
| MRSa | 0:516a9e85a3fb | 18 | DigitalOut led0(p21); |
| MRSa | 0:516a9e85a3fb | 19 | |
| MRSa | 0:516a9e85a3fb | 20 | /** ANT DEFINES **/ |
| MRSa | 0:516a9e85a3fb | 21 | #define MAX_BUFSIZE 64 |
| MRSa | 0:516a9e85a3fb | 22 | #define ANT_CH 0 |
| MRSa | 0:516a9e85a3fb | 23 | #define DEVICE_NUMBER 65 |
| MRSa | 0:516a9e85a3fb | 24 | #define ANT_NETWORK_NUMBER 0 // Network Number |
| MRSa | 0:516a9e85a3fb | 25 | #define TRANS_TYPE_WILDCARD 0 // Wild Card |
| MRSa | 0:516a9e85a3fb | 26 | #define TRANS_TYPE_INDEPENDENT 1 // Independent Channel |
| MRSa | 0:516a9e85a3fb | 27 | #define TRANS_TYPE_SHARED_2BYTES 3 // Shared Channel using 2byte address |
| MRSa | 0:516a9e85a3fb | 28 | #define DEVICE_TYPE_WILDCARD 0 |
| MRSa | 0:516a9e85a3fb | 29 | #define DEVICE_TYPE_ID 3 // Device Type ID |
| MRSa | 0:516a9e85a3fb | 30 | |
| MRSa | 0:516a9e85a3fb | 31 | /** DIP-SWITCH ASSIGN **/ |
| MRSa | 0:516a9e85a3fb | 32 | #define ID_1 0x00001 // 1:off, 2:off |
| MRSa | 0:516a9e85a3fb | 33 | #define ID_2 0x00002 // 1:on, 2:off |
| MRSa | 0:516a9e85a3fb | 34 | #define ID_3 0x00004 // 1:off, 2:on |
| MRSa | 0:516a9e85a3fb | 35 | #define ID_4 0x00008 // 1:on, 2:on |
| MRSa | 0:516a9e85a3fb | 36 | |
| MRSa | 0:516a9e85a3fb | 37 | |
| MRSa | 0:516a9e85a3fb | 38 | /** |
| MRSa | 0:516a9e85a3fb | 39 | * CHECK DIP-SW STATUS |
| MRSa | 0:516a9e85a3fb | 40 | */ |
| MRSa | 0:516a9e85a3fb | 41 | int check_DipSw() |
| MRSa | 0:516a9e85a3fb | 42 | { |
| MRSa | 0:516a9e85a3fb | 43 | if (dip1 == 0) |
| MRSa | 0:516a9e85a3fb | 44 | { |
| MRSa | 0:516a9e85a3fb | 45 | return ((dip2 == 0) ? 4 : 2); |
| MRSa | 0:516a9e85a3fb | 46 | } |
| MRSa | 0:516a9e85a3fb | 47 | return ((dip2 == 0) ? 3 : 1); |
| MRSa | 0:516a9e85a3fb | 48 | } |
| MRSa | 0:516a9e85a3fb | 49 | |
| MRSa | 0:516a9e85a3fb | 50 | /** |
| MRSa | 0:516a9e85a3fb | 51 | * GET LED LAMP ID |
| MRSa | 0:516a9e85a3fb | 52 | */ |
| MRSa | 0:516a9e85a3fb | 53 | int getLampId(int id) |
| MRSa | 0:516a9e85a3fb | 54 | { |
| MRSa | 0:516a9e85a3fb | 55 | int lampId = ID_1; |
| MRSa | 0:516a9e85a3fb | 56 | switch (id) |
| MRSa | 0:516a9e85a3fb | 57 | { |
| MRSa | 0:516a9e85a3fb | 58 | case 4: |
| MRSa | 0:516a9e85a3fb | 59 | lampId = ID_4; |
| MRSa | 0:516a9e85a3fb | 60 | break; |
| MRSa | 0:516a9e85a3fb | 61 | case 3: |
| MRSa | 0:516a9e85a3fb | 62 | lampId = ID_3; |
| MRSa | 0:516a9e85a3fb | 63 | break; |
| MRSa | 0:516a9e85a3fb | 64 | case 2: |
| MRSa | 0:516a9e85a3fb | 65 | lampId = ID_2; |
| MRSa | 0:516a9e85a3fb | 66 | break; |
| MRSa | 0:516a9e85a3fb | 67 | case 1: |
| MRSa | 0:516a9e85a3fb | 68 | default: |
| MRSa | 0:516a9e85a3fb | 69 | lampId = ID_1; |
| MRSa | 0:516a9e85a3fb | 70 | break; |
| MRSa | 0:516a9e85a3fb | 71 | } |
| MRSa | 0:516a9e85a3fb | 72 | return (lampId); |
| MRSa | 0:516a9e85a3fb | 73 | } |
| MRSa | 0:516a9e85a3fb | 74 | |
| MRSa | 0:516a9e85a3fb | 75 | /** |
| MRSa | 0:516a9e85a3fb | 76 | * Recieved a message from ANT port. |
| MRSa | 0:516a9e85a3fb | 77 | */ |
| MRSa | 0:516a9e85a3fb | 78 | void receivedFromAnt() |
| MRSa | 0:516a9e85a3fb | 79 | { |
| MRSa | 0:516a9e85a3fb | 80 | uint8_t receivedLength = 0; |
| MRSa | 0:516a9e85a3fb | 81 | uint8_t receivedBuffer[MAX_BUFSIZE]; |
| MRSa | 0:516a9e85a3fb | 82 | receivedLength = antPort.BC_ANT_RecvPacket(receivedBuffer, MAX_BUFSIZE); |
| MRSa | 0:516a9e85a3fb | 83 | |
| MRSa | 0:516a9e85a3fb | 84 | printf("RX(%3d):", receivedLength); |
| MRSa | 0:516a9e85a3fb | 85 | for (int index = 0; index < receivedLength; index++) |
| MRSa | 0:516a9e85a3fb | 86 | { |
| MRSa | 0:516a9e85a3fb | 87 | printf("%02x ", receivedBuffer[index]); |
| MRSa | 0:516a9e85a3fb | 88 | } |
| MRSa | 0:516a9e85a3fb | 89 | printf("\r\n"); |
| MRSa | 0:516a9e85a3fb | 90 | } |
| MRSa | 0:516a9e85a3fb | 91 | |
| MRSa | 0:516a9e85a3fb | 92 | /** |
| MRSa | 0:516a9e85a3fb | 93 | * Moving command received from HOST |
| MRSa | 0:516a9e85a3fb | 94 | */ |
| MRSa | 0:516a9e85a3fb | 95 | void sendToAnt(uint8_t *buffer) |
| MRSa | 0:516a9e85a3fb | 96 | { |
| MRSa | 0:516a9e85a3fb | 97 | antPort.ANT_SendAcknowledgedData(ANT_CH, buffer); |
| MRSa | 0:516a9e85a3fb | 98 | } |
| MRSa | 0:516a9e85a3fb | 99 | |
| MRSa | 0:516a9e85a3fb | 100 | /** |
| MRSa | 0:516a9e85a3fb | 101 | * initializes ANT port |
| MRSa | 0:516a9e85a3fb | 102 | */ |
| MRSa | 0:516a9e85a3fb | 103 | int initialize_ANTport(bool isReceive) |
| MRSa | 0:516a9e85a3fb | 104 | { |
| MRSa | 0:516a9e85a3fb | 105 | antPort.ANT_ResetSystem(); |
| MRSa | 0:516a9e85a3fb | 106 | antPort.ANT_AssignChannel(ANT_CH, ANT_Shared_Bidirectional_Slave, ANT_NETWORK_NUMBER); |
| MRSa | 0:516a9e85a3fb | 107 | antPort.ANT_SetChannelId(ANT_CH, DEVICE_NUMBER, DEVICE_TYPE_ID, TRANS_TYPE_SHARED_2BYTES); |
| MRSa | 0:516a9e85a3fb | 108 | antPort.ANT_SetChannelPeriod_Hz(ANT_CH, 16); // 16Hz : 32768/16 = 2048 |
| MRSa | 0:516a9e85a3fb | 109 | antPort.ANT_SetChannelRFFreq(ANT_CH, 4); // 2404 MHz |
| MRSa | 0:516a9e85a3fb | 110 | antPort.ANT_OpenChannel(ANT_CH); // |
| MRSa | 0:516a9e85a3fb | 111 | antPort.attach(&receivedFromAnt); // callback function |
| MRSa | 0:516a9e85a3fb | 112 | |
| MRSa | 0:516a9e85a3fb | 113 | // set device's shared address |
| MRSa | 0:516a9e85a3fb | 114 | uint8_t buffer[MAX_BUFSIZE] = |
| MRSa | 0:516a9e85a3fb | 115 | { |
| MRSa | 0:516a9e85a3fb | 116 | 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff |
| MRSa | 0:516a9e85a3fb | 117 | }; |
| MRSa | 0:516a9e85a3fb | 118 | buffer[0] = check_DipSw(); |
| MRSa | 0:516a9e85a3fb | 119 | antPort.ANT_SendBroadcastData(ANT_CH, buffer); |
| MRSa | 0:516a9e85a3fb | 120 | return (0); |
| MRSa | 0:516a9e85a3fb | 121 | } |
| MRSa | 0:516a9e85a3fb | 122 | |
| MRSa | 0:516a9e85a3fb | 123 | /** |
| MRSa | 0:516a9e85a3fb | 124 | * Main Routine |
| MRSa | 0:516a9e85a3fb | 125 | */ |
| MRSa | 0:516a9e85a3fb | 126 | int main() |
| MRSa | 0:516a9e85a3fb | 127 | { |
| MRSa | 0:516a9e85a3fb | 128 | printf("--- INITIALIZE (ID:%d) ----\r\n", check_DipSw()); |
| MRSa | 0:516a9e85a3fb | 129 | int statusLamp = getLampId(check_DipSw()); |
| MRSa | 0:516a9e85a3fb | 130 | pc.baud(9600); // set serial speed between PC and mbed. |
| MRSa | 0:516a9e85a3fb | 131 | initialize_ANTport(true); // initialize BC-ANT-SERIAL |
| MRSa | 0:516a9e85a3fb | 132 | printf("--- READY ----\r\n"); |
| MRSa | 0:516a9e85a3fb | 133 | |
| MRSa | 0:516a9e85a3fb | 134 | while(1) |
| MRSa | 0:516a9e85a3fb | 135 | { |
| MRSa | 0:516a9e85a3fb | 136 | myLeds = statusLamp; |
| MRSa | 0:516a9e85a3fb | 137 | //led0 = 1; |
| MRSa | 0:516a9e85a3fb | 138 | wait(0.5); |
| MRSa | 0:516a9e85a3fb | 139 | myLeds = 0; |
| MRSa | 0:516a9e85a3fb | 140 | //led0 = 0; |
| MRSa | 0:516a9e85a3fb | 141 | wait(0.5); |
| MRSa | 0:516a9e85a3fb | 142 | } |
| MRSa | 0:516a9e85a3fb | 143 | } |