ChoroQ

Committer:
shintamainjp
Date:
Sun Sep 19 23:49:38 2010 +0000
Revision:
1:97921a2adf78
Parent:
0:2a40e6db61c2

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shintamainjp 0:2a40e6db61c2 1 /**
shintamainjp 0:2a40e6db61c2 2 * CHORO Q HYBRID transmitter (Version 0.0.1)
shintamainjp 0:2a40e6db61c2 3 *
shintamainjp 0:2a40e6db61c2 4 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
shintamainjp 0:2a40e6db61c2 5 * http://shinta.main.jp/
shintamainjp 0:2a40e6db61c2 6 */
shintamainjp 0:2a40e6db61c2 7
shintamainjp 0:2a40e6db61c2 8 #ifndef _TRANSMITTER_CHORO_Q_H_
shintamainjp 0:2a40e6db61c2 9 #define _TRANSMITTER_CHORO_Q_H_
shintamainjp 0:2a40e6db61c2 10
shintamainjp 0:2a40e6db61c2 11 #include <mbed.h>
shintamainjp 0:2a40e6db61c2 12
shintamainjp 0:2a40e6db61c2 13 /**
shintamainjp 0:2a40e6db61c2 14 * CHORO Q HYBRID transmitter class.
shintamainjp 0:2a40e6db61c2 15 */
shintamainjp 0:2a40e6db61c2 16 class TransmitterChoroQ {
shintamainjp 0:2a40e6db61c2 17 public:
shintamainjp 0:2a40e6db61c2 18
shintamainjp 0:2a40e6db61c2 19 /**
shintamainjp 0:2a40e6db61c2 20 * Constructor.
shintamainjp 0:2a40e6db61c2 21 *
shintamainjp 0:2a40e6db61c2 22 * @param txpin Pin for transmit IR signal.
shintamainjp 0:2a40e6db61c2 23 */
shintamainjp 0:2a40e6db61c2 24 explicit TransmitterChoroQ(PinName txpin);
shintamainjp 0:2a40e6db61c2 25
shintamainjp 0:2a40e6db61c2 26 /**
shintamainjp 0:2a40e6db61c2 27 * Destructor.
shintamainjp 0:2a40e6db61c2 28 */
shintamainjp 0:2a40e6db61c2 29 ~TransmitterChoroQ();
shintamainjp 0:2a40e6db61c2 30
shintamainjp 0:2a40e6db61c2 31 typedef enum {
shintamainjp 0:2a40e6db61c2 32 Idle,
shintamainjp 0:2a40e6db61c2 33 Leader,
shintamainjp 0:2a40e6db61c2 34 Data,
shintamainjp 0:2a40e6db61c2 35 Trailer
shintamainjp 0:2a40e6db61c2 36 } State;
shintamainjp 0:2a40e6db61c2 37
shintamainjp 0:2a40e6db61c2 38 /**
shintamainjp 0:2a40e6db61c2 39 * Get state.
shintamainjp 0:2a40e6db61c2 40 *
shintamainjp 0:2a40e6db61c2 41 * @return Current state.
shintamainjp 0:2a40e6db61c2 42 */
shintamainjp 0:2a40e6db61c2 43 State getState(void);
shintamainjp 0:2a40e6db61c2 44
shintamainjp 0:2a40e6db61c2 45 /**
shintamainjp 0:2a40e6db61c2 46 * Set data.
shintamainjp 0:2a40e6db61c2 47 *
shintamainjp 0:2a40e6db61c2 48 * @param format Format.
shintamainjp 0:2a40e6db61c2 49 * @param buf Buffer of a data.
shintamainjp 0:2a40e6db61c2 50 * @param bitlength Bit length of the data.
shintamainjp 0:2a40e6db61c2 51 *
shintamainjp 0:2a40e6db61c2 52 * @return Data bit length.
shintamainjp 0:2a40e6db61c2 53 */
shintamainjp 0:2a40e6db61c2 54 int setData(uint8_t *buf, int bitlength);
shintamainjp 0:2a40e6db61c2 55
shintamainjp 0:2a40e6db61c2 56 private:
shintamainjp 0:2a40e6db61c2 57
shintamainjp 0:2a40e6db61c2 58 typedef struct {
shintamainjp 0:2a40e6db61c2 59 State state;
shintamainjp 0:2a40e6db61c2 60 int bitcount;
shintamainjp 0:2a40e6db61c2 61 int leader;
shintamainjp 0:2a40e6db61c2 62 int data;
shintamainjp 0:2a40e6db61c2 63 int trailer;
shintamainjp 0:2a40e6db61c2 64 } work_t;
shintamainjp 0:2a40e6db61c2 65
shintamainjp 0:2a40e6db61c2 66 typedef struct {
shintamainjp 0:2a40e6db61c2 67 int bitlength;
shintamainjp 0:2a40e6db61c2 68 uint8_t buffer[64];
shintamainjp 0:2a40e6db61c2 69 } data_t;
shintamainjp 0:2a40e6db61c2 70
shintamainjp 0:2a40e6db61c2 71 PwmOut tx;
shintamainjp 0:2a40e6db61c2 72 Ticker ticker;
shintamainjp 0:2a40e6db61c2 73 data_t data;
shintamainjp 0:2a40e6db61c2 74 work_t work;
shintamainjp 0:2a40e6db61c2 75
shintamainjp 0:2a40e6db61c2 76 static const int TUS_TAKARATOMY = 400;
shintamainjp 0:2a40e6db61c2 77
shintamainjp 0:2a40e6db61c2 78 void tick();
shintamainjp 0:2a40e6db61c2 79
shintamainjp 0:2a40e6db61c2 80 };
shintamainjp 0:2a40e6db61c2 81
shintamainjp 0:2a40e6db61c2 82 #endif