lcd handler for weather predictor

Dependencies:   C12832_lcd LCD_fonts

Committer:
yukari_hinata
Date:
Thu Feb 19 13:52:57 2015 +0000
Revision:
5:4aacf35455da
Parent:
4:1d811ee32310
reviced

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