ChoroQ
ChoroQ.h@1:97921a2adf78, 2010-09-19 (annotated)
- Committer:
- shintamainjp
- Date:
- Sun Sep 19 23:49:38 2010 +0000
- Revision:
- 1:97921a2adf78
- Parent:
- 0:2a40e6db61c2
Who changed what in which revision?
User | Revision | Line number | New 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 |