Xbee Uplink

Dependencies:   mbed PowerControl SDFileSystem

Fork of HeptaXbee_Uplink by 智也 大野

Committer:
MEXT1
Date:
Wed Dec 14 16:09:56 2016 +0000
Revision:
3:15a7f7fa174a
Parent:
0:9a52d95a79f7
Xbee Uplink

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tomoya123 0:9a52d95a79f7 1 #include "HeptaVoice.h"
tomoya123 0:9a52d95a79f7 2
tomoya123 0:9a52d95a79f7 3 HeptaVoice::HeptaVoice(PinName sda, PinName scl, int addr):_i2c(sda, scl),_addr(addr)
tomoya123 0:9a52d95a79f7 4 {
tomoya123 0:9a52d95a79f7 5 _addr = addr;
tomoya123 0:9a52d95a79f7 6 _poll_wait.reset();
tomoya123 0:9a52d95a79f7 7 _poll_wait.start();
tomoya123 0:9a52d95a79f7 8 }
tomoya123 0:9a52d95a79f7 9
tomoya123 0:9a52d95a79f7 10 bool HeptaVoice::IsActive(int timeout_ms)
tomoya123 0:9a52d95a79f7 11 {
tomoya123 0:9a52d95a79f7 12 wait_ms(AQTK_STARTUP_WAIT_MS);
tomoya123 0:9a52d95a79f7 13 Timer t;
tomoya123 0:9a52d95a79f7 14 t.reset();
tomoya123 0:9a52d95a79f7 15 t.start();
tomoya123 0:9a52d95a79f7 16 while(t.read_ms() < timeout_ms) {
tomoya123 0:9a52d95a79f7 17 _poll_wait.reset();
tomoya123 0:9a52d95a79f7 18 if (_i2c.write(_addr, NULL, 0) == 0) {
tomoya123 0:9a52d95a79f7 19 return true;
tomoya123 0:9a52d95a79f7 20 }
tomoya123 0:9a52d95a79f7 21 wait_ms(AQTK_POLL_WAIT_MS);
tomoya123 0:9a52d95a79f7 22 }
tomoya123 0:9a52d95a79f7 23 return false;
tomoya123 0:9a52d95a79f7 24 }
tomoya123 0:9a52d95a79f7 25
tomoya123 0:9a52d95a79f7 26 void HeptaVoice::Synthe(const char* msg)
tomoya123 0:9a52d95a79f7 27 {
tomoya123 0:9a52d95a79f7 28 while(IsBusy()) {
tomoya123 0:9a52d95a79f7 29 ;
tomoya123 0:9a52d95a79f7 30 }
tomoya123 0:9a52d95a79f7 31 Write(msg);
tomoya123 0:9a52d95a79f7 32 Write("\r");
tomoya123 0:9a52d95a79f7 33 }
tomoya123 0:9a52d95a79f7 34
tomoya123 0:9a52d95a79f7 35 void HeptaVoice::Write(const char *msg)
tomoya123 0:9a52d95a79f7 36 {
tomoya123 0:9a52d95a79f7 37 _i2c.write(_addr, msg, strlen(msg));
tomoya123 0:9a52d95a79f7 38 _poll_wait.reset();
tomoya123 0:9a52d95a79f7 39 }
tomoya123 0:9a52d95a79f7 40
tomoya123 0:9a52d95a79f7 41 bool HeptaVoice::IsBusy()
tomoya123 0:9a52d95a79f7 42 {
tomoya123 0:9a52d95a79f7 43 if (AQTK_POLL_WAIT_MS > _poll_wait.read_ms()) {
tomoya123 0:9a52d95a79f7 44 return true;
tomoya123 0:9a52d95a79f7 45 }
tomoya123 0:9a52d95a79f7 46 _poll_wait.reset();
tomoya123 0:9a52d95a79f7 47 char c = 0x00;
tomoya123 0:9a52d95a79f7 48 if (_i2c.read(_addr, &c, 1) != 0) {
tomoya123 0:9a52d95a79f7 49 return false;
tomoya123 0:9a52d95a79f7 50 }
tomoya123 0:9a52d95a79f7 51 return c == '*' || c == 0xff;
tomoya123 0:9a52d95a79f7 52 }