Added a new Brand "Kamoona" to be used for other applications that are not a known brand.

Fork of RemoteIR by Shinichiro Nakamura

Committer:
mskamoona
Date:
Tue Apr 28 06:53:27 2015 +0000
Revision:
15:793c2aa484b1
Parent:
14:257b2f794dc4
Added Kamoona Manufacturer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shintamainjp 0:ec264f4ce158 1 /**
shintamainjp 9:dcfdac59ef74 2 * IR transmitter (Version 0.0.4)
shintamainjp 0:ec264f4ce158 3 *
shintamainjp 0:ec264f4ce158 4 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
shintamainjp 0:ec264f4ce158 5 * http://shinta.main.jp/
shintamainjp 0:ec264f4ce158 6 */
shintamainjp 0:ec264f4ce158 7
shintamainjp 0:ec264f4ce158 8 #include "TransmitterIR.h"
shintamainjp 0:ec264f4ce158 9
shintamainjp 10:c54fb1204d1e 10 #define LOCK()
shintamainjp 10:c54fb1204d1e 11 #define UNLOCK()
shintamainjp 0:ec264f4ce158 12
shintamainjp 11:268cc2ab63bd 13 /**
shintamainjp 11:268cc2ab63bd 14 * Constructor.
shintamainjp 11:268cc2ab63bd 15 *
shintamainjp 11:268cc2ab63bd 16 * @param txpin Pin for transmit IR signal.
shintamainjp 11:268cc2ab63bd 17 */
shintamainjp 0:ec264f4ce158 18 TransmitterIR::TransmitterIR(PinName txpin) : tx(txpin) {
shintamainjp 0:ec264f4ce158 19 tx.write(0.0);
shintamainjp 0:ec264f4ce158 20 tx.period_us(26.3);
shintamainjp 0:ec264f4ce158 21
shintamainjp 0:ec264f4ce158 22 work.state = Idle;
shintamainjp 0:ec264f4ce158 23 work.bitcount = 0;
shintamainjp 0:ec264f4ce158 24 work.leader = 0;
shintamainjp 0:ec264f4ce158 25 work.data = 0;
shintamainjp 0:ec264f4ce158 26 work.trailer = 0;
shintamainjp 0:ec264f4ce158 27
shintamainjp 0:ec264f4ce158 28 data.format = RemoteIR::UNKNOWN;
shintamainjp 0:ec264f4ce158 29 data.bitlength = 0;
shintamainjp 0:ec264f4ce158 30 }
shintamainjp 0:ec264f4ce158 31
shintamainjp 11:268cc2ab63bd 32 /**
shintamainjp 11:268cc2ab63bd 33 * Destructor.
shintamainjp 11:268cc2ab63bd 34 */
shintamainjp 2:08836610bd4a 35 TransmitterIR::~TransmitterIR() {
shintamainjp 2:08836610bd4a 36 }
shintamainjp 2:08836610bd4a 37
shintamainjp 11:268cc2ab63bd 38 /**
shintamainjp 11:268cc2ab63bd 39 * Get state.
shintamainjp 11:268cc2ab63bd 40 *
shintamainjp 11:268cc2ab63bd 41 * @return Current state.
shintamainjp 11:268cc2ab63bd 42 */
shintamainjp 0:ec264f4ce158 43 TransmitterIR::State TransmitterIR::getState(void) {
shintamainjp 9:dcfdac59ef74 44 LOCK();
shintamainjp 0:ec264f4ce158 45 State s = work.state;
shintamainjp 9:dcfdac59ef74 46 UNLOCK();
shintamainjp 0:ec264f4ce158 47 return s;
shintamainjp 0:ec264f4ce158 48 }
shintamainjp 0:ec264f4ce158 49
shintamainjp 11:268cc2ab63bd 50 /**
shintamainjp 11:268cc2ab63bd 51 * Set data.
shintamainjp 11:268cc2ab63bd 52 *
shintamainjp 11:268cc2ab63bd 53 * @param format Format.
shintamainjp 11:268cc2ab63bd 54 * @param buf Buffer of a data.
shintamainjp 11:268cc2ab63bd 55 * @param bitlength Bit length of the data.
shintamainjp 11:268cc2ab63bd 56 *
shintamainjp 11:268cc2ab63bd 57 * @return Data bit length.
shintamainjp 11:268cc2ab63bd 58 */
shintamainjp 0:ec264f4ce158 59 int TransmitterIR::setData(RemoteIR::Format format, uint8_t *buf, int bitlength) {
shintamainjp 9:dcfdac59ef74 60 LOCK();
shintamainjp 0:ec264f4ce158 61 if (work.state != Idle) {
shintamainjp 9:dcfdac59ef74 62 UNLOCK();
shintamainjp 0:ec264f4ce158 63 return -1;
shintamainjp 0:ec264f4ce158 64 }
shintamainjp 0:ec264f4ce158 65
shintamainjp 0:ec264f4ce158 66 work.state = Leader;
shintamainjp 0:ec264f4ce158 67 work.bitcount = 0;
shintamainjp 0:ec264f4ce158 68 work.leader = 0;
shintamainjp 0:ec264f4ce158 69 work.data = 0;
shintamainjp 0:ec264f4ce158 70 work.trailer = 0;
shintamainjp 0:ec264f4ce158 71
shintamainjp 0:ec264f4ce158 72 data.format = format;
shintamainjp 0:ec264f4ce158 73 data.bitlength = bitlength;
shintamainjp 0:ec264f4ce158 74 const int n = bitlength / 8 + (((bitlength % 8) != 0) ? 1 : 0);
shintamainjp 0:ec264f4ce158 75 for (int i = 0; i < n; i++) {
shintamainjp 0:ec264f4ce158 76 data.buffer[i] = buf[i];
shintamainjp 0:ec264f4ce158 77 }
shintamainjp 0:ec264f4ce158 78
shintamainjp 0:ec264f4ce158 79 switch (format) {
shintamainjp 0:ec264f4ce158 80 case RemoteIR::NEC:
shintamainjp 0:ec264f4ce158 81 ticker.detach();
shintamainjp 11:268cc2ab63bd 82 ticker.attach_us(this, &TransmitterIR::tick, RemoteIR::TUS_NEC);
shintamainjp 0:ec264f4ce158 83 break;
shintamainjp 0:ec264f4ce158 84 case RemoteIR::AEHA:
shintamainjp 0:ec264f4ce158 85 ticker.detach();
shintamainjp 11:268cc2ab63bd 86 ticker.attach_us(this, &TransmitterIR::tick, RemoteIR::TUS_AEHA);
shintamainjp 0:ec264f4ce158 87 break;
shintamainjp 0:ec264f4ce158 88 case RemoteIR::SONY:
shintamainjp 0:ec264f4ce158 89 ticker.detach();
shintamainjp 11:268cc2ab63bd 90 ticker.attach_us(this, &TransmitterIR::tick, RemoteIR::TUS_SONY);
shintamainjp 0:ec264f4ce158 91 break;
mskamoona 14:257b2f794dc4 92 case RemoteIR::KAMOONA:
mskamoona 12:0651f02169ee 93 ticker.detach();
mskamoona 14:257b2f794dc4 94 ticker.attach_us(this, &TransmitterIR::tick, RemoteIR::TUS_KAMOONA);
mskamoona 12:0651f02169ee 95 break;
mskamoona 14:257b2f794dc4 96
shintamainjp 0:ec264f4ce158 97 }
shintamainjp 0:ec264f4ce158 98
shintamainjp 9:dcfdac59ef74 99 UNLOCK();
shintamainjp 0:ec264f4ce158 100 return bitlength;
shintamainjp 0:ec264f4ce158 101 }
shintamainjp 0:ec264f4ce158 102
shintamainjp 0:ec264f4ce158 103 void TransmitterIR::tick(void) {
shintamainjp 9:dcfdac59ef74 104 LOCK();
shintamainjp 0:ec264f4ce158 105 switch (work.state) {
shintamainjp 0:ec264f4ce158 106 case Idle:
shintamainjp 0:ec264f4ce158 107 work.bitcount = 0;
shintamainjp 0:ec264f4ce158 108 work.leader = 0;
shintamainjp 0:ec264f4ce158 109 work.data = 0;
shintamainjp 0:ec264f4ce158 110 work.trailer = 0;
shintamainjp 0:ec264f4ce158 111 break;
shintamainjp 0:ec264f4ce158 112 case Leader:
shintamainjp 0:ec264f4ce158 113 if (data.format == RemoteIR::NEC) {
shintamainjp 0:ec264f4ce158 114 /*
shintamainjp 0:ec264f4ce158 115 * NEC.
shintamainjp 0:ec264f4ce158 116 */
shintamainjp 0:ec264f4ce158 117 static const int LEADER_NEC_HEAD = 16;
shintamainjp 0:ec264f4ce158 118 static const int LEADER_NEC_TAIL = 8;
shintamainjp 0:ec264f4ce158 119 if (work.leader < LEADER_NEC_HEAD) {
shintamainjp 0:ec264f4ce158 120 tx.write(0.5);
shintamainjp 0:ec264f4ce158 121 } else {
shintamainjp 0:ec264f4ce158 122 tx.write(0.0);
shintamainjp 0:ec264f4ce158 123 }
shintamainjp 0:ec264f4ce158 124 work.leader++;
shintamainjp 0:ec264f4ce158 125 if ((LEADER_NEC_HEAD + LEADER_NEC_TAIL) <= work.leader) {
shintamainjp 0:ec264f4ce158 126 work.state = Data;
shintamainjp 0:ec264f4ce158 127 }
shintamainjp 0:ec264f4ce158 128 } else if (data.format == RemoteIR::AEHA) {
shintamainjp 0:ec264f4ce158 129 /*
shintamainjp 0:ec264f4ce158 130 * AEHA.
shintamainjp 0:ec264f4ce158 131 */
shintamainjp 0:ec264f4ce158 132 static const int LEADER_AEHA_HEAD = 8;
shintamainjp 0:ec264f4ce158 133 static const int LEADER_AEHA_TAIL = 4;
shintamainjp 0:ec264f4ce158 134 if (work.leader < LEADER_AEHA_HEAD) {
shintamainjp 0:ec264f4ce158 135 tx.write(0.5);
shintamainjp 0:ec264f4ce158 136 } else {
shintamainjp 0:ec264f4ce158 137 tx.write(0.0);
shintamainjp 0:ec264f4ce158 138 }
shintamainjp 0:ec264f4ce158 139 work.leader++;
shintamainjp 0:ec264f4ce158 140 if ((LEADER_AEHA_HEAD + LEADER_AEHA_TAIL) <= work.leader) {
shintamainjp 0:ec264f4ce158 141 work.state = Data;
shintamainjp 0:ec264f4ce158 142 }
shintamainjp 0:ec264f4ce158 143 } else if (data.format == RemoteIR::SONY) {
shintamainjp 0:ec264f4ce158 144 /*
shintamainjp 0:ec264f4ce158 145 * SONY.
shintamainjp 0:ec264f4ce158 146 */
shintamainjp 0:ec264f4ce158 147 static const int LEADER_SONY_HEAD = 4;
shintamainjp 0:ec264f4ce158 148 static const int LEADER_SONY_TAIL = 0;
shintamainjp 0:ec264f4ce158 149 if (work.leader < LEADER_SONY_HEAD) {
shintamainjp 0:ec264f4ce158 150 tx.write(0.5);
shintamainjp 0:ec264f4ce158 151 } else {
shintamainjp 0:ec264f4ce158 152 tx.write(0.0);
shintamainjp 0:ec264f4ce158 153 }
shintamainjp 0:ec264f4ce158 154 work.leader++;
shintamainjp 0:ec264f4ce158 155 if ((LEADER_SONY_HEAD + LEADER_SONY_TAIL) <= work.leader) {
shintamainjp 0:ec264f4ce158 156 work.state = Data;
shintamainjp 0:ec264f4ce158 157 }
mskamoona 14:257b2f794dc4 158 } else if (data.format == RemoteIR::KAMOONA) {
mskamoona 12:0651f02169ee 159 /*
mskamoona 12:0651f02169ee 160 * SONY.
mskamoona 12:0651f02169ee 161 */
mskamoona 14:257b2f794dc4 162 static const int LEADER_KAMOONA_HEAD = 8;
mskamoona 14:257b2f794dc4 163 static const int LEADER_KAMOONA_TAIL = 0;
mskamoona 14:257b2f794dc4 164 if (work.leader < LEADER_KAMOONA_HEAD) {
mskamoona 12:0651f02169ee 165 tx.write(0.5);
mskamoona 12:0651f02169ee 166 } else {
mskamoona 12:0651f02169ee 167 tx.write(0.0);
mskamoona 12:0651f02169ee 168 }
mskamoona 12:0651f02169ee 169 work.leader++;
mskamoona 14:257b2f794dc4 170 if ((LEADER_KAMOONA_HEAD + LEADER_KAMOONA_TAIL) <= work.leader) {
mskamoona 12:0651f02169ee 171 work.state = Data;
mskamoona 12:0651f02169ee 172 }
shintamainjp 0:ec264f4ce158 173 } else {
shintamainjp 0:ec264f4ce158 174 }
shintamainjp 0:ec264f4ce158 175 break;
mskamoona 14:257b2f794dc4 176
shintamainjp 0:ec264f4ce158 177 case Data:
shintamainjp 0:ec264f4ce158 178 if (data.format == RemoteIR::NEC) {
shintamainjp 0:ec264f4ce158 179 /*
shintamainjp 0:ec264f4ce158 180 * NEC.
shintamainjp 0:ec264f4ce158 181 */
shintamainjp 0:ec264f4ce158 182 if (work.data == 0) {
shintamainjp 0:ec264f4ce158 183 tx.write(0.5);
shintamainjp 0:ec264f4ce158 184 work.data++;
shintamainjp 0:ec264f4ce158 185 } else {
shintamainjp 0:ec264f4ce158 186 tx.write(0.0);
shintamainjp 0:ec264f4ce158 187 if (0 != (data.buffer[work.bitcount / 8] & (1 << work.bitcount % 8))) {
shintamainjp 0:ec264f4ce158 188 if (3 <= work.data) {
shintamainjp 0:ec264f4ce158 189 work.bitcount++;
shintamainjp 0:ec264f4ce158 190 work.data = 0;
shintamainjp 0:ec264f4ce158 191 } else {
shintamainjp 0:ec264f4ce158 192 work.data++;
shintamainjp 0:ec264f4ce158 193 }
shintamainjp 0:ec264f4ce158 194 } else {
shintamainjp 0:ec264f4ce158 195 if (1 <= work.data) {
shintamainjp 0:ec264f4ce158 196 work.bitcount++;
shintamainjp 0:ec264f4ce158 197 work.data = 0;
shintamainjp 0:ec264f4ce158 198 } else {
shintamainjp 0:ec264f4ce158 199 work.data++;
shintamainjp 0:ec264f4ce158 200 }
shintamainjp 0:ec264f4ce158 201 }
shintamainjp 0:ec264f4ce158 202 }
shintamainjp 0:ec264f4ce158 203 if (data.bitlength <= work.bitcount) {
shintamainjp 0:ec264f4ce158 204 work.state = Trailer;
shintamainjp 0:ec264f4ce158 205 }
shintamainjp 0:ec264f4ce158 206 } else if (data.format == RemoteIR::AEHA) {
shintamainjp 0:ec264f4ce158 207 /*
shintamainjp 0:ec264f4ce158 208 * AEHA.
shintamainjp 0:ec264f4ce158 209 */
shintamainjp 0:ec264f4ce158 210 if (work.data == 0) {
shintamainjp 0:ec264f4ce158 211 tx.write(0.5);
shintamainjp 0:ec264f4ce158 212 work.data++;
shintamainjp 0:ec264f4ce158 213 } else {
shintamainjp 0:ec264f4ce158 214 tx.write(0.0);
shintamainjp 0:ec264f4ce158 215 if (0 != (data.buffer[work.bitcount / 8] & (1 << work.bitcount % 8))) {
shintamainjp 0:ec264f4ce158 216 if (3 <= work.data) {
shintamainjp 0:ec264f4ce158 217 work.bitcount++;
shintamainjp 0:ec264f4ce158 218 work.data = 0;
shintamainjp 0:ec264f4ce158 219 } else {
shintamainjp 0:ec264f4ce158 220 work.data++;
shintamainjp 0:ec264f4ce158 221 }
shintamainjp 0:ec264f4ce158 222 } else {
shintamainjp 0:ec264f4ce158 223 if (1 <= work.data) {
shintamainjp 0:ec264f4ce158 224 work.bitcount++;
shintamainjp 0:ec264f4ce158 225 work.data = 0;
shintamainjp 0:ec264f4ce158 226 } else {
shintamainjp 0:ec264f4ce158 227 work.data++;
shintamainjp 0:ec264f4ce158 228 }
shintamainjp 0:ec264f4ce158 229 }
shintamainjp 0:ec264f4ce158 230 }
shintamainjp 0:ec264f4ce158 231 if (data.bitlength <= work.bitcount) {
shintamainjp 0:ec264f4ce158 232 work.state = Trailer;
shintamainjp 0:ec264f4ce158 233 }
shintamainjp 0:ec264f4ce158 234 } else if (data.format == RemoteIR::SONY) {
shintamainjp 0:ec264f4ce158 235 /*
shintamainjp 0:ec264f4ce158 236 * SONY.
shintamainjp 0:ec264f4ce158 237 */
shintamainjp 0:ec264f4ce158 238 if (work.data == 0) {
shintamainjp 0:ec264f4ce158 239 tx.write(0.0);
shintamainjp 0:ec264f4ce158 240 work.data++;
shintamainjp 0:ec264f4ce158 241 } else {
shintamainjp 0:ec264f4ce158 242 tx.write(0.5);
shintamainjp 0:ec264f4ce158 243 if (0 != (data.buffer[work.bitcount / 8] & (1 << work.bitcount % 8))) {
shintamainjp 0:ec264f4ce158 244 if (2 <= work.data) {
shintamainjp 0:ec264f4ce158 245 work.bitcount++;
shintamainjp 0:ec264f4ce158 246 work.data = 0;
shintamainjp 0:ec264f4ce158 247 } else {
shintamainjp 0:ec264f4ce158 248 work.data++;
shintamainjp 0:ec264f4ce158 249 }
shintamainjp 0:ec264f4ce158 250 } else {
shintamainjp 0:ec264f4ce158 251 if (1 <= work.data) {
shintamainjp 0:ec264f4ce158 252 work.bitcount++;
shintamainjp 0:ec264f4ce158 253 work.data = 0;
shintamainjp 0:ec264f4ce158 254 } else {
shintamainjp 0:ec264f4ce158 255 work.data++;
shintamainjp 0:ec264f4ce158 256 }
shintamainjp 0:ec264f4ce158 257 }
shintamainjp 0:ec264f4ce158 258 }
shintamainjp 0:ec264f4ce158 259 if (data.bitlength <= work.bitcount) {
shintamainjp 0:ec264f4ce158 260 work.state = Trailer;
shintamainjp 0:ec264f4ce158 261 }
mskamoona 14:257b2f794dc4 262 }else if (data.format == RemoteIR::SONY) {
mskamoona 12:0651f02169ee 263 /*
mskamoona 14:257b2f794dc4 264 * KAMOONA.
mskamoona 12:0651f02169ee 265 */
mskamoona 12:0651f02169ee 266 if (work.data == 0) {
mskamoona 14:257b2f794dc4 267 tx.write(0.0);
mskamoona 12:0651f02169ee 268 work.data++;
mskamoona 12:0651f02169ee 269 } else {
mskamoona 14:257b2f794dc4 270 tx.write(0.5);
mskamoona 12:0651f02169ee 271 if (0 != (data.buffer[work.bitcount / 8] & (1 << work.bitcount % 8))) {
mskamoona 14:257b2f794dc4 272 if (2 <= work.data) {
mskamoona 12:0651f02169ee 273 work.bitcount++;
mskamoona 12:0651f02169ee 274 work.data = 0;
mskamoona 12:0651f02169ee 275 } else {
mskamoona 12:0651f02169ee 276 work.data++;
mskamoona 12:0651f02169ee 277 }
mskamoona 12:0651f02169ee 278 } else {
mskamoona 14:257b2f794dc4 279 if (1 <= work.data) {
mskamoona 12:0651f02169ee 280 work.bitcount++;
mskamoona 12:0651f02169ee 281 work.data = 0;
mskamoona 12:0651f02169ee 282 } else {
mskamoona 12:0651f02169ee 283 work.data++;
mskamoona 12:0651f02169ee 284 }
mskamoona 12:0651f02169ee 285 }
mskamoona 12:0651f02169ee 286 }
mskamoona 12:0651f02169ee 287 if (data.bitlength <= work.bitcount) {
mskamoona 12:0651f02169ee 288 work.state = Trailer;
mskamoona 14:257b2f794dc4 289 }
mskamoona 14:257b2f794dc4 290 } else {
shintamainjp 0:ec264f4ce158 291 }
shintamainjp 0:ec264f4ce158 292 break;
shintamainjp 0:ec264f4ce158 293 case Trailer:
shintamainjp 0:ec264f4ce158 294 if (data.format == RemoteIR::NEC) {
shintamainjp 0:ec264f4ce158 295 /*
shintamainjp 0:ec264f4ce158 296 * NEC.
shintamainjp 0:ec264f4ce158 297 */
shintamainjp 0:ec264f4ce158 298 static const int TRAILER_NEC_HEAD = 1;
shintamainjp 0:ec264f4ce158 299 static const int TRAILER_NEC_TAIL = 2;
shintamainjp 0:ec264f4ce158 300 if (work.trailer < TRAILER_NEC_HEAD) {
shintamainjp 0:ec264f4ce158 301 tx.write(0.5);
shintamainjp 0:ec264f4ce158 302 } else {
shintamainjp 0:ec264f4ce158 303 tx.write(0.0);
shintamainjp 0:ec264f4ce158 304 }
shintamainjp 0:ec264f4ce158 305 work.trailer++;
shintamainjp 0:ec264f4ce158 306 if ((TRAILER_NEC_HEAD + TRAILER_NEC_TAIL) <= work.trailer) {
shintamainjp 0:ec264f4ce158 307 work.state = Idle;
shintamainjp 0:ec264f4ce158 308 //ticker.detach();
shintamainjp 0:ec264f4ce158 309 }
shintamainjp 0:ec264f4ce158 310 } else if (data.format == RemoteIR::AEHA) {
shintamainjp 0:ec264f4ce158 311 /*
shintamainjp 0:ec264f4ce158 312 * AEHA.
shintamainjp 0:ec264f4ce158 313 */
shintamainjp 0:ec264f4ce158 314 static const int TRAILER_AEHA_HEAD = 1;
shintamainjp 11:268cc2ab63bd 315 static const int TRAILER_AEHA_TAIL = 8000 / RemoteIR::TUS_AEHA;
shintamainjp 0:ec264f4ce158 316 if (work.trailer < TRAILER_AEHA_HEAD) {
shintamainjp 0:ec264f4ce158 317 tx.write(0.5);
shintamainjp 0:ec264f4ce158 318 } else {
shintamainjp 0:ec264f4ce158 319 tx.write(0.0);
shintamainjp 0:ec264f4ce158 320 }
shintamainjp 0:ec264f4ce158 321 work.trailer++;
shintamainjp 0:ec264f4ce158 322 if ((TRAILER_AEHA_HEAD + TRAILER_AEHA_TAIL) <= work.trailer) {
shintamainjp 0:ec264f4ce158 323 work.state = Idle;
shintamainjp 0:ec264f4ce158 324 //ticker.detach();
shintamainjp 0:ec264f4ce158 325 }
shintamainjp 0:ec264f4ce158 326 } else if (data.format == RemoteIR::SONY) {
shintamainjp 0:ec264f4ce158 327 /*
shintamainjp 0:ec264f4ce158 328 * SONY.
shintamainjp 0:ec264f4ce158 329 */
shintamainjp 0:ec264f4ce158 330 static const int TRAILER_SONY_HEAD = 0;
shintamainjp 0:ec264f4ce158 331 static const int TRAILER_SONY_TAIL = 0;
shintamainjp 0:ec264f4ce158 332 if (work.trailer < TRAILER_SONY_HEAD) {
shintamainjp 0:ec264f4ce158 333 tx.write(0.5);
shintamainjp 0:ec264f4ce158 334 } else {
shintamainjp 0:ec264f4ce158 335 tx.write(0.0);
shintamainjp 0:ec264f4ce158 336 }
shintamainjp 0:ec264f4ce158 337 work.trailer++;
shintamainjp 0:ec264f4ce158 338 if ((TRAILER_SONY_HEAD + TRAILER_SONY_TAIL) <= work.trailer) {
shintamainjp 0:ec264f4ce158 339 work.state = Idle;
shintamainjp 0:ec264f4ce158 340 //ticker.detach();
shintamainjp 0:ec264f4ce158 341 }
mskamoona 14:257b2f794dc4 342 }else if (data.format == RemoteIR::KAMOONA) {
mskamoona 12:0651f02169ee 343 /*
mskamoona 14:257b2f794dc4 344 * KAMOONA.
mskamoona 12:0651f02169ee 345 */
mskamoona 14:257b2f794dc4 346 static const int TRAILER_KAMOONA_HEAD = 0;
mskamoona 14:257b2f794dc4 347 static const int TRAILER_KAMOONA_TAIL = 0;
mskamoona 14:257b2f794dc4 348 if (work.trailer < TRAILER_KAMOONA_HEAD) {
mskamoona 12:0651f02169ee 349 tx.write(0.5);
mskamoona 12:0651f02169ee 350 } else {
mskamoona 12:0651f02169ee 351 tx.write(0.0);
mskamoona 12:0651f02169ee 352 }
mskamoona 12:0651f02169ee 353 work.trailer++;
mskamoona 14:257b2f794dc4 354 if ((TRAILER_KAMOONA_HEAD + TRAILER_KAMOONA_TAIL) <= work.trailer) {
mskamoona 12:0651f02169ee 355 work.state = Idle;
mskamoona 12:0651f02169ee 356 //ticker.detach();
mskamoona 12:0651f02169ee 357 }
shintamainjp 0:ec264f4ce158 358 } else {
shintamainjp 0:ec264f4ce158 359 }
shintamainjp 0:ec264f4ce158 360 break;
shintamainjp 0:ec264f4ce158 361 default:
shintamainjp 0:ec264f4ce158 362 break;
shintamainjp 0:ec264f4ce158 363 }
shintamainjp 9:dcfdac59ef74 364 UNLOCK();
mskamoona 14:257b2f794dc4 365
mskamoona 14:257b2f794dc4 366 }