Ryoji Sakai / Mbed 2 deprecated bc_ant-receiver

Dependencies:   bc_ant mbed

Committer:
MRSa
Date:
Sun May 26 13:25:39 2013 +0000
Revision:
1:05e9a83b721c
Parent:
0:516a9e85a3fb
Child:
2:691ccdef6f1e
add LED

Who changed what in which revision?

UserRevisionLine numberNew 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 1:05e9a83b721c 19 DigitalOut led1(p22);
MRSa 0:516a9e85a3fb 20
MRSa 0:516a9e85a3fb 21 /** ANT DEFINES **/
MRSa 0:516a9e85a3fb 22 #define MAX_BUFSIZE 64
MRSa 0:516a9e85a3fb 23 #define ANT_CH 0
MRSa 0:516a9e85a3fb 24 #define DEVICE_NUMBER 65
MRSa 0:516a9e85a3fb 25 #define ANT_NETWORK_NUMBER 0 // Network Number
MRSa 0:516a9e85a3fb 26 #define TRANS_TYPE_WILDCARD 0 // Wild Card
MRSa 0:516a9e85a3fb 27 #define TRANS_TYPE_INDEPENDENT 1 // Independent Channel
MRSa 0:516a9e85a3fb 28 #define TRANS_TYPE_SHARED_2BYTES 3 // Shared Channel using 2byte address
MRSa 0:516a9e85a3fb 29 #define DEVICE_TYPE_WILDCARD 0
MRSa 0:516a9e85a3fb 30 #define DEVICE_TYPE_ID 3 // Device Type ID
MRSa 0:516a9e85a3fb 31
MRSa 0:516a9e85a3fb 32 /** DIP-SWITCH ASSIGN **/
MRSa 0:516a9e85a3fb 33 #define ID_1 0x00001 // 1:off, 2:off
MRSa 0:516a9e85a3fb 34 #define ID_2 0x00002 // 1:on, 2:off
MRSa 0:516a9e85a3fb 35 #define ID_3 0x00004 // 1:off, 2:on
MRSa 0:516a9e85a3fb 36 #define ID_4 0x00008 // 1:on, 2:on
MRSa 0:516a9e85a3fb 37
MRSa 0:516a9e85a3fb 38
MRSa 0:516a9e85a3fb 39 /**
MRSa 0:516a9e85a3fb 40 * CHECK DIP-SW STATUS
MRSa 0:516a9e85a3fb 41 */
MRSa 0:516a9e85a3fb 42 int check_DipSw()
MRSa 0:516a9e85a3fb 43 {
MRSa 0:516a9e85a3fb 44 if (dip1 == 0)
MRSa 0:516a9e85a3fb 45 {
MRSa 0:516a9e85a3fb 46 return ((dip2 == 0) ? 4 : 2);
MRSa 0:516a9e85a3fb 47 }
MRSa 0:516a9e85a3fb 48 return ((dip2 == 0) ? 3 : 1);
MRSa 0:516a9e85a3fb 49 }
MRSa 0:516a9e85a3fb 50
MRSa 0:516a9e85a3fb 51 /**
MRSa 0:516a9e85a3fb 52 * GET LED LAMP ID
MRSa 0:516a9e85a3fb 53 */
MRSa 0:516a9e85a3fb 54 int getLampId(int id)
MRSa 0:516a9e85a3fb 55 {
MRSa 0:516a9e85a3fb 56 int lampId = ID_1;
MRSa 0:516a9e85a3fb 57 switch (id)
MRSa 0:516a9e85a3fb 58 {
MRSa 0:516a9e85a3fb 59 case 4:
MRSa 0:516a9e85a3fb 60 lampId = ID_4;
MRSa 0:516a9e85a3fb 61 break;
MRSa 0:516a9e85a3fb 62 case 3:
MRSa 0:516a9e85a3fb 63 lampId = ID_3;
MRSa 0:516a9e85a3fb 64 break;
MRSa 0:516a9e85a3fb 65 case 2:
MRSa 0:516a9e85a3fb 66 lampId = ID_2;
MRSa 0:516a9e85a3fb 67 break;
MRSa 0:516a9e85a3fb 68 case 1:
MRSa 0:516a9e85a3fb 69 default:
MRSa 0:516a9e85a3fb 70 lampId = ID_1;
MRSa 0:516a9e85a3fb 71 break;
MRSa 0:516a9e85a3fb 72 }
MRSa 0:516a9e85a3fb 73 return (lampId);
MRSa 0:516a9e85a3fb 74 }
MRSa 0:516a9e85a3fb 75
MRSa 0:516a9e85a3fb 76 /**
MRSa 0:516a9e85a3fb 77 * Recieved a message from ANT port.
MRSa 0:516a9e85a3fb 78 */
MRSa 0:516a9e85a3fb 79 void receivedFromAnt()
MRSa 0:516a9e85a3fb 80 {
MRSa 0:516a9e85a3fb 81 uint8_t receivedLength = 0;
MRSa 0:516a9e85a3fb 82 uint8_t receivedBuffer[MAX_BUFSIZE];
MRSa 0:516a9e85a3fb 83 receivedLength = antPort.BC_ANT_RecvPacket(receivedBuffer, MAX_BUFSIZE);
MRSa 0:516a9e85a3fb 84
MRSa 0:516a9e85a3fb 85 printf("RX(%3d):", receivedLength);
MRSa 0:516a9e85a3fb 86 for (int index = 0; index < receivedLength; index++)
MRSa 0:516a9e85a3fb 87 {
MRSa 0:516a9e85a3fb 88 printf("%02x ", receivedBuffer[index]);
MRSa 0:516a9e85a3fb 89 }
MRSa 0:516a9e85a3fb 90 printf("\r\n");
MRSa 0:516a9e85a3fb 91 }
MRSa 0:516a9e85a3fb 92
MRSa 0:516a9e85a3fb 93 /**
MRSa 0:516a9e85a3fb 94 * Moving command received from HOST
MRSa 0:516a9e85a3fb 95 */
MRSa 0:516a9e85a3fb 96 void sendToAnt(uint8_t *buffer)
MRSa 0:516a9e85a3fb 97 {
MRSa 0:516a9e85a3fb 98 antPort.ANT_SendAcknowledgedData(ANT_CH, buffer);
MRSa 0:516a9e85a3fb 99 }
MRSa 0:516a9e85a3fb 100
MRSa 0:516a9e85a3fb 101 /**
MRSa 0:516a9e85a3fb 102 * initializes ANT port
MRSa 0:516a9e85a3fb 103 */
MRSa 0:516a9e85a3fb 104 int initialize_ANTport(bool isReceive)
MRSa 0:516a9e85a3fb 105 {
MRSa 0:516a9e85a3fb 106 antPort.ANT_ResetSystem();
MRSa 0:516a9e85a3fb 107 antPort.ANT_AssignChannel(ANT_CH, ANT_Shared_Bidirectional_Slave, ANT_NETWORK_NUMBER);
MRSa 0:516a9e85a3fb 108 antPort.ANT_SetChannelId(ANT_CH, DEVICE_NUMBER, DEVICE_TYPE_ID, TRANS_TYPE_SHARED_2BYTES);
MRSa 0:516a9e85a3fb 109 antPort.ANT_SetChannelPeriod_Hz(ANT_CH, 16); // 16Hz : 32768/16 = 2048
MRSa 0:516a9e85a3fb 110 antPort.ANT_SetChannelRFFreq(ANT_CH, 4); // 2404 MHz
MRSa 0:516a9e85a3fb 111 antPort.ANT_OpenChannel(ANT_CH); //
MRSa 0:516a9e85a3fb 112 antPort.attach(&receivedFromAnt); // callback function
MRSa 0:516a9e85a3fb 113
MRSa 0:516a9e85a3fb 114 // set device's shared address
MRSa 0:516a9e85a3fb 115 uint8_t buffer[MAX_BUFSIZE] =
MRSa 0:516a9e85a3fb 116 {
MRSa 0:516a9e85a3fb 117 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
MRSa 0:516a9e85a3fb 118 };
MRSa 0:516a9e85a3fb 119 buffer[0] = check_DipSw();
MRSa 0:516a9e85a3fb 120 antPort.ANT_SendBroadcastData(ANT_CH, buffer);
MRSa 0:516a9e85a3fb 121 return (0);
MRSa 0:516a9e85a3fb 122 }
MRSa 0:516a9e85a3fb 123
MRSa 0:516a9e85a3fb 124 /**
MRSa 0:516a9e85a3fb 125 * Main Routine
MRSa 0:516a9e85a3fb 126 */
MRSa 0:516a9e85a3fb 127 int main()
MRSa 0:516a9e85a3fb 128 {
MRSa 0:516a9e85a3fb 129 printf("--- INITIALIZE (ID:%d) ----\r\n", check_DipSw());
MRSa 0:516a9e85a3fb 130 int statusLamp = getLampId(check_DipSw());
MRSa 0:516a9e85a3fb 131 pc.baud(9600); // set serial speed between PC and mbed.
MRSa 0:516a9e85a3fb 132 initialize_ANTport(true); // initialize BC-ANT-SERIAL
MRSa 0:516a9e85a3fb 133 printf("--- READY ----\r\n");
MRSa 0:516a9e85a3fb 134
MRSa 0:516a9e85a3fb 135 while(1)
MRSa 0:516a9e85a3fb 136 {
MRSa 0:516a9e85a3fb 137 myLeds = statusLamp;
MRSa 1:05e9a83b721c 138 led0 = 1;
MRSa 1:05e9a83b721c 139 led1 = 1;
MRSa 0:516a9e85a3fb 140 wait(0.5);
MRSa 0:516a9e85a3fb 141 myLeds = 0;
MRSa 1:05e9a83b721c 142 led0 = 0;
MRSa 1:05e9a83b721c 143 led1 = 0;
MRSa 0:516a9e85a3fb 144 wait(0.5);
MRSa 0:516a9e85a3fb 145 }
MRSa 0:516a9e85a3fb 146 }