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 control class (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 #ifndef _CHORO_Q_H_
shintamainjp 0:2a40e6db61c2 8 #define _CHORO_Q_H_
shintamainjp 0:2a40e6db61c2 9
shintamainjp 0:2a40e6db61c2 10 #include <mbed.h>
shintamainjp 0:2a40e6db61c2 11 #include <inttypes.h>
shintamainjp 0:2a40e6db61c2 12 #include <TransmitterChoroQ.h>
shintamainjp 0:2a40e6db61c2 13
shintamainjp 0:2a40e6db61c2 14 /**
shintamainjp 0:2a40e6db61c2 15 * CHORO Q HYBRID control class.
shintamainjp 0:2a40e6db61c2 16 */
shintamainjp 0:2a40e6db61c2 17 class ChoroQ {
shintamainjp 0:2a40e6db61c2 18 public:
shintamainjp 0:2a40e6db61c2 19
shintamainjp 0:2a40e6db61c2 20 /**
shintamainjp 0:2a40e6db61c2 21 * Control channel.
shintamainjp 0:2a40e6db61c2 22 */
shintamainjp 0:2a40e6db61c2 23 typedef enum {
shintamainjp 0:2a40e6db61c2 24 ChA,
shintamainjp 0:2a40e6db61c2 25 ChB,
shintamainjp 0:2a40e6db61c2 26 ChC,
shintamainjp 0:2a40e6db61c2 27 ChD
shintamainjp 0:2a40e6db61c2 28 } Channel;
shintamainjp 0:2a40e6db61c2 29
shintamainjp 0:2a40e6db61c2 30 /**
shintamainjp 0:2a40e6db61c2 31 * Create.
shintamainjp 0:2a40e6db61c2 32 *
shintamainjp 0:2a40e6db61c2 33 * @param pin A pin of IR.
shintamainjp 0:2a40e6db61c2 34 */
shintamainjp 0:2a40e6db61c2 35 explicit ChoroQ(PinName pin);
shintamainjp 0:2a40e6db61c2 36
shintamainjp 0:2a40e6db61c2 37 /**
shintamainjp 0:2a40e6db61c2 38 * Destroy.
shintamainjp 0:2a40e6db61c2 39 */
shintamainjp 0:2a40e6db61c2 40 ~ChoroQ();
shintamainjp 0:2a40e6db61c2 41
shintamainjp 0:2a40e6db61c2 42 /**
shintamainjp 0:2a40e6db61c2 43 * Action.
shintamainjp 0:2a40e6db61c2 44 */
shintamainjp 0:2a40e6db61c2 45 typedef enum {
shintamainjp 0:2a40e6db61c2 46 Undef,
shintamainjp 0:2a40e6db61c2 47 Up,
shintamainjp 0:2a40e6db61c2 48 Down,
shintamainjp 0:2a40e6db61c2 49 Left,
shintamainjp 0:2a40e6db61c2 50 Right,
shintamainjp 0:2a40e6db61c2 51 UpDash,
shintamainjp 0:2a40e6db61c2 52 UpLeft,
shintamainjp 0:2a40e6db61c2 53 UpRight,
shintamainjp 0:2a40e6db61c2 54 UpRightDash,
shintamainjp 0:2a40e6db61c2 55 UpLeftDash,
shintamainjp 0:2a40e6db61c2 56 DownLeft,
shintamainjp 0:2a40e6db61c2 57 DownRight,
shintamainjp 0:2a40e6db61c2 58 DownDash,
shintamainjp 0:2a40e6db61c2 59 DownLeftDash,
shintamainjp 0:2a40e6db61c2 60 DownRightDash,
shintamainjp 0:2a40e6db61c2 61 Stop
shintamainjp 0:2a40e6db61c2 62 } Action;
shintamainjp 0:2a40e6db61c2 63
shintamainjp 0:2a40e6db61c2 64 /**
shintamainjp 0:2a40e6db61c2 65 * Execute control.
shintamainjp 0:2a40e6db61c2 66 *
shintamainjp 0:2a40e6db61c2 67 * @param ch A control channel.
shintamainjp 0:2a40e6db61c2 68 * @param action An action.
shintamainjp 0:2a40e6db61c2 69 * @param interval Keep interval time if this flag is true.
shintamainjp 0:2a40e6db61c2 70 */
shintamainjp 0:2a40e6db61c2 71 void execute(Channel ch, Action action, bool keepInterval = true);
shintamainjp 0:2a40e6db61c2 72
shintamainjp 0:2a40e6db61c2 73 private:
shintamainjp 0:2a40e6db61c2 74 typedef struct {
shintamainjp 0:2a40e6db61c2 75 Action action;
shintamainjp 0:2a40e6db61c2 76 char *command;
shintamainjp 0:2a40e6db61c2 77 } action_t;
shintamainjp 0:2a40e6db61c2 78
shintamainjp 0:2a40e6db61c2 79 static const int TARGET_ID_CH_A = 0x00;
shintamainjp 0:2a40e6db61c2 80 static const int TARGET_ID_CH_B = 0x02;
shintamainjp 0:2a40e6db61c2 81 static const int TARGET_ID_CH_C = 0x01;
shintamainjp 0:2a40e6db61c2 82 static const int TARGET_ID_CH_D = 0x03;
shintamainjp 0:2a40e6db61c2 83 static const action_t list[];
shintamainjp 0:2a40e6db61c2 84
shintamainjp 0:2a40e6db61c2 85 static const int PACKET_INTERVAL_MS = 160;
shintamainjp 0:2a40e6db61c2 86 static const int REPEAT_INTERVAL_MS_CH_A = 20;
shintamainjp 0:2a40e6db61c2 87 static const int REPEAT_INTERVAL_MS_CH_B = 40;
shintamainjp 0:2a40e6db61c2 88 static const int REPEAT_INTERVAL_MS_CH_C = 60;
shintamainjp 0:2a40e6db61c2 89 static const int REPEAT_INTERVAL_MS_CH_D = 80;
shintamainjp 0:2a40e6db61c2 90
shintamainjp 0:2a40e6db61c2 91 TransmitterChoroQ irtx;
shintamainjp 0:2a40e6db61c2 92 Timer timer;
shintamainjp 0:2a40e6db61c2 93
shintamainjp 0:2a40e6db61c2 94 uint8_t *getCommand(Action action);
shintamainjp 0:2a40e6db61c2 95 };
shintamainjp 0:2a40e6db61c2 96
shintamainjp 0:2a40e6db61c2 97 #endif