BC-ANT-SERIAL communication library.

Dependents:   bc_ant-sample bc_ant-receiver

BeatcraftさんのBC-ANT-SERIAL を mbedで動かしてみました。

BC-ANT-SERIAL については、以下を参照ください。

http://labs.beatcraft.com/ja/index.php?ANT%2FBC-ANT-SERIAL%20%C0%E2%CC%C0%BD%F1

以下のような構成で、BC-ANT-SERIALを 9600bps に設定し、 BC-ANT-USB相手を相手に通信を行いました。 (下図は受信例ですが、逆方向の送信も確認しました。)

/media/uploads/MRSa/bc-ant_mbed2.jpeg

なお、BC-ANT-SERIALを9600bpsの設定にする場合は、BR2をショートさせます。 /media/uploads/MRSa/bc-ant-serial9600.jpg

本ライブラリは、@ryuchi さんの ANT/LPC1114用ライブラリ をベタに持って来てmbed用にしました。

(UARTを使っている部分をSerialクラスに置き換えた程度で動いちゃいました。。。あんまり中身を見ていません。。)

ライブラリ使用例

受信で使用する場合

受信で使用する場合のmain.cpp例

#include "mbed.h"
#include "bc_ant.h"
 
DigitalOut myled(LED1);               // LEDチカチカ
 
Serial pc(USBTX, USBRX);           // USBへのデータ通信
bc_ant antPort(p13, p14, p15);    // for BC-ANT-SERIALの接続。(9600bps, p13, p14, ctsにp15)

/** ANT用の定数定義 **/
#define MAX_BUFSIZE   64          // 受信バッファサイズ用の定義
#define ANT_CH         0               // チャンネル番号
#define DEVICE_NUMBER 65      // デバイス番号
 
/**
 *  BC-ANT-SERIALでデータを受信した時の処理
 */
void receivedFromAnt()
{
    // 受信データを受け取る領域の確保
    uint8_t receivedLength = 0;
    uint8_t receivedBuffer[MAX_BUFSIZE];

    // データを受信する
    receivedLength = antPort.BC_ANT_RecvPacket(receivedBuffer, MAX_BUFSIZE);
 
   // 受信したデータを printf()して、PCのターミナルに表示する。
    printf("RX(%3d):", receivedLength);
    for (int index = 0; index < receivedLength; index++)
    {
        printf("%02x ", receivedBuffer[index]);
    }
    printf("\r\n");
}

/**
 *   BC-ANT-SERIALの(受信)初期化処理
 */
int initialize_ANTport()
{
    antPort.ANT_ResetSystem();
    antPort.ANT_AssignChannel(ANT_CH, ANT_Bidirectional_Slave, 0);   // チャンネルタイプの設定
    antPort.ANT_SetChannelId(ANT_CH,  DEVICE_NUMBER, 1, 1);          // チャンネルIDの設定
    antPort.ANT_SetChannelPeriod_Hz(ANT_CH, 4);                                // チャンネルピリオドの設定
    antPort.ANT_SetChannelRFFreq(ANT_CH, 4);                                    // 通信周波数の設定: 2404 MHz
    antPort.ANT_OpenChannel(ANT_CH);

    // コールバック関数の設定 (データを受信したら receivedFromAnt() を呼び出してもらうよう設定する)
    antPort.attach(&receivedFromAnt);

    return (0);
}
 
/**
 *    メイン処理
 */
int main()
{
    pc.baud(9600);                    // mbed と PCの間の通信速度を 9600bpsに設定する。
    initialize_ANTport();             // BC-ANT-SERIALを受信用に初期化する。
    printf("--- READY ----\r\n");  // 準備が出来たことを PCのターミナルに通知する。

    // 以下は、LEDチカチカ。 (デフォルトで生成される処理をそのまま残してます)
    while(1) {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}

送信で使用する場合

送信で使用する場合は、受信と比較して antPort.ANT_AssignChannel() と ANT_OpenChannel()のあとの処理が異なるぐらいです。

送受信で、antPort.ANT_SetChannelId(), antPort.ANT_SetChannelPeriod_Hz(), antPort.ANT_SetChannelRFFreq() の設定は合わせておく必要がありそうです。

送信で使用する場合のmain.cpp例

#include "mbed.h"
#include "bc_ant.h"

DigitalOut myled(LED1);               // LEDチカチカ

Serial pc(USBTX, USBRX);           // USBへのデータ通信
bc_ant antPort(p13, p14, p15);    // for BC-ANT-SERIALの接続。(9600bps, p13, p14, ctsにp15)

/** ANT用の定数定義 **/
#define MAX_BUFSIZE   64          // 受信バッファサイズ用の定義
#define ANT_CH         0               // チャンネル番号
#define DEVICE_NUMBER 65      // デバイス番号


/**
 *    PCのターミナルからキー入力された時の処理
 *    (キー入力の情報をAntポートに送る)
 */
void receivedPc()
{
    uint8_t buffer[MAX_BUFSIZE] =
    {
        0xff, 0xff, 0xff, 0xff, 0xff,
        0xff, 0xff, 0xff, 0xff, 0xff
    };
    while (pc.readable())
    {
        // データを取り出して、それをAntに送る
        unsigned char receivedChar =  (pc.getc() & 0xff);
        buffer[0] = receivedChar;
        antPort.ANT_SendAcknowledgedData(0, buffer);
    }
}

/**
 *   初期化処理
 */
int initialize_ANTport()
{
    antPort.ANT_ResetSystem();
    antPort.ANT_AssignChannel(ANT_CH, ANT_Bidirectional_Slave, 0);   // チャンネルタイプの設定
    antPort.ANT_SetChannelId(ANT_CH,  DEVICE_NUMBER, 1, 1);          // チャンネルIDの設定
    antPort.ANT_SetChannelPeriod_Hz(ANT_CH, 4);                                // チャンネルピリオドの設定
    antPort.ANT_SetChannelRFFreq(ANT_CH, 4);                                    // 通信周波数の設定: 2404 MHz
    antPort.ANT_OpenChannel(ANT_CH);
    {
        uint8_t buffer[MAX_BUFSIZE] =
        {
            0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
        };
        antPort.ANT_SendBroadcastData(0, buffer);  // データ送信?
    }
    return (0);
}

/**
 *   メイン処理
 */
int main()
{
    pc.baud(9600);                                      // PCとの通信速度を 9600bps に設定する
    pc.attach(&receivedPc,Serial::RxIrq);    // PCからデータが送られてきた場合、receviedPc() 関数を呼び出す用に設定する

    initialize_ANTport()   // BC-ANT-SERIALの初期化を行う

    printf("--- READY ----\r\n");  // 準備が出来たことを PCのターミナルに通知する。
    
    // 以下は、LEDチカチカ。 (デフォルトで生成される処理をそのまま残してます)
    while(1) {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}

参考:BC-ANT-USB側

動作確認をした BC-ANT-USB 側は、ANT/BCA_Lib のページにある BCA_Lib.zipのSendCB.exe, RecvCB.exe を 利用させて頂きました。

ただし、BCA_OpenChannel() の引数は以下のように変更しました。

SendCB.cppで変更した箇所(SendCB.cpp:52行目あたり)

	res = BCA_OpenChannel(dev,						//	device
						  0,						//	channel no
						  BCA_CHANNEL_TYPE_MASTER,	//	channel type
						  BCA_CHANNEL_NOSHARED,		//	shared channel
						  65,						//	device no
						  1,						//	device type
						  1,						//	trans type
						  4,						//	freq
						  4);						//	hz

RecvCB.cppで変更した箇所(RecvCB.cpp:54行目あたり)

	res = BCA_OpenChannel(dev,						//	device
						  0,						//	channel no
						  BCA_CHANNEL_TYPE_SLAVE,	//	channel type
						  BCA_CHANNEL_NOSHARED,     //	shared channel
						  0,						//	device no
						  0,						//	device type
						  0,						//	trans type
						  4,						//	freq
						  4.0);						//	hz

備忘録

  • ほんとにベタ移植で動いた、という段階なので、中身を確認して理解しないといけない。
  • きれいにクラス化したい。
  • ちゃんとコードに説明を書きたい。
Committer:
MRSa
Date:
Sun Mar 17 10:51:21 2013 +0000
Revision:
1:b166aab45b3f
Parent:
0:97c748c69103
typo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MRSa 0:97c748c69103 1 /*
MRSa 0:97c748c69103 2 * ant.c
MRSa 0:97c748c69103 3 *
MRSa 0:97c748c69103 4 * Created on: 2012/10/12
MRSa 0:97c748c69103 5 * Author: ryuchi
MRSa 0:97c748c69103 6 *
MRSa 1:b166aab45b3f 7 * Adapted for mbed by MRSa (17.Mar.2013)
MRSa 0:97c748c69103 8 */
MRSa 0:97c748c69103 9
MRSa 0:97c748c69103 10 #include "bc_ant.h"
MRSa 0:97c748c69103 11
MRSa 0:97c748c69103 12 using namespace mbed;
MRSa 0:97c748c69103 13
MRSa 0:97c748c69103 14 bc_ant::bc_ant(PinName tx, PinName rx, PinName cts, int baudRate) : _serialPort(tx, rx), _cts(cts)
MRSa 0:97c748c69103 15 {
MRSa 0:97c748c69103 16 _serialPort.baud(baudRate);
MRSa 0:97c748c69103 17 }
MRSa 0:97c748c69103 18
MRSa 0:97c748c69103 19 void bc_ant::attach(void(*fptr)(void), Serial::IrqType type)
MRSa 0:97c748c69103 20 {
MRSa 0:97c748c69103 21 _serialPort.attach(fptr, type);
MRSa 0:97c748c69103 22 }
MRSa 0:97c748c69103 23
MRSa 0:97c748c69103 24 uint32_t bc_ant::BC_ANT_RecvPacket(uint8_t *buffer, uint32_t size)
MRSa 0:97c748c69103 25 {
MRSa 0:97c748c69103 26 uint8_t checksum;
MRSa 0:97c748c69103 27 uint32_t length, mesg_len;
MRSa 0:97c748c69103 28
MRSa 0:97c748c69103 29 if (_serialPort.readable() == false)
MRSa 0:97c748c69103 30 {
MRSa 0:97c748c69103 31 return (0);
MRSa 0:97c748c69103 32 }
MRSa 0:97c748c69103 33
MRSa 0:97c748c69103 34 while (!(_serialPort.getc() == ANT_SYNCBYTE));
MRSa 0:97c748c69103 35
MRSa 0:97c748c69103 36 *buffer++ = ANT_SYNCBYTE;
MRSa 0:97c748c69103 37 checksum = ANT_SYNCBYTE;
MRSa 0:97c748c69103 38 length = 1;
MRSa 0:97c748c69103 39
MRSa 0:97c748c69103 40 mesg_len = _serialPort.getc();
MRSa 0:97c748c69103 41 *buffer++ = mesg_len;
MRSa 0:97c748c69103 42 checksum ^= mesg_len;
MRSa 0:97c748c69103 43 length++;
MRSa 0:97c748c69103 44
MRSa 0:97c748c69103 45 *buffer = _serialPort.getc();
MRSa 0:97c748c69103 46 checksum ^= *buffer++;
MRSa 0:97c748c69103 47 length++;
MRSa 0:97c748c69103 48
MRSa 0:97c748c69103 49 while(mesg_len--)
MRSa 0:97c748c69103 50 {
MRSa 0:97c748c69103 51 *buffer = _serialPort.getc();
MRSa 0:97c748c69103 52 checksum ^= *buffer++;
MRSa 0:97c748c69103 53 length++;
MRSa 0:97c748c69103 54 if (size < length)
MRSa 0:97c748c69103 55 {
MRSa 0:97c748c69103 56 return 0;
MRSa 0:97c748c69103 57 }
MRSa 0:97c748c69103 58 }
MRSa 0:97c748c69103 59 *buffer = _serialPort.getc();
MRSa 0:97c748c69103 60
MRSa 0:97c748c69103 61 return (length + 1);
MRSa 0:97c748c69103 62 }
MRSa 0:97c748c69103 63
MRSa 0:97c748c69103 64 uint32_t bc_ant::BC_ANT_SendPacket(uint8_t *packet, uint32_t size)
MRSa 0:97c748c69103 65 {
MRSa 0:97c748c69103 66 while (_cts.read() != 0);
MRSa 0:97c748c69103 67 for (int index = 0; index < size; index++)
MRSa 0:97c748c69103 68 {
MRSa 0:97c748c69103 69 _serialPort.putc(*(packet + index));
MRSa 0:97c748c69103 70 }
MRSa 0:97c748c69103 71 //_serialPort.write(packet, size);
MRSa 0:97c748c69103 72
MRSa 0:97c748c69103 73 return 0;
MRSa 0:97c748c69103 74 }
MRSa 0:97c748c69103 75
MRSa 0:97c748c69103 76 uint32_t bc_ant::BC_ANT_build_packet( uint8_t *source, uint32_t size, uint8_t *dist ) {
MRSa 0:97c748c69103 77
MRSa 0:97c748c69103 78 uint8_t checksum;
MRSa 0:97c748c69103 79 uint8_t *p = dist;
MRSa 0:97c748c69103 80 uint32_t i;
MRSa 0:97c748c69103 81
MRSa 0:97c748c69103 82 *p++ = ANT_SYNCBYTE;
MRSa 0:97c748c69103 83 checksum = ANT_SYNCBYTE;
MRSa 0:97c748c69103 84
MRSa 0:97c748c69103 85 size &= 63;
MRSa 0:97c748c69103 86 *p++ = size;
MRSa 0:97c748c69103 87 checksum ^= size;
MRSa 0:97c748c69103 88 i = size + 1;
MRSa 0:97c748c69103 89
MRSa 0:97c748c69103 90 while( i-- ) {
MRSa 0:97c748c69103 91 checksum = checksum ^ *source;
MRSa 0:97c748c69103 92 *p++ = *source++;
MRSa 0:97c748c69103 93 }
MRSa 0:97c748c69103 94
MRSa 0:97c748c69103 95 *p++ = checksum;
MRSa 0:97c748c69103 96 *p++ = 0x00;
MRSa 0:97c748c69103 97 *p++ = 0x00;
MRSa 0:97c748c69103 98
MRSa 0:97c748c69103 99 return size + 6;
MRSa 0:97c748c69103 100
MRSa 0:97c748c69103 101 }
MRSa 0:97c748c69103 102
MRSa 0:97c748c69103 103 uint32_t bc_ant::ANT_UnAssignChannel( uint8_t Channel ) {
MRSa 0:97c748c69103 104
MRSa 0:97c748c69103 105 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 106 uint32_t psize;
MRSa 0:97c748c69103 107
MRSa 0:97c748c69103 108 *p++ = ANT_UNASSIGN_CHANNEL;
MRSa 0:97c748c69103 109 *p = Channel;
MRSa 0:97c748c69103 110
MRSa 0:97c748c69103 111 psize = BC_ANT_build_packet( BC_ANT_buffer, 1, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 112 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 113
MRSa 0:97c748c69103 114 return 0;
MRSa 0:97c748c69103 115
MRSa 0:97c748c69103 116 }
MRSa 0:97c748c69103 117
MRSa 0:97c748c69103 118 uint32_t bc_ant::ANT_AssignChannel(
MRSa 0:97c748c69103 119 uint8_t Channel,
MRSa 0:97c748c69103 120 uint8_t ChannelType,
MRSa 0:97c748c69103 121 uint8_t NetworkNumber ) {
MRSa 0:97c748c69103 122
MRSa 0:97c748c69103 123 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 124 uint32_t psize;
MRSa 0:97c748c69103 125
MRSa 0:97c748c69103 126 *p++ = ANT_ASSIGN_CHANNEL;
MRSa 0:97c748c69103 127 *p++ = Channel;
MRSa 0:97c748c69103 128 *p++ = ChannelType;
MRSa 0:97c748c69103 129 *p++ = NetworkNumber;
MRSa 0:97c748c69103 130
MRSa 0:97c748c69103 131 psize = BC_ANT_build_packet( BC_ANT_buffer, 3, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 132 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 133
MRSa 0:97c748c69103 134 return 0;
MRSa 0:97c748c69103 135
MRSa 0:97c748c69103 136 }
MRSa 0:97c748c69103 137
MRSa 0:97c748c69103 138 uint32_t bc_ant::ANT_AssignChannelExt(
MRSa 0:97c748c69103 139 uint8_t Channel,
MRSa 0:97c748c69103 140 uint8_t ChannelType,
MRSa 0:97c748c69103 141 uint8_t NetworkNumber,
MRSa 0:97c748c69103 142 uint8_t ExtendAssignment ) {
MRSa 0:97c748c69103 143
MRSa 0:97c748c69103 144 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 145 uint32_t psize;
MRSa 0:97c748c69103 146
MRSa 0:97c748c69103 147 *p++ = ANT_ASSIGN_CHANNEL;
MRSa 0:97c748c69103 148 *p++ = Channel;
MRSa 0:97c748c69103 149 *p++ = ChannelType;
MRSa 0:97c748c69103 150 *p++ = NetworkNumber;
MRSa 0:97c748c69103 151 *p++ = ExtendAssignment;
MRSa 0:97c748c69103 152
MRSa 0:97c748c69103 153 psize = BC_ANT_build_packet( BC_ANT_buffer, 4, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 154 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 155
MRSa 0:97c748c69103 156 return 0;
MRSa 0:97c748c69103 157
MRSa 0:97c748c69103 158 }
MRSa 0:97c748c69103 159
MRSa 0:97c748c69103 160 uint32_t bc_ant::ANT_SetChannelId(
MRSa 0:97c748c69103 161 uint8_t Channel,
MRSa 0:97c748c69103 162 uint16_t DeviceNum,
MRSa 0:97c748c69103 163 uint8_t DeviceType,
MRSa 0:97c748c69103 164 uint8_t TransmissionType ) {
MRSa 0:97c748c69103 165
MRSa 0:97c748c69103 166 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 167 uint32_t psize;
MRSa 0:97c748c69103 168
MRSa 0:97c748c69103 169 *p++ = ANT_SET_CHANNEL_ID;
MRSa 0:97c748c69103 170 *p++ = Channel;
MRSa 0:97c748c69103 171 *p++ = DeviceNum & 0xff;
MRSa 0:97c748c69103 172 *p++ = DeviceNum >> 8;
MRSa 0:97c748c69103 173 *p++ = DeviceType;
MRSa 0:97c748c69103 174 *p++ = TransmissionType;
MRSa 0:97c748c69103 175
MRSa 0:97c748c69103 176 psize = BC_ANT_build_packet( BC_ANT_buffer, 5, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 177 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 178
MRSa 0:97c748c69103 179 return 0;
MRSa 0:97c748c69103 180
MRSa 0:97c748c69103 181 }
MRSa 0:97c748c69103 182
MRSa 0:97c748c69103 183 uint32_t bc_ant::ANT_SetChannelPeriod(
MRSa 0:97c748c69103 184 uint8_t Channel,
MRSa 0:97c748c69103 185 uint16_t MessagePeriod ) {
MRSa 0:97c748c69103 186
MRSa 0:97c748c69103 187 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 188 uint32_t psize;
MRSa 0:97c748c69103 189
MRSa 0:97c748c69103 190 *p++ = ANT_CHANNEL_MESSAGING_PREIOD;
MRSa 0:97c748c69103 191 *p++ = Channel;
MRSa 0:97c748c69103 192 *p++ = MessagePeriod & 0xff;
MRSa 0:97c748c69103 193 *p++ = MessagePeriod >> 8;
MRSa 0:97c748c69103 194
MRSa 0:97c748c69103 195 psize = BC_ANT_build_packet( BC_ANT_buffer, 3, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 196 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 197
MRSa 0:97c748c69103 198 return 0;
MRSa 0:97c748c69103 199
MRSa 0:97c748c69103 200
MRSa 0:97c748c69103 201 }
MRSa 0:97c748c69103 202
MRSa 0:97c748c69103 203 uint32_t bc_ant::ANT_SetChannelPeriod_Hz(
MRSa 0:97c748c69103 204 uint8_t Channel,
MRSa 0:97c748c69103 205 uint16_t Period ) {
MRSa 0:97c748c69103 206
MRSa 0:97c748c69103 207 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 208 uint32_t psize;
MRSa 0:97c748c69103 209 uint16_t MessagePeriod;
MRSa 0:97c748c69103 210
MRSa 0:97c748c69103 211 MessagePeriod = 32768 / Period;
MRSa 0:97c748c69103 212
MRSa 0:97c748c69103 213 *p++ = ANT_CHANNEL_MESSAGING_PREIOD;
MRSa 0:97c748c69103 214 *p++ = Channel;
MRSa 0:97c748c69103 215 *p++ = MessagePeriod & 0xff;
MRSa 0:97c748c69103 216 *p++ = MessagePeriod >> 8;
MRSa 0:97c748c69103 217
MRSa 0:97c748c69103 218 psize = BC_ANT_build_packet( BC_ANT_buffer, 3, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 219 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 220
MRSa 0:97c748c69103 221 return 0;
MRSa 0:97c748c69103 222
MRSa 0:97c748c69103 223
MRSa 0:97c748c69103 224 }
MRSa 0:97c748c69103 225
MRSa 0:97c748c69103 226 uint32_t bc_ant::ANT_SetChannelSearchTimeout(
MRSa 0:97c748c69103 227 uint8_t ChannelNum,
MRSa 0:97c748c69103 228 uint8_t SearchTimeout ) {
MRSa 0:97c748c69103 229
MRSa 0:97c748c69103 230 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 231 uint32_t psize;
MRSa 0:97c748c69103 232
MRSa 0:97c748c69103 233 *p++ = ANT_CHANNEL_SEARCH_TIMEOUT;
MRSa 0:97c748c69103 234 *p++ = ChannelNum;
MRSa 0:97c748c69103 235 *p++ = SearchTimeout;
MRSa 0:97c748c69103 236
MRSa 0:97c748c69103 237 psize = BC_ANT_build_packet( BC_ANT_buffer, 2, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 238 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 239
MRSa 0:97c748c69103 240 return 0;
MRSa 0:97c748c69103 241
MRSa 0:97c748c69103 242
MRSa 0:97c748c69103 243 }
MRSa 0:97c748c69103 244 uint32_t bc_ant::ANT_SetChannelRFFreq(
MRSa 0:97c748c69103 245 uint8_t Channel,
MRSa 0:97c748c69103 246 uint8_t RFFreq ) {
MRSa 0:97c748c69103 247
MRSa 0:97c748c69103 248 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 249 uint32_t psize;
MRSa 0:97c748c69103 250
MRSa 0:97c748c69103 251 *p++ = ANT_CHANNEL_RF_FREQUENCY;
MRSa 0:97c748c69103 252 *p++ = Channel;
MRSa 0:97c748c69103 253 *p++ = RFFreq;
MRSa 0:97c748c69103 254
MRSa 0:97c748c69103 255 psize = BC_ANT_build_packet( BC_ANT_buffer, 2, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 256 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 257
MRSa 0:97c748c69103 258 return 0;
MRSa 0:97c748c69103 259
MRSa 0:97c748c69103 260 }
MRSa 0:97c748c69103 261 uint32_t bc_ant::ANT_SetNetworkKey(
MRSa 0:97c748c69103 262 uint8_t NetworkNumber,
MRSa 0:97c748c69103 263 uint8_t *pubKey) {
MRSa 0:97c748c69103 264
MRSa 0:97c748c69103 265 uint8_t *p = BC_ANT_buffer, *key = pubKey;
MRSa 0:97c748c69103 266 uint32_t i, psize;
MRSa 0:97c748c69103 267
MRSa 0:97c748c69103 268 *p++ = ANT_SET_NETWORK_KEY;
MRSa 0:97c748c69103 269 *p++ = NetworkNumber;
MRSa 0:97c748c69103 270 for ( i = 0; i < 7; i++ ) {
MRSa 0:97c748c69103 271 *p++ = *key++;
MRSa 0:97c748c69103 272 }
MRSa 0:97c748c69103 273
MRSa 0:97c748c69103 274 psize = BC_ANT_build_packet( BC_ANT_buffer, 9, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 275 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 276
MRSa 0:97c748c69103 277 return 0;
MRSa 0:97c748c69103 278
MRSa 0:97c748c69103 279 }
MRSa 0:97c748c69103 280 uint32_t bc_ant::ANT_SetTransmitPower(
MRSa 0:97c748c69103 281 uint8_t TransmitPower ) {
MRSa 0:97c748c69103 282
MRSa 0:97c748c69103 283 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 284 uint32_t psize;
MRSa 0:97c748c69103 285
MRSa 0:97c748c69103 286 *p++ = ANT_TRANSMIT_POWER;
MRSa 0:97c748c69103 287 *p++ = 0;
MRSa 0:97c748c69103 288 *p++ = TransmitPower & 0x03;
MRSa 0:97c748c69103 289
MRSa 0:97c748c69103 290 psize = BC_ANT_build_packet( BC_ANT_buffer, 2, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 291 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 292
MRSa 0:97c748c69103 293 return 0;
MRSa 0:97c748c69103 294
MRSa 0:97c748c69103 295 }
MRSa 0:97c748c69103 296 uint32_t bc_ant::ANT_AddChannelID(
MRSa 0:97c748c69103 297 uint8_t Channel,
MRSa 0:97c748c69103 298 uint16_t DeviceNum,
MRSa 0:97c748c69103 299 uint8_t DeviceTypeId,
MRSa 0:97c748c69103 300 uint8_t TransmissionType,
MRSa 0:97c748c69103 301 uint8_t ListIndex ) {
MRSa 0:97c748c69103 302
MRSa 0:97c748c69103 303 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 304 uint32_t psize;
MRSa 0:97c748c69103 305
MRSa 0:97c748c69103 306 *p++ = ANT_ADD_CHANNEL_ID;
MRSa 0:97c748c69103 307 *p++ = Channel;
MRSa 0:97c748c69103 308 *p++ = DeviceNum & 0xff;
MRSa 0:97c748c69103 309 *p++ = DeviceNum >> 8;
MRSa 0:97c748c69103 310 *p++ = DeviceTypeId;
MRSa 0:97c748c69103 311 *p++ = TransmissionType;
MRSa 0:97c748c69103 312 *p++ = ListIndex & 0x03;
MRSa 0:97c748c69103 313
MRSa 0:97c748c69103 314 psize = BC_ANT_build_packet( BC_ANT_buffer, 5, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 315 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 316
MRSa 0:97c748c69103 317 return 0;
MRSa 0:97c748c69103 318
MRSa 0:97c748c69103 319 }
MRSa 0:97c748c69103 320 uint32_t bc_ant::ANT_ConfigList(
MRSa 0:97c748c69103 321 uint8_t Channel,
MRSa 0:97c748c69103 322 uint8_t ListSize,
MRSa 0:97c748c69103 323 uint8_t Exclude ) {
MRSa 0:97c748c69103 324
MRSa 0:97c748c69103 325 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 326 uint32_t psize;
MRSa 0:97c748c69103 327
MRSa 0:97c748c69103 328 *p++ = ANT_CONFIG_LIST_ID;
MRSa 0:97c748c69103 329 *p++ = Channel;
MRSa 0:97c748c69103 330 *p++ = ListSize & 0x07;
MRSa 0:97c748c69103 331 *p++ = Exclude & 0x01;
MRSa 0:97c748c69103 332
MRSa 0:97c748c69103 333 psize = BC_ANT_build_packet( BC_ANT_buffer, 3, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 334 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 335
MRSa 0:97c748c69103 336 return 0;
MRSa 0:97c748c69103 337
MRSa 0:97c748c69103 338 }
MRSa 0:97c748c69103 339 uint32_t bc_ant::ANT_SetChannelTxPower(
MRSa 0:97c748c69103 340 uint8_t Channel,
MRSa 0:97c748c69103 341 uint8_t TxPower ) {
MRSa 0:97c748c69103 342
MRSa 0:97c748c69103 343 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 344 uint32_t psize;
MRSa 0:97c748c69103 345
MRSa 0:97c748c69103 346 *p++ = ANT_SET_CHANNEL_TX_POWER;
MRSa 0:97c748c69103 347 *p++ = Channel;
MRSa 0:97c748c69103 348 *p++ = TxPower & 0x03;
MRSa 0:97c748c69103 349
MRSa 0:97c748c69103 350 psize = BC_ANT_build_packet( BC_ANT_buffer, 2, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 351 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 352
MRSa 0:97c748c69103 353 return 0;
MRSa 0:97c748c69103 354
MRSa 0:97c748c69103 355 }
MRSa 0:97c748c69103 356 uint32_t bc_ant::ANT_SetLowPriorityChannelSearchTimeout(
MRSa 0:97c748c69103 357 uint8_t ChannelNum,
MRSa 0:97c748c69103 358 uint8_t SearchTimeout ) {
MRSa 0:97c748c69103 359
MRSa 0:97c748c69103 360 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 361 uint32_t psize;
MRSa 0:97c748c69103 362
MRSa 0:97c748c69103 363 *p++ = ANT_CHANNEL_LOW_PRIORITY_SERARCH_TIMEOUT;
MRSa 0:97c748c69103 364 *p++ = ChannelNum;
MRSa 0:97c748c69103 365 *p++ = SearchTimeout;
MRSa 0:97c748c69103 366
MRSa 0:97c748c69103 367 psize = BC_ANT_build_packet( BC_ANT_buffer, 2, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 368 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 369
MRSa 0:97c748c69103 370 return 0;
MRSa 0:97c748c69103 371
MRSa 0:97c748c69103 372
MRSa 0:97c748c69103 373 }
MRSa 0:97c748c69103 374 uint32_t bc_ant::ANT_SetSerialNumChannelId(
MRSa 0:97c748c69103 375 uint8_t Channel,
MRSa 0:97c748c69103 376 uint8_t DeviceType,
MRSa 0:97c748c69103 377 uint8_t TransmissionType ) {
MRSa 0:97c748c69103 378
MRSa 0:97c748c69103 379 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 380 uint32_t psize;
MRSa 0:97c748c69103 381
MRSa 0:97c748c69103 382 *p++ = ANT_SERIAL_NUMBER_CHANNEL_ID;
MRSa 0:97c748c69103 383 *p++ = Channel;
MRSa 0:97c748c69103 384 *p++ = DeviceType;
MRSa 0:97c748c69103 385 *p++ = TransmissionType;
MRSa 0:97c748c69103 386
MRSa 0:97c748c69103 387 psize = BC_ANT_build_packet( BC_ANT_buffer, 3, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 388 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 389
MRSa 0:97c748c69103 390 return 0;
MRSa 0:97c748c69103 391
MRSa 0:97c748c69103 392 }
MRSa 0:97c748c69103 393 uint32_t bc_ant::ANT_RxExtMesgsEnable( uint8_t Enable ) {
MRSa 0:97c748c69103 394
MRSa 0:97c748c69103 395 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 396 uint32_t psize;
MRSa 0:97c748c69103 397
MRSa 0:97c748c69103 398 *p++ = ANT_ENABLE_EXTENDED_MESSAGGES;
MRSa 0:97c748c69103 399 *p++ = 0;
MRSa 0:97c748c69103 400 *p++ = Enable;
MRSa 0:97c748c69103 401
MRSa 0:97c748c69103 402 psize = BC_ANT_build_packet( BC_ANT_buffer, 2, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 403 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 404
MRSa 0:97c748c69103 405 return 0;
MRSa 0:97c748c69103 406
MRSa 0:97c748c69103 407 }
MRSa 0:97c748c69103 408 uint32_t bc_ant::ANT_EnableLED( uint8_t Enable ) {
MRSa 0:97c748c69103 409
MRSa 0:97c748c69103 410 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 411 uint32_t psize;
MRSa 0:97c748c69103 412
MRSa 0:97c748c69103 413 *p++ = ANT_ENABLE_LED;
MRSa 0:97c748c69103 414 *p++ = 0;
MRSa 0:97c748c69103 415 *p++ = Enable;
MRSa 0:97c748c69103 416
MRSa 0:97c748c69103 417 psize = BC_ANT_build_packet( BC_ANT_buffer, 2, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 418 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 419
MRSa 0:97c748c69103 420 return 0;
MRSa 0:97c748c69103 421
MRSa 0:97c748c69103 422 }
MRSa 0:97c748c69103 423 uint32_t bc_ant::ANT_CrystalEnable( uint8_t Enable ) {
MRSa 0:97c748c69103 424
MRSa 0:97c748c69103 425 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 426 uint32_t psize;
MRSa 0:97c748c69103 427
MRSa 0:97c748c69103 428 *p++ = ANT_ENABLE_CRYSTAL;
MRSa 0:97c748c69103 429 *p++ = 0;
MRSa 0:97c748c69103 430 *p++ = Enable;
MRSa 0:97c748c69103 431
MRSa 0:97c748c69103 432 psize = BC_ANT_build_packet( BC_ANT_buffer, 2, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 433 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 434
MRSa 0:97c748c69103 435 return 0;
MRSa 0:97c748c69103 436
MRSa 0:97c748c69103 437
MRSa 0:97c748c69103 438 }
MRSa 0:97c748c69103 439 uint32_t bc_ant::ANT_ConfigFrequencyAgility(
MRSa 0:97c748c69103 440 uint8_t Channel,
MRSa 0:97c748c69103 441 uint8_t Frequency1,
MRSa 0:97c748c69103 442 uint8_t Frequency2,
MRSa 0:97c748c69103 443 uint8_t Frequency3 ) {
MRSa 0:97c748c69103 444
MRSa 0:97c748c69103 445 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 446 uint32_t psize;
MRSa 0:97c748c69103 447
MRSa 0:97c748c69103 448 *p++ = ANT_FREQUENCY_AGILITY;
MRSa 0:97c748c69103 449 *p++ = Channel;
MRSa 0:97c748c69103 450 *p++ = Frequency1;
MRSa 0:97c748c69103 451 *p++ = Frequency2;
MRSa 0:97c748c69103 452 *p++ = Frequency3;
MRSa 0:97c748c69103 453
MRSa 0:97c748c69103 454 psize = BC_ANT_build_packet( BC_ANT_buffer, 4, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 455 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 456
MRSa 0:97c748c69103 457 return 0;
MRSa 0:97c748c69103 458
MRSa 0:97c748c69103 459 }
MRSa 0:97c748c69103 460 uint32_t bc_ant::ANT_SetProximitySearch(
MRSa 0:97c748c69103 461 uint8_t Channel,
MRSa 0:97c748c69103 462 uint8_t SearchThreshold ) {
MRSa 0:97c748c69103 463
MRSa 0:97c748c69103 464 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 465 uint32_t psize;
MRSa 0:97c748c69103 466
MRSa 0:97c748c69103 467 *p++ = ANT_PROXIMITY_SEARCH;
MRSa 0:97c748c69103 468 *p++ = Channel;
MRSa 0:97c748c69103 469 *p++ = SearchThreshold;
MRSa 0:97c748c69103 470
MRSa 0:97c748c69103 471 psize = BC_ANT_build_packet( BC_ANT_buffer, 2, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 472 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 473
MRSa 0:97c748c69103 474 return 0;
MRSa 0:97c748c69103 475
MRSa 0:97c748c69103 476 }
MRSa 0:97c748c69103 477
MRSa 0:97c748c69103 478 uint32_t bc_ant::ANT_SetUSBDescriptorString(
MRSa 0:97c748c69103 479 uint8_t StringNum,
MRSa 0:97c748c69103 480 uint8_t *pubDescString,
MRSa 0:97c748c69103 481 uint8_t StringSize ) {
MRSa 0:97c748c69103 482
MRSa 0:97c748c69103 483 uint8_t *p = BC_ANT_buffer, *d = pubDescString;
MRSa 0:97c748c69103 484 uint32_t psize, i;
MRSa 0:97c748c69103 485
MRSa 0:97c748c69103 486 *p++ = ANT_SET_USB_DESCRIPTOR_STRING;
MRSa 0:97c748c69103 487 *p++ = StringNum;
MRSa 0:97c748c69103 488
MRSa 0:97c748c69103 489 i = StringSize;
MRSa 0:97c748c69103 490 if ( i > 32)
MRSa 0:97c748c69103 491 i = 32;
MRSa 0:97c748c69103 492
MRSa 0:97c748c69103 493 while( i-- ) {
MRSa 0:97c748c69103 494 *p++ = *d++;
MRSa 0:97c748c69103 495 }
MRSa 0:97c748c69103 496 *p++ = StringSize;
MRSa 0:97c748c69103 497
MRSa 0:97c748c69103 498 psize = BC_ANT_build_packet( BC_ANT_buffer, 2, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 499 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 500
MRSa 0:97c748c69103 501 return 0;
MRSa 0:97c748c69103 502
MRSa 0:97c748c69103 503 }
MRSa 0:97c748c69103 504
MRSa 0:97c748c69103 505 uint32_t bc_ant::ANT_ResetSystem ( void ) {
MRSa 0:97c748c69103 506
MRSa 0:97c748c69103 507 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 508 uint32_t psize;
MRSa 0:97c748c69103 509
MRSa 0:97c748c69103 510 *p++ = ANT_RESET_SYSTEM;
MRSa 0:97c748c69103 511 *p++ = 0;
MRSa 0:97c748c69103 512
MRSa 0:97c748c69103 513 psize = BC_ANT_build_packet( BC_ANT_buffer, 1, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 514 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 515
MRSa 0:97c748c69103 516 return 0;
MRSa 0:97c748c69103 517 }
MRSa 0:97c748c69103 518
MRSa 0:97c748c69103 519 uint32_t bc_ant::ANT_OpenChannel(uint32_t Channel ) {
MRSa 0:97c748c69103 520
MRSa 0:97c748c69103 521 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 522 uint32_t psize;
MRSa 0:97c748c69103 523
MRSa 0:97c748c69103 524 *p++ = ANT_OPEN_CHANNEL;
MRSa 0:97c748c69103 525 *p++ = Channel;
MRSa 0:97c748c69103 526
MRSa 0:97c748c69103 527 psize = BC_ANT_build_packet( BC_ANT_buffer, 1, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 528 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 529
MRSa 0:97c748c69103 530 return 0;
MRSa 0:97c748c69103 531
MRSa 0:97c748c69103 532 }
MRSa 0:97c748c69103 533
MRSa 0:97c748c69103 534 uint32_t bc_ant::ANT_CloseChannel(uint32_t Channel ) {
MRSa 0:97c748c69103 535
MRSa 0:97c748c69103 536 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 537 uint32_t psize;
MRSa 0:97c748c69103 538
MRSa 0:97c748c69103 539 *p++ = ANT_CLOSE_CHANNEL;
MRSa 0:97c748c69103 540 *p++ = Channel;
MRSa 0:97c748c69103 541
MRSa 0:97c748c69103 542 psize = BC_ANT_build_packet( BC_ANT_buffer, 1, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 543 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 544
MRSa 0:97c748c69103 545 return 0;
MRSa 0:97c748c69103 546 }
MRSa 0:97c748c69103 547
MRSa 0:97c748c69103 548 uint32_t bc_ant::ANT_RequestMessage(uint32_t Channel, uint8_t MessageID ) {
MRSa 0:97c748c69103 549
MRSa 0:97c748c69103 550 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 551 uint32_t psize;
MRSa 0:97c748c69103 552
MRSa 0:97c748c69103 553 *p++ = ANT_REQUEST_MESSAGE;
MRSa 0:97c748c69103 554 *p++ = Channel;
MRSa 0:97c748c69103 555 *p++ = MessageID;
MRSa 0:97c748c69103 556
MRSa 0:97c748c69103 557 psize = BC_ANT_build_packet( BC_ANT_buffer, 2, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 558 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 559
MRSa 0:97c748c69103 560 return 0;
MRSa 0:97c748c69103 561
MRSa 0:97c748c69103 562 }
MRSa 0:97c748c69103 563
MRSa 0:97c748c69103 564 uint32_t bc_ant::ANT_OpenRxScanMode( void ) {
MRSa 0:97c748c69103 565
MRSa 0:97c748c69103 566 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 567 uint32_t psize;
MRSa 0:97c748c69103 568
MRSa 0:97c748c69103 569 *p++ = ANT_OPEN_RX_SCAN_MODE;
MRSa 0:97c748c69103 570 *p++ = 0;
MRSa 0:97c748c69103 571
MRSa 0:97c748c69103 572 psize = BC_ANT_build_packet( BC_ANT_buffer, 1, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 573 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 574
MRSa 0:97c748c69103 575 return 0;
MRSa 0:97c748c69103 576
MRSa 0:97c748c69103 577 }
MRSa 0:97c748c69103 578
MRSa 0:97c748c69103 579 uint32_t bc_ant::ANT_SleepMessage( void ) {
MRSa 0:97c748c69103 580
MRSa 0:97c748c69103 581 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 582 uint32_t psize;
MRSa 0:97c748c69103 583
MRSa 0:97c748c69103 584 *p++ = ANT_SLEEP_MESSAGE;
MRSa 0:97c748c69103 585 *p++ = 0;
MRSa 0:97c748c69103 586
MRSa 0:97c748c69103 587 psize = BC_ANT_build_packet( BC_ANT_buffer, 1, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 588 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 589
MRSa 0:97c748c69103 590 return 0;
MRSa 0:97c748c69103 591
MRSa 0:97c748c69103 592 }
MRSa 0:97c748c69103 593
MRSa 0:97c748c69103 594 uint32_t bc_ant::ANT_SendBroadcastData(
MRSa 0:97c748c69103 595 uint8_t Channel,
MRSa 0:97c748c69103 596 uint8_t * BroadcastData ) {
MRSa 0:97c748c69103 597
MRSa 0:97c748c69103 598 uint8_t *p = BC_ANT_buffer, *d = BroadcastData;
MRSa 0:97c748c69103 599 uint32_t psize, i;
MRSa 0:97c748c69103 600
MRSa 0:97c748c69103 601 *p++ = ANT_BROADCAST_DATA;
MRSa 0:97c748c69103 602 *p++ = Channel;
MRSa 0:97c748c69103 603
MRSa 0:97c748c69103 604 for( i = 0; i < 8; i++ ) {
MRSa 0:97c748c69103 605 *p++ = *d++;
MRSa 0:97c748c69103 606 }
MRSa 0:97c748c69103 607 psize = BC_ANT_build_packet( BC_ANT_buffer, 9, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 608 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 609
MRSa 0:97c748c69103 610 return 0;
MRSa 0:97c748c69103 611
MRSa 0:97c748c69103 612 }
MRSa 0:97c748c69103 613
MRSa 0:97c748c69103 614 uint32_t bc_ant::ANT_SendBroadcastDataExt(
MRSa 0:97c748c69103 615 uint8_t Channel,
MRSa 0:97c748c69103 616 uint8_t *BroadcastData,
MRSa 0:97c748c69103 617 uint16_t DeviceNumber,
MRSa 0:97c748c69103 618 uint8_t DeviceType,
MRSa 0:97c748c69103 619 uint8_t TransmissionType ) {
MRSa 0:97c748c69103 620
MRSa 0:97c748c69103 621 uint8_t *p = BC_ANT_buffer, *d = BroadcastData;
MRSa 0:97c748c69103 622 uint32_t psize, i;
MRSa 0:97c748c69103 623
MRSa 0:97c748c69103 624 *p++ = ANT_BROADCAST_DATA;
MRSa 0:97c748c69103 625 *p++ = Channel;
MRSa 0:97c748c69103 626
MRSa 0:97c748c69103 627 for( i = 0; i < 8; i++ ) {
MRSa 0:97c748c69103 628 *p++ = *d++;
MRSa 0:97c748c69103 629 }
MRSa 0:97c748c69103 630 *p++ = 0x80;
MRSa 0:97c748c69103 631 *p++ = DeviceNumber & 0xff;
MRSa 0:97c748c69103 632 *p++ = DeviceNumber >> 8;
MRSa 0:97c748c69103 633 *p++ = DeviceType;
MRSa 0:97c748c69103 634 *p++ = TransmissionType;
MRSa 0:97c748c69103 635
MRSa 0:97c748c69103 636 psize = BC_ANT_build_packet( BC_ANT_buffer, 14, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 637 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 638
MRSa 0:97c748c69103 639 return 0;
MRSa 0:97c748c69103 640
MRSa 0:97c748c69103 641 }
MRSa 0:97c748c69103 642
MRSa 0:97c748c69103 643 uint32_t bc_ant::ANT_SendAcknowledgedData(
MRSa 0:97c748c69103 644 uint8_t Channel,
MRSa 0:97c748c69103 645 uint8_t *BroadcastData ) {
MRSa 0:97c748c69103 646
MRSa 0:97c748c69103 647 uint8_t *p = BC_ANT_buffer, *d = BroadcastData;
MRSa 0:97c748c69103 648 uint32_t psize, i;
MRSa 0:97c748c69103 649
MRSa 0:97c748c69103 650 *p++ = ANT_ACKNOWLEDGED_DATA;
MRSa 0:97c748c69103 651 *p++ = Channel;
MRSa 0:97c748c69103 652
MRSa 0:97c748c69103 653 for( i = 0; i < 8; i++ ) {
MRSa 0:97c748c69103 654 *p++ = *d++;
MRSa 0:97c748c69103 655 }
MRSa 0:97c748c69103 656 psize = BC_ANT_build_packet( BC_ANT_buffer, 9, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 657 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 658
MRSa 0:97c748c69103 659 return 0;
MRSa 0:97c748c69103 660
MRSa 0:97c748c69103 661 }
MRSa 0:97c748c69103 662
MRSa 0:97c748c69103 663 uint32_t bc_ant::ANT_SendAcknowledgedDataExt(
MRSa 0:97c748c69103 664 uint8_t Channel,
MRSa 0:97c748c69103 665 uint8_t *BroadcastData,
MRSa 0:97c748c69103 666 uint16_t DeviceNumber,
MRSa 0:97c748c69103 667 uint8_t DeviceType,
MRSa 0:97c748c69103 668 uint8_t TransmissionType ) {
MRSa 0:97c748c69103 669
MRSa 0:97c748c69103 670 uint8_t *p = BC_ANT_buffer, *d = BroadcastData;
MRSa 0:97c748c69103 671 uint32_t psize, i;
MRSa 0:97c748c69103 672
MRSa 0:97c748c69103 673 *p++ = ANT_ACKNOWLEDGED_DATA;
MRSa 0:97c748c69103 674 *p++ = Channel;
MRSa 0:97c748c69103 675
MRSa 0:97c748c69103 676 for( i = 0; i < 8; i++ ) {
MRSa 0:97c748c69103 677 *p++ = *d++;
MRSa 0:97c748c69103 678 }
MRSa 0:97c748c69103 679 *p++ = 0x80;
MRSa 0:97c748c69103 680 *p++ = DeviceNumber & 0xff;
MRSa 0:97c748c69103 681 *p++ = DeviceNumber >> 8;
MRSa 0:97c748c69103 682 *p++ = DeviceType;
MRSa 0:97c748c69103 683 *p++ = TransmissionType;
MRSa 0:97c748c69103 684
MRSa 0:97c748c69103 685 psize = BC_ANT_build_packet( BC_ANT_buffer, 14, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 686 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 687
MRSa 0:97c748c69103 688 return 0;
MRSa 0:97c748c69103 689
MRSa 0:97c748c69103 690 }
MRSa 0:97c748c69103 691
MRSa 0:97c748c69103 692 uint32_t bc_ant::ANT_SendBurstTransferPacket(
MRSa 0:97c748c69103 693 uint8_t ChannelSeq,
MRSa 0:97c748c69103 694 uint8_t *BurstData ) {
MRSa 0:97c748c69103 695
MRSa 0:97c748c69103 696 uint8_t *p = BC_ANT_buffer, *d = BurstData;
MRSa 0:97c748c69103 697 uint32_t psize, i;
MRSa 0:97c748c69103 698
MRSa 0:97c748c69103 699 *p++ = ANT_BURST_DATA;
MRSa 0:97c748c69103 700 *p++ = ChannelSeq;
MRSa 0:97c748c69103 701
MRSa 0:97c748c69103 702 for( i = 0; i < 8; i++ ) {
MRSa 0:97c748c69103 703 *p++ = *d++;
MRSa 0:97c748c69103 704 }
MRSa 0:97c748c69103 705 psize = BC_ANT_build_packet( BC_ANT_buffer, 9, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 706 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 707
MRSa 0:97c748c69103 708 return 0;
MRSa 0:97c748c69103 709 }
MRSa 0:97c748c69103 710
MRSa 0:97c748c69103 711 uint32_t bc_ant::ANT_InitCWTestMode( void ) {
MRSa 0:97c748c69103 712
MRSa 0:97c748c69103 713 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 714 uint32_t psize;
MRSa 0:97c748c69103 715
MRSa 0:97c748c69103 716 *p++ = ANT_INIT_CW_TEST_MODE;
MRSa 0:97c748c69103 717 *p++ = 0;
MRSa 0:97c748c69103 718
MRSa 0:97c748c69103 719 psize = BC_ANT_build_packet( BC_ANT_buffer, 1, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 720 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 721
MRSa 0:97c748c69103 722 return 0;
MRSa 0:97c748c69103 723
MRSa 0:97c748c69103 724 }
MRSa 0:97c748c69103 725
MRSa 0:97c748c69103 726 uint32_t bc_ant::ANT_SetCWTestMode(
MRSa 0:97c748c69103 727 uint8_t TransmitPower,
MRSa 0:97c748c69103 728 uint8_t RFChannel ) {
MRSa 0:97c748c69103 729
MRSa 0:97c748c69103 730 uint8_t *p = BC_ANT_buffer;
MRSa 0:97c748c69103 731 uint32_t psize;
MRSa 0:97c748c69103 732
MRSa 0:97c748c69103 733 *p++ = ANT_CW_TEST_MODE;
MRSa 0:97c748c69103 734 *p++ = 0;
MRSa 0:97c748c69103 735 *p++ = TransmitPower;
MRSa 0:97c748c69103 736 *p++ = RFChannel;
MRSa 0:97c748c69103 737
MRSa 0:97c748c69103 738 psize = BC_ANT_build_packet( BC_ANT_buffer, 3, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 739 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 740
MRSa 0:97c748c69103 741 return 0;
MRSa 0:97c748c69103 742
MRSa 0:97c748c69103 743 }
MRSa 0:97c748c69103 744
MRSa 0:97c748c69103 745 uint32_t bc_ant::ANT_SendExtBroadcastData(
MRSa 0:97c748c69103 746 uint8_t Channel,
MRSa 0:97c748c69103 747 uint16_t DeviceNum,
MRSa 0:97c748c69103 748 uint8_t DeviceType,
MRSa 0:97c748c69103 749 uint8_t TransmissionType,
MRSa 0:97c748c69103 750 uint8_t *Data ) {
MRSa 0:97c748c69103 751
MRSa 0:97c748c69103 752 uint8_t *p = BC_ANT_buffer, *d = Data;
MRSa 0:97c748c69103 753 uint32_t psize, i;
MRSa 0:97c748c69103 754
MRSa 0:97c748c69103 755 *p++ = ANT_EXTENDED_BROADCAST_DATA;
MRSa 0:97c748c69103 756 *p++ = Channel;
MRSa 0:97c748c69103 757 *p++ = DeviceNum & 0xff;
MRSa 0:97c748c69103 758 *p++ = DeviceNum >> 8;
MRSa 0:97c748c69103 759 *p++ = DeviceType;
MRSa 0:97c748c69103 760 *p++ = TransmissionType;
MRSa 0:97c748c69103 761
MRSa 0:97c748c69103 762 for( i = 0; i < 8; i++ ) {
MRSa 0:97c748c69103 763 *p++ = *d++;
MRSa 0:97c748c69103 764 }
MRSa 0:97c748c69103 765 psize = BC_ANT_build_packet( BC_ANT_buffer, 13, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 766 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 767
MRSa 0:97c748c69103 768 return 0;
MRSa 0:97c748c69103 769
MRSa 0:97c748c69103 770 }
MRSa 0:97c748c69103 771
MRSa 0:97c748c69103 772 uint32_t bc_ant::ANT_SendExtAcknowledgedData(
MRSa 0:97c748c69103 773 uint8_t Channel,
MRSa 0:97c748c69103 774 uint16_t DeviceNum,
MRSa 0:97c748c69103 775 uint8_t DeviceType,
MRSa 0:97c748c69103 776 uint8_t TransmissionType,
MRSa 0:97c748c69103 777 uint8_t *Data ) {
MRSa 0:97c748c69103 778
MRSa 0:97c748c69103 779 uint8_t *p = BC_ANT_buffer, *d = Data;
MRSa 0:97c748c69103 780 uint32_t psize, i;
MRSa 0:97c748c69103 781
MRSa 0:97c748c69103 782 *p++ = ANT_EXTENDED_ACKNOWLEDGED_DATA;
MRSa 0:97c748c69103 783 *p++ = Channel;
MRSa 0:97c748c69103 784 *p++ = DeviceNum & 0xff;
MRSa 0:97c748c69103 785 *p++ = DeviceNum >> 8;
MRSa 0:97c748c69103 786 *p++ = DeviceType;
MRSa 0:97c748c69103 787 *p++ = TransmissionType;
MRSa 0:97c748c69103 788
MRSa 0:97c748c69103 789 for( i = 0; i < 8; i++ ) {
MRSa 0:97c748c69103 790 *p++ = *d++;
MRSa 0:97c748c69103 791 }
MRSa 0:97c748c69103 792 psize = BC_ANT_build_packet( BC_ANT_buffer, 13, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 793 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 794
MRSa 0:97c748c69103 795 return 0;
MRSa 0:97c748c69103 796
MRSa 0:97c748c69103 797 }
MRSa 0:97c748c69103 798
MRSa 0:97c748c69103 799 uint32_t bc_ant::ANT_SendExtBurstData(
MRSa 0:97c748c69103 800 uint8_t ChannelSeq,
MRSa 0:97c748c69103 801 uint16_t DeviceNum,
MRSa 0:97c748c69103 802 uint8_t DeviceType,
MRSa 0:97c748c69103 803 uint8_t TransmissionType,
MRSa 0:97c748c69103 804 uint8_t *Data ) {
MRSa 0:97c748c69103 805
MRSa 0:97c748c69103 806 uint8_t *p = BC_ANT_buffer, *d = Data;
MRSa 0:97c748c69103 807 uint32_t psize, i;
MRSa 0:97c748c69103 808
MRSa 0:97c748c69103 809 *p++ = ANT_EXTENDED_BURST_DATA;
MRSa 0:97c748c69103 810 *p++ = ChannelSeq;
MRSa 0:97c748c69103 811 *p++ = DeviceNum & 0xff;
MRSa 0:97c748c69103 812 *p++ = DeviceNum >> 8;
MRSa 0:97c748c69103 813 *p++ = DeviceType;
MRSa 0:97c748c69103 814 *p++ = TransmissionType;
MRSa 0:97c748c69103 815
MRSa 0:97c748c69103 816 for( i = 0; i < 8; i++ ) {
MRSa 0:97c748c69103 817 *p++ = *d++;
MRSa 0:97c748c69103 818 }
MRSa 0:97c748c69103 819 psize = BC_ANT_build_packet( BC_ANT_buffer, 13, BC_ANT_raw_buffer );
MRSa 0:97c748c69103 820 BC_ANT_SendPacket( BC_ANT_raw_buffer, psize);
MRSa 0:97c748c69103 821
MRSa 0:97c748c69103 822 return 0;
MRSa 0:97c748c69103 823 }