lcd handler for weather predictor

Dependencies:   C12832_lcd LCD_fonts

Committer:
yukari_hinata
Date:
Wed Jan 28 15:21:34 2015 +0000
Revision:
0:896ba7a737d9
Child:
1:4399eaceb999
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yukari_hinata 0:896ba7a737d9 1 #ifndef GRAPHICHANDLER_H_INCLUDED
yukari_hinata 0:896ba7a737d9 2 #define GRAPHICHANDLER_H_INCLUDED
yukari_hinata 0:896ba7a737d9 3
yukari_hinata 0:896ba7a737d9 4 #include "mbed.h"
yukari_hinata 0:896ba7a737d9 5 #include "C12832_lcd.h"
yukari_hinata 0:896ba7a737d9 6 #include "Arial_9.h"
yukari_hinata 0:896ba7a737d9 7 #include "Small_7.h"
yukari_hinata 0:896ba7a737d9 8 #include "Small_6.h"
yukari_hinata 0:896ba7a737d9 9
yukari_hinata 0:896ba7a737d9 10 // 天候を表す -> どこかのヘッダに記述予定
yukari_hinata 0:896ba7a737d9 11 typedef enum {
yukari_hinata 0:896ba7a737d9 12 SHINY,
yukari_hinata 0:896ba7a737d9 13 CLOUDY,
yukari_hinata 0:896ba7a737d9 14 RAINY,
yukari_hinata 0:896ba7a737d9 15 SNOWY,
yukari_hinata 0:896ba7a737d9 16 } WEATHER_STATUS;
yukari_hinata 0:896ba7a737d9 17
yukari_hinata 0:896ba7a737d9 18 // 表示モード
yukari_hinata 0:896ba7a737d9 19 typedef enum {
yukari_hinata 0:896ba7a737d9 20 LEARNING, // 観測/学習中
yukari_hinata 0:896ba7a737d9 21 DISPLAYING, // 表示中
yukari_hinata 0:896ba7a737d9 22 } DISPLAY_STATUS;
yukari_hinata 0:896ba7a737d9 23
yukari_hinata 0:896ba7a737d9 24 class GraphicHandler
yukari_hinata 0:896ba7a737d9 25 {
yukari_hinata 0:896ba7a737d9 26 private:
yukari_hinata 0:896ba7a737d9 27 time_t now_time; // 独自に保持する時間構造体
yukari_hinata 0:896ba7a737d9 28 int data_dimension; // 観測/予測データ次元
yukari_hinata 0:896ba7a737d9 29 float* now_data; // 現在の観測データ
yukari_hinata 0:896ba7a737d9 30 int predict_length; // 予測系列長
yukari_hinata 0:896ba7a737d9 31 int seq_time_interval; // 予測時間の間隔:単位は分
yukari_hinata 0:896ba7a737d9 32 int current_display_no; // 現在の画面No
yukari_hinata 0:896ba7a737d9 33 int current_image_no; // 現在のビットマップNo
yukari_hinata 0:896ba7a737d9 34 float* predict_data; // 予測データ
yukari_hinata 0:896ba7a737d9 35 int* predict_weather; // 予測天候の列
yukari_hinata 0:896ba7a737d9 36 Ticker time_ticker; // 時間更新用のティッカー
yukari_hinata 0:896ba7a737d9 37 Ticker image_ticker; // ビットマップアニメーションのティッカー
yukari_hinata 0:896ba7a737d9 38 InterruptIn* joy_left; // ジョイスティックの操作割り込み入力
yukari_hinata 0:896ba7a737d9 39 InterruptIn* joy_right;
yukari_hinata 0:896ba7a737d9 40 C12832_LCD lcd; // ステータス表示ターゲットのLCD
yukari_hinata 0:896ba7a737d9 41
yukari_hinata 0:896ba7a737d9 42 public:
yukari_hinata 0:896ba7a737d9 43 // やること: now_timeの大麻割り込み設定, predic_lenの設定, 配列アロケート
yukari_hinata 0:896ba7a737d9 44 GraphicHandler(int, // 観測データの次元(現在, 温度/気圧/湿度で3)
yukari_hinata 0:896ba7a737d9 45 int, // 時間間隔
yukari_hinata 0:896ba7a737d9 46 int); // 予測系列の長さ.
yukari_hinata 0:896ba7a737d9 47
yukari_hinata 0:896ba7a737d9 48 ~GraphicHandler(void);
yukari_hinata 0:896ba7a737d9 49
yukari_hinata 0:896ba7a737d9 50 // 予測データと天候のセット.
yukari_hinata 0:896ba7a737d9 51 void set_predict_data(float*, // 予測データ
yukari_hinata 0:896ba7a737d9 52 int*); // 予測天候
yukari_hinata 0:896ba7a737d9 53
yukari_hinata 0:896ba7a737d9 54 // 現在の観測データのセット
yukari_hinata 0:896ba7a737d9 55 void set_now_data(float*); // 観測データ
yukari_hinata 0:896ba7a737d9 56
yukari_hinata 0:896ba7a737d9 57 // 描画更新
yukari_hinata 0:896ba7a737d9 58 void update_draw(void);
yukari_hinata 0:896ba7a737d9 59
yukari_hinata 0:896ba7a737d9 60 // 天候ビットマップの描画
yukari_hinata 0:896ba7a737d9 61 void draw_weather_bitmap_at(int, // 天候
yukari_hinata 0:896ba7a737d9 62 int, // 画像No(アニメーション表示のため)
yukari_hinata 0:896ba7a737d9 63 int, // x座標
yukari_hinata 0:896ba7a737d9 64 int); // y座標
yukari_hinata 0:896ba7a737d9 65 // 時間の描画
yukari_hinata 0:896ba7a737d9 66 void draw_time_at(unsigned char*, // フォント識別
yukari_hinata 0:896ba7a737d9 67 int, // 現在時刻からの経過時間(予測時刻を表現):単位は分
yukari_hinata 0:896ba7a737d9 68 int, // x座標
yukari_hinata 0:896ba7a737d9 69 int); // y座標
yukari_hinata 0:896ba7a737d9 70 // 観測/予測データの描画
yukari_hinata 0:896ba7a737d9 71 void draw_data_at(float, // データ数値
yukari_hinata 0:896ba7a737d9 72 const char*, // 単位を表す文字列
yukari_hinata 0:896ba7a737d9 73 unsigned char*, // フォント識別
yukari_hinata 0:896ba7a737d9 74 int, // x座標
yukari_hinata 0:896ba7a737d9 75 int); // y座標
yukari_hinata 0:896ba7a737d9 76 // テキストの描画. フォント/サイズもラップ
yukari_hinata 0:896ba7a737d9 77 void draw_text_at(const char*, // テキスト
yukari_hinata 0:896ba7a737d9 78 unsigned char*, // フォント識別文字列(Arial_9, Small_6, Small_7)
yukari_hinata 0:896ba7a737d9 79 int, // x座標
yukari_hinata 0:896ba7a737d9 80 int); // y座標
yukari_hinata 0:896ba7a737d9 81 // 予測確率の描画.
yukari_hinata 0:896ba7a737d9 82 void draw_percentage_at(float, // 確率値[0,1]
yukari_hinata 0:896ba7a737d9 83 unsigned char*, // フォント
yukari_hinata 0:896ba7a737d9 84 int, // x座標
yukari_hinata 0:896ba7a737d9 85 int); // y座標
yukari_hinata 0:896ba7a737d9 86
yukari_hinata 0:896ba7a737d9 87 // ジョイスティックの入力割り込みハンドラ
yukari_hinata 0:896ba7a737d9 88 void joyleft_isr(void);
yukari_hinata 0:896ba7a737d9 89 void joyright_isr(void);
yukari_hinata 0:896ba7a737d9 90
yukari_hinata 0:896ba7a737d9 91 // 時間更新. 定期的に呼び出す(一分毎でええやん!)
yukari_hinata 0:896ba7a737d9 92 void update_time(void);
yukari_hinata 0:896ba7a737d9 93 // ビットマップ画像の更新.
yukari_hinata 0:896ba7a737d9 94 void update_image(void);
yukari_hinata 0:896ba7a737d9 95 };
yukari_hinata 0:896ba7a737d9 96
yukari_hinata 0:896ba7a737d9 97 #endif /* GRAPHICHANDLER_H_INCLUDED */