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 | } |