Changeset 167 for UsbWattMeter/trunk/src/usb_watt_meter/main.c
- Timestamp:
- Mar 8, 2016, 8:37:45 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
UsbWattMeter/trunk/src/usb_watt_meter/main.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2016 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 6 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 32 28 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»37 * ÌÓCðíÈ¢D29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 41 37 42 38 /* 43 * TvvO(1)Ì{Ì39 * サンプルプログラム(1)の本体 44 40 */ 45 41 … … 68 64 #include "client.h" 69 65 70 /* TODO: MAC AhXðÝè*/66 /* TODO: MACアドレスを設定 */ 71 67 uint8_t mac_addr[6] = { 0x00, 0x12, 0x34, 0x56, 0x78, 0x9A }; 72 68 … … 77 73 } lwiptsk = {{0},SEM_IF_RX62N_RBUF_READY}; 78 74 79 /* TODO: [J[R[hðÝè*/80 #define MAKER_CODE 0x00, 0x00, 0xB3 /* TOPPERS vWFNg*/81 82 /* m[hvt@CIuWFNg*/75 /* TODO: メーカーコードを設定 */ 76 #define MAKER_CODE 0x00, 0x00, 0xB3 /* TOPPERSプロジェクト */ 77 78 /* ノードプロファイルオブジェクト */ 83 79 struct node_profile_object_t local_node_data = { 84 0x30, /* ®ìóÔ */ 85 { 0x01, 0x0A, 0x01, 0x00 }, /* u 86 îñ */ 80 0x30, /* 動作状態 */ 81 { 0x01, 0x0A, 0x01, 0x00 }, /* Version情報 */ 87 82 { 88 0xFE, /* ºÊÊMwIDtB[h*/89 { MAKER_CODE }, /* [J[R[h*/90 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }, /* j[NID([J[Æ©) */83 0xFE, /* 下位通信層IDフィールド */ 84 { MAKER_CODE }, /* メーカーコード */ 85 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }, /* ユニークID部(メーカー独自) */ 91 86 }, 92 87 0, 93 { MAKER_CODE }, /* [J[R[h*/88 { MAKER_CODE }, /* メーカーコード */ 94 89 }; 95 90 96 91 struct watt_hour_meter_t electric_energy_meter_data[6] = { 97 /* dÍÊ[^P*/92 /* 電力量メータ1 */ 98 93 { 99 0x30, /* ®ìóÔ */ 100 0x00, /* Ýuê */ 101 { 0x00, 0x00, 'C', 0x00 }, /* Kiu 102 îñ */ 103 0x41, /* Ùí¶óÔ */ 104 { MAKER_CODE }, /* [J[R[h */ 105 0x02, /* ÏZdÍÊPÊ */ 106 0x00000000, /* ÏZdÍÊvªl */ 107 { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, /* ÏZdÍÊvªlðP */ 94 0x30, /* 動作状態 */ 95 0x00, /* 設置場所 */ 96 { 0x00, 0x00, 'C', 0x00 }, /* 規格Version情報 */ 97 0x41, /* 異常発生状態 */ 98 { MAKER_CODE }, /* メーカーコード */ 99 0x02, /* 積算電力量単位 */ 100 0x00000000, /* 積算電力量計測値 */ 101 { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, /* 積算電力量計測値履歴1 */ 108 102 }, 109 /* dÍÊ[^Q*/103 /* 電力量メータ2 */ 110 104 { 111 0x30, /* ®ìóÔ */ 112 0x00, /* Ýuê */ 113 {0x00, 0x00, 'C', 0x00}, /* Kiu 114 îñ */ 115 0x41, /* Ùí¶óÔ */ 116 {MAKER_CODE}, /* [J[R[h */ 117 0x02, /* ÏZdÍÊPÊ */ 118 0x00000000, /* ÏZdÍÊvªl */ 119 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,}, /* ÏZdÍÊvªlðP */ 105 0x30, /* 動作状態 */ 106 0x00, /* 設置場所 */ 107 {0x00, 0x00, 'C', 0x00}, /* 規格Version情報 */ 108 0x41, /* 異常発生状態 */ 109 {MAKER_CODE}, /* メーカーコード */ 110 0x02, /* 積算電力量単位 */ 111 0x00000000, /* 積算電力量計測値 */ 112 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,}, /* 積算電力量計測値履歴1 */ 120 113 }, 121 /* dÍÊ[^R*/114 /* 電力量メータ3 */ 122 115 { 123 0x30, /* ®ìóÔ */ 124 0x00, /* Ýuê */ 125 {0x00, 0x00, 'C', 0x00}, /* Kiu 126 îñ */ 127 0x41, /* Ùí¶óÔ */ 128 {MAKER_CODE}, /* [J[R[h */ 129 0x02, /* ÏZdÍÊPÊ */ 130 0x00000000, /* ÏZdÍÊvªl */ 131 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,}, /* ÏZdÍÊvªlðP */ 116 0x30, /* 動作状態 */ 117 0x00, /* 設置場所 */ 118 {0x00, 0x00, 'C', 0x00}, /* 規格Version情報 */ 119 0x41, /* 異常発生状態 */ 120 {MAKER_CODE}, /* メーカーコード */ 121 0x02, /* 積算電力量単位 */ 122 0x00000000, /* 積算電力量計測値 */ 123 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,}, /* 積算電力量計測値履歴1 */ 132 124 }, 133 /* dÍÊ[^S*/125 /* 電力量メータ4 */ 134 126 { 135 0x30, /* ®ìóÔ */ 136 0x00, /* Ýuê */ 137 {0x00, 0x00, 'C', 0x00}, /* Kiu 138 îñ */ 139 0x41, /* Ùí¶óÔ */ 140 {MAKER_CODE}, /* [J[R[h */ 141 0x02, /* ÏZdÍÊPÊ */ 142 0x00000000, /* ÏZdÍÊvªl */ 143 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,}, /* ÏZdÍÊvªlðP */ 127 0x30, /* 動作状態 */ 128 0x00, /* 設置場所 */ 129 {0x00, 0x00, 'C', 0x00}, /* 規格Version情報 */ 130 0x41, /* 異常発生状態 */ 131 {MAKER_CODE}, /* メーカーコード */ 132 0x02, /* 積算電力量単位 */ 133 0x00000000, /* 積算電力量計測値 */ 134 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,}, /* 積算電力量計測値履歴1 */ 144 135 }, 145 /* dÍÊ[^T*/136 /* 電力量メータ5 */ 146 137 { 147 0x30, /* ®ìóÔ */ 148 0x00, /* Ýuê */ 149 {0x00, 0x00, 'C', 0x00}, /* Kiu 150 îñ */ 151 0x41, /* Ùí¶óÔ */ 152 {MAKER_CODE}, /* [J[R[h */ 153 0x02, /* ÏZdÍÊPÊ */ 154 0x00000000, /* ÏZdÍÊvªl */ 155 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,}, /* ÏZdÍÊvªlðP */ 138 0x30, /* 動作状態 */ 139 0x00, /* 設置場所 */ 140 {0x00, 0x00, 'C', 0x00}, /* 規格Version情報 */ 141 0x41, /* 異常発生状態 */ 142 {MAKER_CODE}, /* メーカーコード */ 143 0x02, /* 積算電力量単位 */ 144 0x00000000, /* 積算電力量計測値 */ 145 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,}, /* 積算電力量計測値履歴1 */ 156 146 }, 157 /* dÍÊ[^U*/147 /* 電力量メータ6 */ 158 148 { 159 0x30, /* ®ìóÔ */ 160 0x00, /* Ýuê */ 161 {0x00, 0x00, 'C', 0x00}, /* Kiu 162 îñ */ 163 0x41, /* Ùí¶óÔ */ 164 {MAKER_CODE}, /* [J[R[h */ 165 0x02, /* ÏZdÍÊPÊ */ 166 0x00000000, /* ÏZdÍÊvªl */ 167 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,}, /* ÏZdÍÊvªlðP */ 149 0x30, /* 動作状態 */ 150 0x00, /* 設置場所 */ 151 {0x00, 0x00, 'C', 0x00}, /* 規格Version情報 */ 152 0x41, /* 異常発生状態 */ 153 {MAKER_CODE}, /* メーカーコード */ 154 0x02, /* 積算電力量単位 */ 155 0x00000000, /* 積算電力量計測値 */ 156 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,}, /* 積算電力量計測値履歴1 */ 168 157 } 169 158 }; 170 159 171 160 /* 172 * ®ìóÔON/OFFÝèÖi0x30, 0x31ÌÝó¯t¯j161 * 動作状態ON/OFF設定関数(0x30, 0x31のみ受け付け) 173 162 */ 174 163 int onoff_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno) 175 164 { 176 /* TCYªPÈOÍó¯t¯È¢*/165 /* サイズが1以外は受け付けない */ 177 166 if(size != 1) 178 167 return 0; … … 181 170 182 171 switch(*(uint8_t *)src){ 183 /* ON Ìê*/172 /* ONの場合 */ 184 173 case 0x30: 185 174 *((uint8_t *)item->exinf) = *((uint8_t *)src); 186 /* LED Ì"."ðON */175 /* LEDの"."をON */ 187 176 sil_wrb_mem((uint8_t *)PORTE_PODR_ADDR, sil_reb_mem((uint8_t *)PORTE_PODR_ADDR) | 0x01); 188 177 break; 189 /* OFF Ìê*/178 /* OFFの場合 */ 190 179 case 0x31: 191 180 *((uint8_t *)item->exinf) = *((uint8_t *)src); 192 /* LED Ì"."ðOFF */181 /* LEDの"."をOFF */ 193 182 sil_wrb_mem((uint8_t *)PORTE_PODR_ADDR, sil_reb_mem((uint8_t *)PORTE_PODR_ADDR) & ~0x01); 194 183 break; 195 /* 0x30 ©0x31ÈOÍó¯t¯È¢*/184 /* 0x30か0x31以外は受け付けない */ 196 185 default: 197 186 return 0; … … 202 191 203 192 /* 204 * Ùí¶óÔÝèÖi0x41, 0x42ÌÝó¯t¯j193 * 異常発生状態設定関数(0x41, 0x42のみ受け付け) 205 194 */ 206 195 int alarm_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno) 207 196 { 208 /* TCYªPÈOÍó¯t¯È¢*/197 /* サイズが1以外は受け付けない */ 209 198 if(size != 1) 210 199 return 0; … … 213 202 214 203 switch(*(uint8_t *)src){ 215 /* Ùí¶ èÌê*/204 /* 異常発生ありの場合 */ 216 205 case 0x41: 217 /* Ùí¶ÈµÌê*/206 /* 異常発生なしの場合 */ 218 207 case 0x42: 219 208 *((uint8_t *)item->exinf) = *((uint8_t *)src); 220 209 break; 221 /* 0x41 ©0x42ÈOÍó¯t¯È¢*/210 /* 0x41か0x42以外は受け付けない */ 222 211 default: 223 212 return 0; … … 228 217 229 218 /* 230 * »ÝÝèÖ219 * 現在時刻設定関数 231 220 */ 232 221 int time_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno) … … 237 226 return 0; 238 227 239 /* Ýè*/228 /* 時刻設定 */ 240 229 p_src = (uint8_t *)src; 241 230 sil_wrb_mem((uint8_t *)RTC_RHRCNT_ADDR, *p_src++); … … 247 236 248 237 /* 249 * »Ýæ¾Ö238 * 現在時刻取得関数 250 239 */ 251 240 int time_prop_get(const EPRPINIB *item, void *dst, int size) … … 256 245 return 0; 257 246 258 /* Ýè*/247 /* 時刻設定 */ 259 248 p_dst = (uint8_t *)dst; 260 249 *p_dst++ = sil_reb_mem((uint8_t *)RTC_RHRCNT_ADDR); … … 265 254 266 255 /* 267 * »ÝNúÝèÖ256 * 現在年月日設定関数 268 257 */ 269 258 int date_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno) … … 274 263 return 0; 275 264 276 /* NúÝè*/265 /* 年月日設定 */ 277 266 p_src = (uint8_t *)src; 278 267 p_src++; /* 20XX */ … … 285 274 286 275 /* 287 * »ÝNúæ¾Ö276 * 現在年月日取得関数 288 277 */ 289 278 int date_prop_get(const EPRPINIB *item, void *dst, int size) … … 304 293 305 294 /* 306 * ÏZdÍÊvªlæ¾Ö295 * 積算電力量計測値取得関数 307 296 */ 308 297 int watt_hour_meter_integral_electric_energy_measurement_value_get(const EPRPINIB *item, void *dst, int size) … … 310 299 struct watt_hour_meter_t *meter = (struct watt_hour_meter_t *)(item->exinf - (intptr_t)&((struct watt_hour_meter_t *)0)->integral_electric_energy_measurement_value); 311 300 312 /* TCYª4ÈOÍó¯t¯È¢*/301 /* サイズが4以外は受け付けない */ 313 302 if(size != 4) 314 303 return 0; … … 324 313 int len; 325 314 326 /* TCYª192ÈOÍó¯t¯È¢*/315 /* サイズが192以外は受け付けない */ 327 316 if (size != 192) 328 317 return 0; … … 379 368 380 369 /* 381 * C^XN370 * メインタスク 382 371 */ 383 372 void main_task(intptr_t exinf) … … 390 379 int32_t len; 391 380 392 /* t@CVXeÌú»*/381 /* ファイルシステムの初期化 */ 393 382 fatfs_initialize(); 394 383 395 /* vgRX^bNÌú»*/384 /* プロトコルスタックの初期化 */ 396 385 netif_initialize(); 397 386 398 /* AvP[VÌú»*/387 /* アプリケーションの初期化 */ 399 388 main_initialize(); 400 389 … … 408 397 prev = now; 409 398 410 /* ^C}[æ¾*/399 /* タイマー取得 */ 411 400 timer = main_get_timer(); 412 401 413 /* d¶Ò¿*/402 /* 応答電文待ち */ 414 403 ret = ecn_trcv_esv(&esv, timer); 415 404 if ((ret != E_OK) && (ret != E_WBLK) && (ret != E_TMOUT)){ … … 424 413 } 425 414 426 /* Ôoß*/415 /* 時間経過 */ 427 416 main_progress(now - prev); 428 417 429 /* Echonet d¶óMÌê*/418 /* Echonet電文受信の場合 */ 430 419 if (ret == E_OK) { 431 /* Echonet d¶óM*/420 /* Echonet電文受信処理 */ 432 421 main_recv_esv(esv); 433 422 434 /* Ìæðú*/423 /* 領域解放 */ 435 424 ret = ecn_rel_esv(esv); 436 425 if (ret != E_OK){ … … 439 428 } 440 429 } 441 /* d¶Ò¿ÌèÝÌê*/430 /* 応答電文待ちの割り込みの場合 */ 442 431 else if (ret == E_WBLK) { 443 /* d¶Ò¿ÌèÝf[^æ¾*/432 /* 応答電文待ちの割り込みデータ取得 */ 444 433 ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len); 445 434 if (ret != E_OK){ … … 448 437 } 449 438 450 /* d¶Ò¿ÌèÝ*/439 /* 応答電文待ちの割り込み処理 */ 451 440 main_break_wait(brkdat, len); 452 441 453 /* Ìæðú*/442 /* 領域解放 */ 454 443 ret = ecn_rel_esv(esv); 455 444 if (ret != E_OK){ … … 459 448 } 460 449 461 /* ^CAEg*/450 /* タイムアウト処理 */ 462 451 main_timeout(); 463 452 } … … 532 521 syslog(LOG_NOTICE, "mac_addr %s %s", data, dhcp_enable ? "dhcp" : "static"); 533 522 534 /* libcurl ÆWolfSSLÆlwIPÌú»*/523 /* libcurlとWolfSSLとlwIPの初期化 */ 535 524 client_init(); 536 525 … … 573 562 started = true; 574 563 575 /* ECHONET ~hEFAðN®*/564 /* ECHONETミドルウェアを起動 */ 576 565 ret = ecn_sta_svc(); 577 566 if (ret != E_OK) 578 567 return; 579 568 580 /* SNTP ðJn*/569 /* SNTPを開始 */ 581 570 sntp_init(); 582 571 } 583 572 584 /* C^XNÉÊm*/573 /* メインタスクに通知 */ 585 574 uint8_t data[2]; 586 575 data[0] = 0x01; … … 609 598 610 599 /* 611 * ú»600 * 初期化 612 601 */ 613 602 static void main_initialize() … … 616 605 617 606 /* 618 * W 619 [Xgbv@\ÌÝè(S12AD) 607 * モジュールストップ機能の設定(S12AD) 620 608 */ 621 sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA502); /* ÝÂ*/609 sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA502); /* 書込み許可 */ 622 610 sil_wrw_mem((uint32_t *)SYSTEM_MSTPCRA_ADDR, 623 611 sil_rew_mem((uint32_t *)SYSTEM_MSTPCRA_ADDR) & ~SYSTEM_MSTPCRA_MSTPA17_BIT); 624 sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA500); /* ÝÖ~*/625 626 /* 7seg_1100 p|[goÍÝè*/612 sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA500); /* 書込み禁止 */ 613 614 /* 7seg_1100用ポート出力設定 */ 627 615 sil_wrb_mem((uint8_t *)PORT2_PDR_ADDR, sil_reb_mem((uint8_t *)PORT2_PDR_ADDR) | PORT_PDR_B4_BIT | PORT_PDR_B3_BIT); 628 /* 7seg_0010 p|[goÍÝè*/616 /* 7seg_0010用ポート出力設定 */ 629 617 sil_wrb_mem((uint8_t *)PORT5_PDR_ADDR, sil_reb_mem((uint8_t *)PORT5_PDR_ADDR) | PORT_PDR_B3_BIT); 630 /* 7seg_0001 p|[goÍÝè*/618 /* 7seg_0001用ポート出力設定 */ 631 619 sil_wrb_mem((uint8_t *)PORTC_PDR_ADDR, sil_reb_mem((uint8_t *)PORTC_PDR_ADDR) | PORT_PDR_B1_BIT); 632 /* 7seg_led p|[goÍÝè*/620 /* 7seg_led用ポート出力設定 */ 633 621 sil_wrb_mem((uint8_t *)PORTD_PDR_ADDR, 0xFF); 634 /* SWITCH p|[güÍALEDp|[goÍÝè*/622 /* SWITCH用ポート入力、LED用ポート出力設定 */ 635 623 sil_wrb_mem((uint8_t *)PORTE_PDR_ADDR, 0x0F); 636 624 637 /* LED ð"0000"Æ\¦*/625 /* LEDを"0000"と表示 */ 638 626 sil_wrb_mem((uint8_t *)PORTE_PDR_ADDR, 0x0F); 639 627 640 /* 3ms ãÉ7SEG\¦ðXV*/628 /* 3ms後に7SEG表示を更新 */ 641 629 main_led_timer = 3; 642 630 643 /* 10ms ãÉ{^óÔðmF*/631 /* 10ms後にボタン状態を確認 */ 644 632 main_timer = 10; 645 633 646 /* 12bitADC ú»*/647 sil_wrh_mem((uint16_t *)S12AD_ADEXICR_ADDR, 0x0000); /* ·xZToÍAàîd³ñIð*/648 sil_wrh_mem((uint16_t *)S12AD_ADANS0_ADDR, 0x00FF); /* Ï·|[gAN000`AN007IðAAN008`AN015ñIð*/649 sil_wrh_mem((uint16_t *)S12AD_ADANS1_ADDR, 0x0000); /* Ï·|[gAN016`AN020ñIð*/650 651 /* {^óÔÇÝÝ*/634 /* 12bitADC初期化 */ 635 sil_wrh_mem((uint16_t *)S12AD_ADEXICR_ADDR, 0x0000); /* 温度センサ出力、内部基準電圧非選択 */ 636 sil_wrh_mem((uint16_t *)S12AD_ADANS0_ADDR, 0x00FF); /* 変換ポートAN000〜AN007選択、AN008〜AN015非選択 */ 637 sil_wrh_mem((uint16_t *)S12AD_ADANS1_ADDR, 0x0000); /* 変換ポートAN016〜AN020非選択 */ 638 639 /* ボタン状態読み込み */ 652 640 btn = sil_reb_mem((uint8_t *)PORT0_PIDR_ADDR); 653 641 main_btn1_state = (btn & 0x20) != 0; 654 642 main_btn2_state = (btn & 0x80) != 0; 655 643 656 /* 1 bãÉ\¦ðXV*/644 /* 1秒後に表示を更新 */ 657 645 main_adv_timer = 1000; 658 646 } 659 647 660 648 /* 661 * ^C}[æ¾649 * タイマー取得 662 650 */ 663 651 static TMO main_get_timer() … … 679 667 680 668 /* 681 * Ôoß669 * 時間経過 682 670 */ 683 671 static void main_progress(TMO interval) … … 706 694 707 695 /* 708 * Echonet d¶óM696 * Echonet電文受信処理 709 697 */ 710 698 static void main_recv_esv(T_EDATA *esv) … … 741 729 742 730 /* 743 * d¶Ò¿ÌèÝ731 * 応答電文待ちの割り込み処理 744 732 */ 745 733 static void main_break_wait(uint8_t *brkdat, int32_t len) … … 761 749 762 750 syslog(LOG_NOTICE, "ip_addr %s, netmask %s, gateway %s", ip_addr, netmask, gateway); 763 tslp_tsk(100); /* OªoͳêéÜÅ¿åÁÆÒÂ*/751 tslp_tsk(100); /* ログが出力されるまでちょっと待つ */ 764 752 break; 765 753 case 2: … … 778 766 779 767 /* 780 * ^CAEg768 * タイムアウト処理 781 769 */ 782 770 static void main_timeout() … … 802 790 static void main_led_ontimer() 803 791 { 804 /* 7Seg \¦*/792 /* 7Seg表示 */ 805 793 sil_wrb_mem((uint8_t *)PORTD_PODR_ADDR, ~main_7seg[main_7seg_pos]); 806 794 … … 832 820 main_7seg_pos = (main_7seg_pos + 1) & 0x3; 833 821 834 /* 3ms ãÉ7SEG\¦ðXV*/822 /* 3ms後に7SEG表示を更新 */ 835 823 main_led_timer = 3; 836 824 } … … 859 847 860 848 /* 861 * ^CAEg849 * タイムアウト処理 862 850 */ 863 851 static void main_ontimer() … … 868 856 switch(main_state){ 869 857 case main_state_idle: 870 /* 10ms ãÉ{^óÔðmF*/858 /* 10ms後にボタン状態を確認 */ 871 859 main_timer = 10; 872 860 873 /* ADC ÌÏ·Êæ¾*/861 /* ADCの変換結果取得 */ 874 862 if((sil_reb_mem((uint8_t *)S12AD_ADCSR_ADDR) & S12AD_ADCSR_ADST_BIT) == 0){ 875 863 for (int i = 0; i < main_ad_count; i++) { 876 864 main_ad_avelage[i] -= main_ad_table[i][main_ad_pos]; 877 ad_value = sil_reh_mem(main_ad_addr[i]); // 12bit læ¾878 main_ad_integral[i] += 5/*[V]*/ * ad_value/*[A]*/; // 12bit ÏZl879 ad_value = (ad_value << 4) | (ad_value >> 12); // 16bit g£865 ad_value = sil_reh_mem(main_ad_addr[i]); // 12bit値取得 866 main_ad_integral[i] += 5/*[V]*/ * ad_value/*[A]*/; // 12bit積算値 867 ad_value = (ad_value << 4) | (ad_value >> 12); // 16bit拡張 880 868 main_ad_table[i][main_ad_pos] = ad_value; 881 869 main_ad_avelage[i] += ad_value; … … 887 875 } 888 876 889 /* Ï·JniVOXL[hj*/877 /* 変換開始(シングルスキャンモード) */ 890 878 sil_wrb_mem((uint8_t *)S12AD_ADCSR_ADDR, S12AD_ADCSR_ADST_BIT); 891 879 } 892 880 893 881 main_whm_counter += 10; 894 if (main_whm_counter >= 1250/* 180000=30 ª*/) {882 if (main_whm_counter >= 1250/* 180000=30分 */) { 895 883 main_whm_counter = 0; 896 884 … … 908 896 } 909 897 910 /* {^óÔÇÝÝ*/898 /* ボタン状態読み込み */ 911 899 btn = sil_reb_mem((uint8_t *)PORT0_PIDR_ADDR); 912 900 913 /* {^PÌ*/901 /* ボタン1の処理 */ 914 902 if(((btn & 0x20) != 0) && !main_btn1_state){ 915 903 main_btn1_count++; … … 931 919 } 932 920 933 /* {^QÌ*/921 /* ボタン2の処理 */ 934 922 if(((btn & 0x80) != 0) && !main_btn2_state){ 935 923 main_btn2_count++; … … 960 948 961 949 /* 962 * {^PóÔÏ»950 * ボタン1状態変化処理 963 951 */ 964 952 static void main_btn1_change(bool_t push) 965 953 { 966 /* ³êÄßÁ½É·é*/954 /* 押されて戻った時に処理する */ 967 955 if(push) 968 956 return; 969 957 970 /* \¦|[gÔ*/958 /* 表示ポート番号 */ 971 959 if(!main_rev){ 972 960 main_port_no--; … … 988 976 989 977 /* 990 * {^QóÔÏ»978 * ボタン2状態変化処理 991 979 */ 992 980 static void main_btn2_change(bool_t push) 993 981 { 994 /* ³êÄßÁ½É·é*/982 /* 押されて戻った時に処理する */ 995 983 if(push) 996 984 return; … … 1001 989 } 1002 990 1003 /* \¦|[gÔ*/991 /* 表示ポート番号 */ 1004 992 if(!main_rev){ 1005 993 main_port_no++; -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.