Ignore:
Timestamp:
Feb 1, 2019, 9:57:09 PM (5 years ago)
Author:
coas-nagasima
Message:

TINETとSocket APIなどを更新

Location:
asp3_tinet_ecnl_arm/trunk/app4_aircon
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • asp3_tinet_ecnl_arm/trunk/app4_aircon/.cproject

    r352 r364  
    2222                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2323                                <option id="toolchain.id" value="gcc-arm-embedded"/>
    24                                 <option id="toolchain.version" value="5.4.1.20160919"/>
     24                                <option id="toolchain.version" value="6.3.1.20170620"/>
    2525                        </storageModule>
    2626                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    5959                                                        <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.1501102219" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/>
    6060                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1085912920" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
    61                                                         <builder buildPath="${workspace_loc:/app4_aircon}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.1132488688" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>
     61                                                        <builder buildPath="${workspace_loc:/app4_aircon}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.1132488688" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>
    6262                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.1278248884" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler">
    6363                                                                <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1219404387" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/>
     
    127127                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    128128                                <option id="toolchain.id" value="gcc-arm-embedded"/>
    129                                 <option id="toolchain.version" value="5.4.1.20160919"/>
     129                                <option id="toolchain.version" value="6.3.1.20170620"/>
    130130                        </storageModule>
    131131                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    164164                                                        <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.956370110" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/>
    165165                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1652770796" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
    166                                                         <builder buildPath="${workspace_loc:/app4_aircon}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.rz.builder.994484673" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>
     166                                                        <builder buildPath="${workspace_loc:/app4_aircon}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.rz.builder.994484673" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>
    167167                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.1242790859" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler">
    168168                                                                <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1960328126" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/>
  • asp3_tinet_ecnl_arm/trunk/app4_aircon/Debug/Makefile

    r352 r364  
    179179        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    180180endif
    181 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start
     181CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start
    182182INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    183183        -I$(SRCDIR)/../btstack/include \
     
    187187        -I$(SRCDIR)/../usbhost/src \
    188188        $(INCLUDES)
    189 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     189LDFLAGS := $(LDFLAGS) -L.
    190190LIBS := $(LIBS) $(CXXLIBS)
    191191CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    198198APPL_COBJS := $(APPL_COBJS) netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o sdfs.o ccsbcs.o ntshell.o text_editor.o text_history.o usrcmd.o vtrecv.o vtsend.o ntlibc.o ntstdio.o ntopt.o syscall.o tlsf.o
    199199APPLDIRS := $(APPLDIRS) ../../ntshell/lcd
    200 APPL_COBJS := $(APPL_COBJS) draw_font.o misaki_font.o
     200APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o
     201APPL_CFLAGS := $(APPL_CFLAGS) -DSHNM12_FONT
    201202
    202203#
     
    223224endif
    224225
    225 
    226 #
    227 #  ネットワークサービスの定義
    228 #
    229 NO_USE_TINET_LIBRARY = true
    230 
    231 #  ネットワークインタフェースの選択、何れか一つ選択する。
    232 NET_IF = ether
    233 
    234 #  イーサネット・ディバイスドライバの選択
    235 NET_DEV = if_btusb
    236 
    237 #  ネットワーク層の選択
    238 #SUPPORT_INET6 = true
    239 SUPPORT_INET4 = true
    240 
    241 #  API に組込む機能の選択
    242 #API_CFG_IP4MAPPED_ADDR = true
    243 
    244 #  トランスポート層の選択
    245 SUPPORT_TCP = true
    246 SUPPORT_UDP = true
    247 
    248 # IGMPを有効に設定
    249 SUPPORT_IGMP = true
    250 
    251 #
    252 #  ネットワークサービスの Makefile のインクルード
    253 #
    254 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     226ifdef TINETDIR
     227        #
     228        #  ネットワークサービスの定義
     229        #
     230        NO_USE_TINET_LIBRARY = true
     231
     232        #  ネットワークインタフェースの選択、何れか一つ選択する。
     233        NET_IF = ether
     234
     235        #  イーサネット・ディバイスドライバの選択
     236        NET_DEV = if_btusb
     237
     238        #  ネットワーク層の選択
     239        #SUPPORT_INET6 = true
     240        SUPPORT_INET4 = true
     241
     242        #  API に組込む機能の選択
     243        #API_CFG_IP4MAPPED_ADDR = true
     244
     245        #  トランスポート層の選択
     246        SUPPORT_TCP = true
     247        SUPPORT_UDP = true
     248
     249        # IGMPを有効に設定
     250        SUPPORT_IGMP = true
     251
     252        #
     253        #  ネットワークサービスの Makefile のインクルード
     254        #
     255        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     256endif
    255257
    256258#
     
    285287#  コンフィギュレータに関する定義
    286288#
    287 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    288 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     289ifndef TINETDIR
     290  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     291  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     292                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     293else
     294  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     295  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    289296                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    290297                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    292299                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    293300                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     301endif
    294302CFG_ASMOBJS := $(CFG_ASMOBJS)
    295303CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    437445
    438446#
     447#  並列makeのための依存関係の定義
     448#
     449$(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp
     450$(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     451                                                                                                                | offset.timestamp
     452
     453#
    439454#  特別な依存関係の定義
    440455#
     
    445460#
    446461$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    447         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     462        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    448463                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    449464                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
  • asp3_tinet_ecnl_arm/trunk/app4_aircon/DebugEther/Makefile

    r352 r364  
    177177        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    178178endif
    179 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start
     179CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start
    180180INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    181181        -I$(SRCDIR)/../btstack/include \
     
    185185        -I$(SRCDIR)/../usbhost/src \
    186186        $(INCLUDES)
    187 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     187LDFLAGS := $(LDFLAGS) -L.
    188188LIBS := $(LIBS) $(CXXLIBS)
    189189CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    196196APPL_COBJS := $(APPL_COBJS) netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o sdfs.o ccsbcs.o ntshell.o text_editor.o text_history.o usrcmd.o vtrecv.o vtsend.o ntlibc.o ntstdio.o ntopt.o syscall.o tlsf.o
    197197APPLDIRS := $(APPLDIRS) ../../ntshell/lcd
    198 APPL_COBJS := $(APPL_COBJS) draw_font.o misaki_font.o
     198APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o
     199APPL_CFLAGS := $(APPL_CFLAGS) -DSHNM12_FONT
    199200
    200201#
     
    221222endif
    222223
    223 
    224 #
    225 #  ネットワークサービスの定義
    226 #
    227 NO_USE_TINET_LIBRARY = true
    228 
    229 #  ネットワークインタフェースの選択、何れか一つ選択する。
    230 NET_IF = ether
    231 
    232 #  イーサネット・ディバイスドライバの選択
     224ifdef TINETDIR
     225        #
     226        #  ネットワークサービスの定義
     227        #
     228        NO_USE_TINET_LIBRARY = true
     229
     230        #  ネットワークインタフェースの選択、何れか一つ選択する。
     231        NET_IF = ether
     232
     233        #  イーサネット・ディバイスドライバの選択
    233234        NET_DEV = if_mbed
    234235
    235 #  ネットワーク層の選択
    236 #SUPPORT_INET6 = true
    237 SUPPORT_INET4 = true
    238 
    239 #  API に組込む機能の選択
    240 #API_CFG_IP4MAPPED_ADDR = true
    241 
    242 #  トランスポート層の選択
    243 SUPPORT_TCP = true
    244 SUPPORT_UDP = true
    245 
    246 # IGMPを有効に設定
    247 SUPPORT_IGMP = true
    248 
    249 #
    250 #  ネットワークサービスの Makefile のインクルード
    251 #
    252 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     236        #  ネットワーク層の選択
     237        #SUPPORT_INET6 = true
     238        SUPPORT_INET4 = true
     239
     240        #  API に組込む機能の選択
     241        #API_CFG_IP4MAPPED_ADDR = true
     242
     243        #  トランスポート層の選択
     244        SUPPORT_TCP = true
     245        SUPPORT_UDP = true
     246
     247        # IGMPを有効に設定
     248        SUPPORT_IGMP = true
     249
     250        #
     251        #  ネットワークサービスの Makefile のインクルード
     252        #
     253        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     254endif
    253255
    254256#
     
    283285#  コンフィギュレータに関する定義
    284286#
    285 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    286 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     287ifndef TINETDIR
     288  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     289  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     290                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     291else
     292  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     293  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    287294                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    288295                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    290297                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    291298                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     299endif
    292300CFG_ASMOBJS := $(CFG_ASMOBJS)
    293301CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    435443
    436444#
     445#  並列makeのための依存関係の定義
     446#
     447$(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp
     448$(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     449                                                                                                                | offset.timestamp
     450
     451#
    437452#  特別な依存関係の定義
    438453#
     
    443458#
    444459$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    445         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     460        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    446461                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    447462                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
  • asp3_tinet_ecnl_arm/trunk/app4_aircon/src/echonet_main.c

    r352 r364  
    11/*
    22 *  TOPPERS ECHONET Lite Communication Middleware
    3  * 
     3 *
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    5  * 
     5 *
    66 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    77 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     
    2626 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
    2727 *      免責すること.
    28  * 
     28 *
    2929 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
    3030 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     
    3232 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    3333 *  の責任を負わない.
    34  * 
     34 *
    3535 *  @(#) $Id$
    3636 */
    3737
    38 /* 
     38/*
    3939 *  サンプルプログラム(1)の本体
    4040 */
     
    5555#include "adafruit_st7735.h"
    5656#include "draw_font.h"
     57#include <tinet_defs.h>
     58#include <tinet_config.h>
     59#include <netinet/in.h>
     60#include <netinet/in_var.h>
     61#include <net/ethernet.h>
     62#include <net/if_var.h>
     63
     64extern uint8_t mac_addr[6];
    5765
    5866/* TODO: メーカーコードを設定 */
     
    184192
    185193        /* サイズが1以外は受け付けない */
    186         if(size != 1)
     194        if (size != 1)
    187195                return 0;
    188196
    189197        *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src);
    190198
    191         switch(*(uint8_t *)src){
     199        switch (*(uint8_t *)src) {
    192200        /* ONの場合 */
    193201        case 0x30:
     
    198206                data[0] = 0x80;
    199207                ret = ecn_brk_wai(data, sizeof(data));
    200                 if(ret != E_OK){
     208                if (ret != E_OK) {
    201209                        syslog(LOG_ERROR, "ecn_brk_wai");
    202210                        return 2;
     
    217225{
    218226        /* サイズが1以外は受け付けない */
    219         if(size != 1)
     227        if (size != 1)
    220228                return 0;
    221229
    222230        *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src);
    223231
    224         switch(*(uint8_t *)src){
     232        switch (*(uint8_t *)src) {
    225233        /* 異常発生ありの場合 */
    226234        case 0x41:
     
    246254
    247255        /* サイズが1以外は受け付けない */
    248         if(size != 1)
     256        if (size != 1)
    249257                return 0;
    250258
    251         switch(*(uint8_t *)src){
     259        switch (*(uint8_t *)src) {
    252260        /* 自動の場合 */
    253261        case 0x41:
     
    266274                data[0] = 0xB0;
    267275                ret = ecn_brk_wai(data, sizeof(data));
    268                 if(ret != E_OK){
     276                if (ret != E_OK) {
    269277                        syslog(LOG_ERROR, "ecn_brk_wai");
    270278                        return 2;
     
    288296
    289297        /* サイズが1以外は受け付けない */
    290         if(size != 1)
     298        if (size != 1)
    291299                return 0;
    292300
    293301        /* 0℃~50℃ */
    294         if((*(uint8_t *)src >= 0x00) && (*(uint8_t *)src <= 0x32)){
     302        if ((*(uint8_t *)src >= 0x00) && (*(uint8_t *)src <= 0x32)) {
    295303                *((uint8_t *)item->exinf) = *((uint8_t *)src);
    296304                /* メインタスクに通知 */
    297305                data[0] = 0xB3;
    298306                ret = ecn_brk_wai(data, sizeof(data));
    299                 if(ret != E_OK){
     307                if (ret != E_OK) {
    300308                        syslog(LOG_ERROR, "ecn_brk_wai");
    301309                        return 2;
     
    303311        }
    304312        /* 上記以外は受け付けない */
    305         else{
     313        else {
    306314                return 0;
    307315        }
     
    333341
    334342        ret2 = get_tim(&now);
    335         if (ret2 != E_OK){
     343        if (ret2 != E_OK) {
    336344                syslog(LOG_ERROR, "get_tim");
    337345                return;
    338346        }
    339347
    340         for(;;){
     348        for (;;) {
    341349                prev = now;
    342350
     
    346354                /* 応答電文待ち */
    347355                ret = ecn_trcv_esv(&esv, timer);
    348                 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)){
     356                if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {
    349357                        syslog(LOG_ERROR, "ecn_trcv_esv");
    350358                        break;
     
    352360
    353361                ret2 = get_tim(&now);
    354                 if (ret2 != E_OK){
     362                if (ret2 != E_OK) {
    355363                        syslog(LOG_ERROR, "get_tim");
    356364                        break;
     
    367375                        /* 領域解放 */
    368376                        ret = ecn_rel_esv(esv);
    369                         if (ret != E_OK){
     377                        if (ret != E_OK) {
    370378                                syslog(LOG_ERROR, "ecn_rel_esv");
    371379                                break;
     
    376384                        /* 応答電文待ちの割り込みデータ取得 */
    377385                        ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len);
    378                         if (ret != E_OK){
     386                        if (ret != E_OK) {
    379387                                syslog(LOG_ERROR, "ecn_get_brk_dat");
    380388                                break;
     
    386394                        /* 領域解放 */
    387395                        ret = ecn_rel_esv(esv);
    388                         if (ret != E_OK){
     396                        if (ret != E_OK) {
    389397                                syslog(LOG_ERROR, "ecn_rel_esv");
    390398                                break;
     
    397405}
    398406
    399 bool_t started = false;
    400 
    401407void echonet_change_netif_link(uint8_t link_up, uint8_t up)
    402408{
     
    406412                return;
    407413
    408         if (up && !started) {
    409                 started = true;
    410 
    411                 /* ECHONETミドルウェアを起動 */
    412                 ret = ecn_sta_svc();
    413                 if (ret != E_OK)
    414                         return;
    415 
    416                 /* ECHONETミドルウェアを起動するのを待つ */
    417                 dly_tsk(100);
     414        if (up) {
     415                /* インスタンスリスト通知の送信 */
     416                ret = ecn_ntf_inl();
     417                if (ret != E_OK) {
     418                        syslog(LOG_ERROR, "ecn_ntf_inl");
     419                }
    418420        }
    419421
     
    421423        uint8_t data[2];
    422424        data[0] = 0x01;
    423         data[1] = up ? 0x01 : 0x02;
     425        data[1] = (up ? 0x01 : 0x02) | (link_up ? 0x10 : 0x20);
    424426        ret = ecn_brk_wai(data, sizeof(data));
    425427        if (ret != E_OK) {
     
    429431}
    430432
    431 enum main_state_t{
     433enum main_state_t {
     434        main_state_start,
    432435        main_state_idle,
    433436        main_state_search,
     
    440443
    441444int main_timer = TMO_FEVR;
    442 enum main_state_t main_state = main_state_idle;
     445enum main_state_t main_state = main_state_start;
    443446int16_t main_ave_templ;
    444447bool_t main_tmp_fan_on;
     
    470473LCD_DrawProp_t drawProp;
    471474
    472 enum main_rly_state_t{
     475enum main_rly_state_t {
    473476        main_rly_state_off,
    474477        main_rly_state_on
     
    486489        uint8_t btn;
    487490
    488         /* 1秒後に温度センサーを探す */
     491        /* ECHONETミドルウェアを起動するのを待つ */
     492        main_state = main_state_start;
    489493        main_timer = 1000 * 1000;
    490494
     
    505509        spi_init(&lcd.hspi, P10_14, P10_15, P10_12, NC);
    506510        spi_format(&lcd.hspi, 8, 0, 0);
    507         spi_frequency(&lcd.hspi, 1000000);
     511        spi_frequency(&lcd.hspi, 4000000);
    508512
    509513        gpio_init_out(&lcd.cs_pin, P10_13);
     
    524528        main_lcd_timer = 1000 * 1000;
    525529
     530        /* メインタスクを起動 */
    526531        ER ret = act_tsk(MAIN_TASK);
    527532        if (ret != E_OK) {
     
    537542        int result = main_timer;
    538543
    539         if((result == TMO_FEVR)
    540                 || ((main_btn_timer != TMO_FEVR) && (main_btn_timer < result))){
     544        if ((result == TMO_FEVR)
     545                || ((main_btn_timer != TMO_FEVR) && (main_btn_timer < result))) {
    541546                result = main_btn_timer;
    542547        }
    543548
    544         if((result == TMO_FEVR)
    545                 || ((main_lcd_timer != TMO_FEVR) && (main_lcd_timer < result))){
     549        if ((result == TMO_FEVR)
     550                || ((main_lcd_timer != TMO_FEVR) && (main_lcd_timer < result))) {
    546551                result = main_lcd_timer;
    547552        }
    548553
    549         if((result == TMO_FEVR)
    550                 || ((main_rly_timer != TMO_FEVR) && (main_rly_timer < result))){
     554        if ((result == TMO_FEVR)
     555                || ((main_rly_timer != TMO_FEVR) && (main_rly_timer < result))) {
    551556                result = main_rly_timer;
    552557        }
     
    560565static void main_progress(int interval)
    561566{
    562         if(main_timer != TMO_FEVR){
     567        if (main_timer != TMO_FEVR) {
    563568                main_timer -= interval;
    564                 if(main_timer < 0){
     569                if (main_timer < 0) {
    565570                        main_timer = 0;
    566571                }
    567572        }
    568573
    569         if(main_btn_timer != TMO_FEVR){
     574        if (main_btn_timer != TMO_FEVR) {
    570575                main_btn_timer -= interval;
    571                 if(main_btn_timer < 0){
     576                if (main_btn_timer < 0) {
    572577                        main_btn_timer = 0;
    573578                }
    574579        }
    575580
    576         if(main_lcd_timer != TMO_FEVR){
     581        if (main_lcd_timer != TMO_FEVR) {
    577582                main_lcd_timer -= interval;
    578                 if(main_lcd_timer < 0){
     583                if (main_lcd_timer < 0) {
    579584                        main_lcd_timer = 0;
    580585                }
    581586        }
    582587
    583         if(main_rly_timer != TMO_FEVR){
     588        if (main_rly_timer != TMO_FEVR) {
    584589                main_rly_timer -= interval;
    585                 if(main_rly_timer < 0){
     590                if (main_rly_timer < 0) {
    586591                        main_rly_timer = 0;
    587592                }
     
    605610
    606611        eobjid = ecn_get_eobj(esv);
    607         if(eobjid == EOBJ_NULL){
     612        if (eobjid == EOBJ_NULL) {
    608613                syslog(LOG_ERROR, "ecn_get_eobj");
    609614        }
    610615
    611616        ret = ecn_itr_ini(&enm, esv);
    612         if(ret != E_OK){
     617        if (ret != E_OK) {
    613618                syslog(LOG_ERROR, "ecn_itr_ini");
    614619                return;
    615620        }
    616621
    617         for(;;) {
    618                 while((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
     622        for (;;) {
     623                while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
    619624                        switch (epc) {
    620625                        case 0xD6:
    621                                 switch(main_state){
     626                                switch (main_state) {
    622627                                case main_state_idle:
    623628                                case main_state_search:
     
    630635                                break;
    631636                        case 0xE0:
    632                                 switch(main_state){
     637                                switch (main_state) {
    633638                                case main_state_survey_01:
    634639                                        /* 温度センサー2温度監視 */
     
    660665                        }
    661666                }
    662                 if(ret != E_BOVR){
     667                if (ret != E_BOVR) {
    663668                        syslog(LOG_ERROR, "ecn_itr_nxt");
    664669                        break;
    665670                }
    666                 if(enm.is_eof)
     671                if (enm.is_eof)
    667672                        break;
    668673        }
     
    685690        /* 温度センサー動作状態取得電文作成 */
    686691        ret = ecn_esv_get(&esv, senserids[no - 1], 0x80);
    687         if(ret != E_OK){
     692        if (ret != E_OK) {
    688693                syslog(LOG_ERROR, "ecn_esv_get");
    689694                return;
     
    692697        /* 温度計測値取得追加 */
    693698        ret = ecn_add_epc(esv, 0xE0);
    694         if(ret != E_OK){
     699        if (ret != E_OK) {
    695700                syslog(LOG_ERROR, "ecn_add_epc");
    696701
    697702                ret = ecn_rel_esv(esv);
    698                 if(ret != E_OK){
     703                if (ret != E_OK) {
    699704                        syslog(LOG_ERROR, "ecn_rel_esv");
    700705                }
     
    704709        /* 電文送信 */
    705710        ret = ecn_snd_esv(esv);
    706         if(ret != E_OK){
     711        if (ret != E_OK) {
    707712                syslog(LOG_ERROR, "ecn_snd_esv");
    708713        }
     
    717722        int templ = 0;
    718723
    719         if(temp_sensor_01_data.property80 == 0x30){
     724        if (temp_sensor_01_data.property80 == 0x30) {
    720725                templ += ((((uint16_t)temp_sensor_01_data.propertyE0) & 0xFF) << 8)
    721726                        | ((((uint16_t)temp_sensor_01_data.propertyE0) & 0xFF00) >> 8);
    722727                count++;
    723728        }
    724         if(temp_sensor_02_data.property80 == 0x30){
     729        if (temp_sensor_02_data.property80 == 0x30) {
    725730                templ += ((((uint16_t)temp_sensor_02_data.propertyE0) & 0xFF) << 8)
    726731                        | ((((uint16_t)temp_sensor_02_data.propertyE0) & 0xFF00) >> 8);
    727732                count++;
    728733        }
    729         if(temp_sensor_03_data.property80 == 0x30){
     734        if (temp_sensor_03_data.property80 == 0x30) {
    730735                templ += ((((uint16_t)temp_sensor_03_data.propertyE0) & 0xFF) << 8)
    731736                        | ((((uint16_t)temp_sensor_03_data.propertyE0) & 0xFF00) >> 8);
    732737                count++;
    733738        }
    734         if(temp_sensor_04_data.property80 == 0x30){
     739        if (temp_sensor_04_data.property80 == 0x30) {
    735740                templ += ((((uint16_t)temp_sensor_04_data.propertyE0) & 0xFF) << 8)
    736741                        | ((((uint16_t)temp_sensor_04_data.propertyE0) & 0xFF00) >> 8);
     
    738743        }
    739744
    740         if(count > 0){
     745        if (count > 0) {
    741746                templ = templ / count;
    742                 if(templ < -2732)
     747                if (templ < -2732)
    743748                        main_ave_templ = 0x8000;
    744                 else if(templ > 32766)
     749                else if (templ > 32766)
    745750                        main_ave_templ = 0x7FFF;
    746751                else
     
    748753
    749754                /* FANが停止中の場合 */
    750                 if(!main_tmp_fan_on){
    751                         if(main_ave_templ > (10 * home_air_conditioner_data.propertyB3 + 5)){
     755                if (!main_tmp_fan_on) {
     756                        if (main_ave_templ > (10 * home_air_conditioner_data.propertyB3 + 5)) {
    752757                                main_tmp_fan_on = true;
    753758
     
    758763                }
    759764                /* FANが稼働中の場合 */
    760                 else{
    761                         if(main_ave_templ < (10 * home_air_conditioner_data.propertyB3 - 5)){
     765                else {
     766                        if (main_ave_templ < (10 * home_air_conditioner_data.propertyB3 - 5)) {
    762767                                main_tmp_fan_on = false;
    763768
     
    777782static void main_break_wait(uint8_t *brkdat, int32_t len)
    778783{
     784        char mac_text[30] = "mac: ";
     785        char ipaddr_text[30] = "ipadr: ";
     786        const T_IN4_ADDR *ip4_addr;
     787        int pos;
     788        bool_t prev;
     789
    779790        switch (brkdat[0]) {
    780791        case 0x01:
    781                 // Link up/down
     792                switch (brkdat[1] >> 4) {
     793                case 1:
     794                        break;
     795                case 2:
     796                        break;
     797                }
     798
     799                pos = str_macaddr(&mac_text[4], sizeof(mac_text) - 4, mac_addr, 0);
     800                mac_text[pos + 4] = '\0';
     801                lcd_drawString(&lcd, mac_text, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 11), ST7735_BLACK, ST7735_WHITE);
     802
     803                ip4_addr = in4_get_ifaddr(0);
     804                pos = str_ipv4addr(&ipaddr_text[6], sizeof(ipaddr_text) - 6, ip4_addr, 0);
     805                ipaddr_text[pos + 6] = '\0';
     806                lcd_drawString(&lcd, ipaddr_text, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 12), ST7735_BLACK, ST7735_WHITE);
    782807                break;
    783808        }
    784809
    785810        /* 運転モードが送風の場合、温度によらずFANをON */
    786         if (*brkdat == 0xB0) {
    787                 bool_t prev = main_ctl_fan_on;
     811        switch (*brkdat) {
     812        case 0x80:
     813                if (main_ctl_fan_on) {
     814                        /* リレー出力をON/OFF */
     815                        main_rly_onoff(home_air_conditioner_data.property80 == 0x30);
     816                }
     817                break;
     818        case 0xB0:
     819                prev = main_ctl_fan_on;
    788820                main_ctl_fan_on = home_air_conditioner_data.propertyB0 == 0x45;
    789821
    790822                if (prev != main_ctl_fan_on) {
    791823                        if (main_ctl_fan_on) {
    792                                 /* リレー出力をON */
    793                                 if (!main_tmp_fan_on)
    794                                         main_rly_onoff(true);
     824                                /* リレー出力をON/OFF */
     825                                main_rly_onoff(home_air_conditioner_data.property80 == 0x30);
    795826                        }
    796827                        else {
    797                                 /* リレー出力をOFF */
    798                                 if (!main_tmp_fan_on)
    799                                         main_rly_onoff(false);
     828                                /* リレー出力をON/OFF */
     829                                main_rly_onoff(main_tmp_fan_on);
    800830                        }
    801831                }
     
    813843static void main_timeout()
    814844{
    815         if(main_timer == 0){
     845        if (main_timer == 0) {
    816846                main_ontimer();
    817847        }
    818848
    819         if(main_btn_timer == 0){
     849        if (main_btn_timer == 0) {
    820850                main_btn_ontimer();
    821851        }
    822852
    823         if(main_lcd_timer == 0){
     853        if (main_lcd_timer == 0) {
    824854                main_lcd_ontimer();
    825855        }
    826856
    827         if(main_rly_timer == 0){
     857        if (main_rly_timer == 0) {
    828858                main_rly_ontimer();
    829859        }
     
    834864static void main_ontimer()
    835865{
    836         switch(main_state){
     866        ER ret;
     867
     868        switch (main_state) {
     869        case main_state_start:
     870                /* ECHONETミドルウェアを起動 */
     871                ret = ecn_sta_svc();
     872                if (ret != E_OK) {
     873                        syslog(LOG_ERROR, "ecn_sta_svc");
     874                }
     875
     876                /* 1秒後に温度センサーを探す */
     877                main_state = main_state_idle;
     878                main_timer = 1000 * 1000;
     879                break;
    837880        case main_state_idle:
    838881        case main_state_search:
     
    891934        /* 温度センサー検索 */
    892935        ret = ecn_esv_inf_req(&esv, EOBJ_NULL, 0xD6);
    893         if(ret != E_OK){
     936        if (ret != E_OK) {
    894937                syslog(LOG_ERROR, "ecn_esv_inf_req");
    895938                return;
     
    898941        /* 電文送信 */
    899942        ret = ecn_snd_esv(esv);
    900         if(ret != E_OK){
     943        if (ret != E_OK) {
    901944                syslog(LOG_ERROR, "ecn_snd_esv");
    902945        }
     
    919962        if ((btn == BUTTON_LEFT) && !main_btn1_state) {
    920963                main_btn1_count++;
    921                 if(main_btn1_count > 10){
     964                if (main_btn1_count > 10) {
    922965                        main_btn1_count = 0;
    923966                        main_btn1_state = true;
     
    928971        else if ((btn != BUTTON_LEFT) && main_btn1_state) {
    929972                main_btn1_count++;
    930                 if(main_btn1_count > 10){
     973                if (main_btn1_count > 10) {
    931974                        main_btn1_count = 0;
    932975                        main_btn1_state = false;
     
    939982        if ((btn == BUTTON_RIGHT) && !main_btn2_state) {
    940983                main_btn2_count++;
    941                 if(main_btn2_count > 10){
     984                if (main_btn2_count > 10) {
    942985                        main_btn2_count = 0;
    943986                        main_btn2_state = true;
     
    948991        else if ((btn != BUTTON_RIGHT) && main_btn2_state) {
    949992                main_btn2_count++;
    950                 if(main_btn2_count > 10){
     993                if (main_btn2_count > 10) {
    951994                        main_btn2_count = 0;
    952995                        main_btn2_state = false;
     
    9631006        char temp2[] = "測定温度:+00.0℃";
    9641007        char mode[] = "運転モード:自動  ";
    965         char *mode_texts[] = { "自動  ", "冷房  ", "暖房  ", "除湿  ", "送風  ", "その他" };
     1008        char *mode_texts[] = { "その他", "自動  ", "冷房  ", "暖房  ", "除湿  ", "送風  " };
    9661009        char *btn_texts[] = { "none  ", "down  ", "left  ", "select", "up    ", "right " };
    9671010        int temp, btn;
     
    9791022                        power[11] = 'f';
    9801023                }
    981                 lcd_drawString(&lcd, &power[9], X_LINE_HALF_TO_PIX(&lcd, 6) + 10, Y_ROW_TO_PIX(&lcd, main_lcd_state + 4) + 10, ST7735_BLACK, ST7735_WHITE);
     1024                lcd_drawString(&lcd, &power[9], X_LINE_HALF_TO_PIX(&lcd, 6), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), ST7735_BLACK, ST7735_WHITE);
    9821025                main_lcd_state++;
    9831026                break;
     
    9921035                        temp = -temp;
    9931036                temp1[17] = '0' + temp;
    994                 lcd_drawString(&lcd, &temp1[15], X_LINE_HALF_TO_PIX(&lcd, 10) + 10, Y_ROW_TO_PIX(&lcd, main_lcd_state + 4) + 10, ST7735_BLACK, ST7735_WHITE);
     1037                lcd_drawString(&lcd, &temp1[15], X_LINE_HALF_TO_PIX(&lcd, 10), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), ST7735_BLACK, ST7735_WHITE);
    9951038                main_lcd_state++;
    9961039                break;
     
    10091052                        temp = -temp;
    10101053                temp2[19] = '0' + temp;
    1011                 lcd_drawString(&lcd, &temp2[15], X_LINE_HALF_TO_PIX(&lcd, 10) + 10, Y_ROW_TO_PIX(&lcd, main_lcd_state + 4) + 10, ST7735_BLACK, ST7735_WHITE);
     1054                lcd_drawString(&lcd, &temp2[15], X_LINE_HALF_TO_PIX(&lcd, 10), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), ST7735_BLACK, ST7735_WHITE);
    10121055                main_lcd_state++;
    10131056                break;
    10141057        case 3:
    10151058                temp = home_air_conditioner_data.propertyB0 - 0x40;
    1016                 lcd_drawString(&lcd, mode_texts[temp], X_LINE_HALF_TO_PIX(&lcd, 12) + 10, Y_ROW_TO_PIX(&lcd, main_lcd_state + 4) + 10, ST7735_BLACK, ST7735_WHITE);
     1059                lcd_drawString(&lcd, mode_texts[temp], X_LINE_HALF_TO_PIX(&lcd, 12), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), ST7735_BLACK, ST7735_WHITE);
    10171060                main_lcd_state++;
    10181061                break;
     
    10231066        case 6:
    10241067                btn = main_read_button(&joystick);
    1025                 lcd_drawString(&lcd, btn_texts[btn], X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 10) + 10, ST7735_BLACK, ST7735_WHITE);
     1068                lcd_drawString(&lcd, btn_texts[btn], X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 9), ST7735_BLACK, ST7735_WHITE);
    10261069                main_lcd_state++;
    10271070                break;
     
    10301073                break;
    10311074        case 10:
    1032                 lcd_drawString(&lcd, "エアコン", X_LINE_TO_PIX(&lcd, 9) + 10, Y_ROW_TO_PIX(&lcd, 0) + 10, ST7735_BLACK, ST7735_WHITE);
    1033                 lcd_drawString(&lcd, power, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 0 + 4) + 10, ST7735_BLACK, ST7735_WHITE);
    1034                 lcd_drawString(&lcd, temp1, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 1 + 4) + 10, ST7735_BLACK, ST7735_WHITE);
    1035                 lcd_drawString(&lcd, temp2, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 2 + 4) + 10, ST7735_BLACK, ST7735_WHITE);
    1036                 lcd_drawString(&lcd, mode, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 3 + 4) + 10, ST7735_BLACK, ST7735_WHITE);
     1075                lcd_drawString(&lcd, "エアコン", X_LINE_TO_PIX(&lcd, 6), Y_ROW_TO_PIX(&lcd, 0), ST7735_BLACK, ST7735_WHITE);
     1076                lcd_drawString(&lcd, power, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 0 + 2), ST7735_BLACK, ST7735_WHITE);
     1077                lcd_drawString(&lcd, temp1, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 1 + 2), ST7735_BLACK, ST7735_WHITE);
     1078                lcd_drawString(&lcd, temp2, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 2 + 2), ST7735_BLACK, ST7735_WHITE);
     1079                lcd_drawString(&lcd, mode, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 3 + 2), ST7735_BLACK, ST7735_WHITE);
    10371080                main_lcd_state = 0;
    10381081                break;
     
    10791122
    10801123        /* 押されて戻った時に処理する */
    1081         if(push)
     1124        if (push)
    10821125                return;
    10831126
    10841127        /* 設定温度 */
    1085         if(main_templ > 0)
     1128        if (main_templ > 0)
    10861129                main_templ--;   /* - 1℃ */
    10871130
     
    10901133        /* プロパティ設定電文作成 */
    10911134        ret = ecn_esv_seti(&esv, HOME_AIR_CONDITIONER_EOBJ, 0xB3, 1, p_edt);
    1092         if(ret != E_OK){
     1135        if (ret != E_OK) {
    10931136                syslog(LOG_ERROR, "ecn_esv_seti");
    10941137                return;
     
    10961139
    10971140        /* 電文送信 */
    1098         ecn_snd_esv(esv);
    1099         if(ret != E_OK){
     1141        ret = ecn_snd_esv(esv);
     1142        if (ret != E_OK) {
    11001143                syslog(LOG_ERROR, "ecn_snd_esv");
    11011144        }
     
    11121155
    11131156        /* 押されて戻った時に処理する */
    1114         if(push)
     1157        if (push)
    11151158                return;
    11161159
    11171160        /* 設定温度 */
    1118         if(main_templ < 50)
     1161        if (main_templ < 50)
    11191162                main_templ++;   /* + 1.0℃ */
    11201163
     
    11231166        /* プロパティ設定電文作成 */
    11241167        ret = ecn_esv_seti(&esv, HOME_AIR_CONDITIONER_EOBJ, 0xB3, 1, p_edt);
    1125         if(ret != E_OK){
     1168        if (ret != E_OK) {
    11261169                syslog(LOG_ERROR, "ecn_esv_seti");
    11271170                return;
     
    11291172
    11301173        /* 電文送信 */
    1131         ecn_snd_esv(esv);
    1132         if(ret != E_OK){
     1174        ret = ecn_snd_esv(esv);
     1175        if (ret != E_OK) {
    11331176                syslog(LOG_ERROR, "ecn_snd_esv");
    11341177        }
     
    11371180static void main_rly_onoff(bool_t onoff)
    11381181{
    1139         if(onoff){
     1182        if (onoff) {
    11401183                /* リレー出力をON */
    11411184                gpio_write(&relay_sw, 1);
    11421185        }
    1143         else{
     1186        else {
    11441187                /* リレー出力をOFF */
    11451188                gpio_write(&relay_sw, 0);
     
    11591202        /* 500msパルス出力 */
    11601203        main_rly_state = main_rly_state_on;
    1161         main_rly_timer = 500;
     1204        main_rly_timer = 500 * 1000;
    11621205}
    11631206
     
    11671210static void main_rly_ontimer()
    11681211{
    1169         switch(main_rly_state)
    1170         {
     1212        switch (main_rly_state) {
    11711213        case main_rly_state_off:
    11721214                main_rly_timer = TMO_FEVR;
  • asp3_tinet_ecnl_arm/trunk/app4_aircon/src/main.c

    r359 r364  
    7979
    8080ID ws_api_mailboxid = MAIN_DATAQUEUE;
     81#ifndef NOUSE_MPF_NET_BUF
    8182ID ws_mempoolid = MPF_NET_BUF_256;
     83#endif
    8284
    8385#ifdef IF_ETHER_BTUSB
     
    111113static void main_timeout();
    112114
     115extern int ntshell_exit;
     116
    113117int uart_read(char *buf, int cnt, void *extobj)
    114118{
    115         return serial_rea_dat(SIO_PORTID, (char *)buf, cnt);
     119        struct main_t *obj = (struct main_t *)extobj;
     120        int result;
     121        ER ret;
     122        int timer;
     123
     124        obj->prev = obj->now;
     125
     126        /* タイマー取得 */
     127        timer = main_get_timer();
     128
     129        /* 待ち */
     130        ret = serial_trea_dat(SIO_PORTID, buf, cnt, timer);
     131        if ((ret < 0) && (ret != E_OK) && (ret != E_TMOUT)) {
     132                syslog(LOG_NOTICE, "tslp_tsk ret: %s %d", itron_strerror(ret), timer);
     133                ntshell_exit = 1;
     134                return -1;
     135        }
     136        result = (int)ret;
     137
     138        ret = get_tim(&obj->now);
     139        if (ret != E_OK) {
     140                syslog(LOG_NOTICE, "get_tim ret: %s", itron_strerror(ret));
     141                ntshell_exit = 1;
     142                return -1;
     143        }
     144
     145                        /* 時間経過 */
     146        int elapse = obj->now - obj->prev;
     147        main_progress(elapse);
     148
     149        /* タイムアウト処理 */
     150        main_timeout();
     151
     152        return result;
    116153}
    117154
     
    119156{
    120157        return serial_wri_dat(SIO_PORTID, buf, cnt);
    121 }
    122 
    123 unsigned char ntstdio_xi(struct ntstdio_t *handle)
    124 {
    125         char buf[1];
    126         if(serial_rea_dat(SIO_PORTID, buf, 1) != 1)
    127                 return -EIO;
    128         return buf[0];
    129 }
    130 
    131 void ntstdio_xo(struct ntstdio_t *handle, unsigned char c)
    132 {
    133         char buf[1];
    134         buf[0] = c;
    135         serial_wri_dat(SIO_PORTID, buf, 1);
    136158}
    137159
     
    150172        main_initialize();
    151173
    152         ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);
     174        ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj);
    153175        ntshell_set_prompt(&ntshell, "NTShell>");
    154176        ntshell_execute(&ntshell);
     
    168190        ER ret;
    169191
    170         ntshell_task_init();
     192#ifdef TOPPERS_OMIT_TECS
     193        serial_opn_por(SIO_PORTID);
     194#endif
     195        serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV);
     196
     197        ntshell_task_init(uart_read, uart_write, &main_obj);
    171198
    172199        main_obj.timer = TMO_FEVR;
  • asp3_tinet_ecnl_arm/trunk/app4_aircon/src/main.cfg

    r352 r364  
    5454INCLUDE("tinet/tinet_asp.cfg");
    5555INCLUDE("tinet_main.cfg");
    56 INCLUDE("netinet/ip_igmp.cfg");
    5756
    5857/* DHCP クライアント */
Note: See TracChangeset for help on using the changeset viewer.