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

TINETとSocket APIなどを更新

Location:
asp3_tinet_ecnl_rx/trunk/app4_aircon
Files:
7 edited

Legend:

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

    r345 r364  
    2222                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2323                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    24                                 <option id="toolchain.version" value="4.8.4.201703"/>
     24                                <option id="toolchain.version" value="4.8.4.201803"/>
    2525                        </storageModule>
    2626                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    3737                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.415917897" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    3838                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.1411531115" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    39                                                         <builder buildPath="${workspace_loc:/app4_aircon}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.414701081" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     39                                                        <builder buildPath="${workspace_loc:/app4_aircon}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.414701081" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    4040                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.164426586" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    4141                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.2048565838" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    9191                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    9292                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    93                                 <option id="toolchain.version" value="4.8.4.201703"/>
     93                                <option id="toolchain.version" value="4.8.4.201803"/>
    9494                        </storageModule>
    9595                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    106106                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.1916252483" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    107107                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.2125057454" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    108                                                         <builder buildPath="${workspace_loc:/app4_aircon}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.1414769322" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     108                                                        <builder buildPath="${workspace_loc:/app4_aircon}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.1414769322" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    109109                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.431256842" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    110110                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1885500969" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    160160                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    161161                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    162                                 <option id="toolchain.version" value="4.8.4.201703"/>
     162                                <option id="toolchain.version" value="4.8.4.201803"/>
    163163                        </storageModule>
    164164                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    175175                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.1958295650" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    176176                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.1394526678" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    177                                                         <builder buildPath="${workspace_loc:/app4_aircon}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.1946140985" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     177                                                        <builder buildPath="${workspace_loc:/app4_aircon}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.1946140985" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    178178                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.284884303" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    179179                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1809039592" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    224224        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
    225225        <storageModule moduleId="refreshScope" versionNumber="2">
     226                <configuration configurationName="DebugEther"/>
     227                <configuration configurationName="DebugCitrus"/>
    226228                <configuration configurationName="Debug">
    227229                        <resource resourceType="PROJECT" workspacePath="/app4_aircon"/>
  • asp3_tinet_ecnl_rx/trunk/app4_aircon/Debug/Makefile

    r342 r364  
    155155
    156156#
     157#  gdicサービスの定義
     158#
     159
     160include $(SRCDIR)/gdic/adafruit_ssd1306/Makefile.config
     161
     162#
    157163#  共通コンパイルオプションの定義
    158164#
     
    167173        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    168174endif
    169 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     175CDEFS := $(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
    170176INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    171177        -I$(SRCDIR)/../btstack/include \
     
    175181        -I$(SRCDIR)/../usbhost/src \
    176182        $(INCLUDES)
    177 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     183LDFLAGS := $(LDFLAGS) -L.
    178184LIBS := $(LIBS) $(CXXLIBS)
    179185CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    185191APPLDIRS := $(APPLDIRS) ../../ntshell/tlsf ../../ntshell/fatfs ../../ntshell/ntshell ../../ntshell/ntshell/core ../../ntshell/ntshell/util ../../ntshell/src
    186192APPL_COBJS := $(APPL_COBJS) mbed_api.o netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o mmc_rspi.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
     193APPLDIRS := $(APPLDIRS) ../../ntshell/lcd
     194APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o
     195APPL_CFLAGS := $(APPL_CFLAGS) -DADAFRUIT_SSD1306 -DSHNM12_FONT
    187196
    188197#
     
    209218endif
    210219
    211 
    212 #
    213 #  ネットワークサービスの定義
    214 #
    215 NO_USE_TINET_LIBRARY = true
    216 
    217 #  ネットワークインタフェースの選択、何れか一つ選択する。
    218 NET_IF = ether
    219 
    220 #  イーサネット・ディバイスドライバの選択
    221 NET_DEV = if_btusb
    222 
    223 #  ネットワーク層の選択
    224 #SUPPORT_INET6 = true
    225 SUPPORT_INET4 = true
    226 
    227 #  API に組込む機能の選択
    228 #API_CFG_IP4MAPPED_ADDR = true
    229 
    230 #  トランスポート層の選択
    231 SUPPORT_TCP = true
    232 SUPPORT_UDP = true
    233 
    234 # IGMPを有効に設定
    235 SUPPORT_IGMP = true
    236 
    237 #
    238 #  ネットワークサービスの Makefile のインクルード
    239 #
    240 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     220ifdef TINETDIR
     221        #
     222        #  ネットワークサービスの定義
     223        #
     224        NO_USE_TINET_LIBRARY = true
     225
     226        #  ネットワークインタフェースの選択、何れか一つ選択する。
     227        NET_IF = ether
     228
     229        #  イーサネット・ディバイスドライバの選択
     230        NET_DEV = if_btusb
     231
     232        #  ネットワーク層の選択
     233        #SUPPORT_INET6 = true
     234        SUPPORT_INET4 = true
     235
     236        #  API に組込む機能の選択
     237        #API_CFG_IP4MAPPED_ADDR = true
     238
     239        #  トランスポート層の選択
     240        SUPPORT_TCP = true
     241        SUPPORT_UDP = true
     242
     243        # IGMPを有効に設定
     244        SUPPORT_IGMP = true
     245
     246        #
     247        #  ネットワークサービスの Makefile のインクルード
     248        #
     249        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     250endif
    241251
    242252#
     
    271281#  コンフィギュレータに関する定義
    272282#
    273 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    274 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     283ifndef TINETDIR
     284  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     285  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     286                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     287else
     288  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     289  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    275290                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    276291                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    278293                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    279294                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     295endif
    280296CFG_ASMOBJS := $(CFG_ASMOBJS)
    281297CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    423439
    424440#
     441#  並列makeのための依存関係の定義
     442#
     443$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     444$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     445                                                                                                                | offset.timestamp
     446
     447#
    425448#  特別な依存関係の定義
    426449#
     
    431454#
    432455$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    433         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     456        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    434457                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    435458                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
  • asp3_tinet_ecnl_rx/trunk/app4_aircon/DebugCitrus/Makefile

    r342 r364  
    155155
    156156#
     157#  gdicサービスの定義
     158#
     159
     160include $(SRCDIR)/gdic/adafruit_ssd1306/Makefile.config
     161
     162#
    157163#  共通コンパイルオプションの定義
    158164#
     
    167173        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    168174endif
    169 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     175CDEFS := $(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
    170176INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    171177        -I$(SRCDIR)/../btstack/include \
     
    175181        -I$(SRCDIR)/../usbhost/src \
    176182        $(INCLUDES)
    177 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     183LDFLAGS := $(LDFLAGS) -L.
    178184LIBS := $(LIBS) $(CXXLIBS)
    179185CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    185191APPLDIRS := $(APPLDIRS) ../../ntshell/tlsf ../../ntshell/fatfs ../../ntshell/ntshell ../../ntshell/ntshell/core ../../ntshell/ntshell/util ../../ntshell/src
    186192APPL_COBJS := $(APPL_COBJS) mbed_api.o netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o mmc_rspi.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
     193APPLDIRS := $(APPLDIRS) ../../ntshell/lcd
     194APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o
     195APPL_CFLAGS := $(APPL_CFLAGS) -DADAFRUIT_SSD1306 -DSHNM12_FONT
    187196
    188197#
     
    209218endif
    210219
    211 
    212 #
    213 #  ネットワークサービスの定義
    214 #
    215 NO_USE_TINET_LIBRARY = true
    216 
    217 #  ネットワークインタフェースの選択、何れか一つ選択する。
    218 NET_IF = ether
    219 
    220 #  イーサネット・ディバイスドライバの選択
    221 NET_DEV = if_btusb
    222 
    223 #  ネットワーク層の選択
    224 #SUPPORT_INET6 = true
    225 SUPPORT_INET4 = true
    226 
    227 #  API に組込む機能の選択
    228 #API_CFG_IP4MAPPED_ADDR = true
    229 
    230 #  トランスポート層の選択
    231 SUPPORT_TCP = true
    232 SUPPORT_UDP = true
    233 
    234 # IGMPを有効に設定
    235 SUPPORT_IGMP = true
    236 
    237 #
    238 #  ネットワークサービスの Makefile のインクルード
    239 #
    240 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     220ifdef TINETDIR
     221        #
     222        #  ネットワークサービスの定義
     223        #
     224        NO_USE_TINET_LIBRARY = true
     225
     226        #  ネットワークインタフェースの選択、何れか一つ選択する。
     227        NET_IF = ether
     228
     229        #  イーサネット・ディバイスドライバの選択
     230        NET_DEV = if_btusb
     231
     232        #  ネットワーク層の選択
     233        #SUPPORT_INET6 = true
     234        SUPPORT_INET4 = true
     235
     236        #  API に組込む機能の選択
     237        #API_CFG_IP4MAPPED_ADDR = true
     238
     239        #  トランスポート層の選択
     240        SUPPORT_TCP = true
     241        SUPPORT_UDP = true
     242
     243        # IGMPを有効に設定
     244        SUPPORT_IGMP = true
     245
     246        #
     247        #  ネットワークサービスの Makefile のインクルード
     248        #
     249        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     250endif
    241251
    242252#
     
    271281#  コンフィギュレータに関する定義
    272282#
    273 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    274 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     283ifndef TINETDIR
     284  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     285  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     286                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     287else
     288  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     289  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    275290                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    276291                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    278293                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    279294                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     295endif
    280296CFG_ASMOBJS := $(CFG_ASMOBJS)
    281297CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    423439
    424440#
     441#  並列makeのための依存関係の定義
     442#
     443$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     444$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     445                                                                                                                | offset.timestamp
     446
     447#
    425448#  特別な依存関係の定義
    426449#
     
    431454#
    432455$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    433         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     456        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    434457                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    435458                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
  • asp3_tinet_ecnl_rx/trunk/app4_aircon/DebugEther/Makefile

    r342 r364  
    153153
    154154#
     155#  gdicサービスの定義
     156#
     157
     158include $(SRCDIR)/gdic/adafruit_ssd1306/Makefile.config
     159
     160#
    155161#  共通コンパイルオプションの定義
    156162#
     
    165171        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    166172endif
    167 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     173CDEFS := $(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
    168174INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    169175        -I$(SRCDIR)/../btstack/include \
     
    173179        -I$(SRCDIR)/../usbhost/src \
    174180        $(INCLUDES)
    175 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     181LDFLAGS := $(LDFLAGS) -L.
    176182LIBS := $(LIBS) $(CXXLIBS)
    177183CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    183189APPLDIRS := $(APPLDIRS) ../../ntshell/tlsf ../../ntshell/fatfs ../../ntshell/ntshell ../../ntshell/ntshell/core ../../ntshell/ntshell/util ../../ntshell/src
    184190APPL_COBJS := $(APPL_COBJS) mbed_api.o netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o mmc_rspi.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
     191APPLDIRS := $(APPLDIRS) ../../ntshell/lcd
     192APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o
     193APPL_CFLAGS := $(APPL_CFLAGS) -DADAFRUIT_SSD1306 -DSHNM12_FONT
    185194
    186195#
     
    207216endif
    208217
    209 
    210 #
    211 #  ネットワークサービスの定義
    212 #
    213 NO_USE_TINET_LIBRARY = true
    214 
    215 #  ネットワークインタフェースの選択、何れか一つ選択する。
    216 NET_IF = ether
    217 
    218 #  イーサネット・ディバイスドライバの選択
     218ifdef TINETDIR
     219        #
     220        #  ネットワークサービスの定義
     221        #
     222        NO_USE_TINET_LIBRARY = true
     223
     224        #  ネットワークインタフェースの選択、何れか一つ選択する。
     225        NET_IF = ether
     226
     227        #  イーサネット・ディバイスドライバの選択
    219228        NET_DEV = if_rx62n
    220229
    221 #  ネットワーク層の選択
    222 #SUPPORT_INET6 = true
    223 SUPPORT_INET4 = true
    224 
    225 #  API に組込む機能の選択
    226 #API_CFG_IP4MAPPED_ADDR = true
    227 
    228 #  トランスポート層の選択
    229 SUPPORT_TCP = true
    230 SUPPORT_UDP = true
    231 
    232 # IGMPを有効に設定
    233 SUPPORT_IGMP = true
    234 
    235 #
    236 #  ネットワークサービスの Makefile のインクルード
    237 #
    238 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     230        #  ネットワーク層の選択
     231        #SUPPORT_INET6 = true
     232        SUPPORT_INET4 = true
     233
     234        #  API に組込む機能の選択
     235        #API_CFG_IP4MAPPED_ADDR = true
     236
     237        #  トランスポート層の選択
     238        SUPPORT_TCP = true
     239        SUPPORT_UDP = true
     240
     241        # IGMPを有効に設定
     242        SUPPORT_IGMP = true
     243
     244        #
     245        #  ネットワークサービスの Makefile のインクルード
     246        #
     247        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     248endif
    239249
    240250#
     
    269279#  コンフィギュレータに関する定義
    270280#
    271 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    272 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     281ifndef TINETDIR
     282  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     283  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     284                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     285else
     286  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     287  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    273288                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    274289                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    276291                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    277292                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     293endif
    278294CFG_ASMOBJS := $(CFG_ASMOBJS)
    279295CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    421437
    422438#
     439#  並列makeのための依存関係の定義
     440#
     441$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     442$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     443                                                                                                                | offset.timestamp
     444
     445#
    423446#  特別な依存関係の定義
    424447#
     
    429452#
    430453$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    431         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     454        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    432455                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    433456                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
  • asp3_tinet_ecnl_rx/trunk/app4_aircon/src/echonet_main.c

    r351 r364  
    11/*
    22 *  TOPPERS ECHONET Lite Communication Middleware
    3  * 
    4  *  Copyright (C) 2014 Cores Co., Ltd. Japan
    5  * 
     3 *
     4 *  Copyright (C) 2014-2018 Cores Co., Ltd. Japan
     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 */
     
    5151#include "echonet_cfg.h"
    5252#include "target_kernel_impl.h"
     53#include "adafruit_ssd1306.h"
     54#include "draw_font.h"
    5355
    5456/* TODO: メーカーコードを設定 */
     
    180182
    181183        /* サイズが1以外は受け付けない */
    182         if(size != 1)
     184        if (size != 1)
    183185                return 0;
    184186
    185187        *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src);
    186188
    187         switch(*(uint8_t *)src){
     189        switch (*(uint8_t *)src) {
    188190        /* ONの場合 */
    189191        case 0x30:
     
    194196                data[0] = 0x80;
    195197                ret = ecn_brk_wai(data, sizeof(data));
    196                 if(ret != E_OK){
     198                if (ret != E_OK) {
    197199                        syslog(LOG_ERROR, "ecn_brk_wai");
    198200                        return 2;
     
    213215{
    214216        /* サイズが1以外は受け付けない */
    215         if(size != 1)
     217        if (size != 1)
    216218                return 0;
    217219
    218220        *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src);
    219221
    220         switch(*(uint8_t *)src){
     222        switch (*(uint8_t *)src) {
    221223        /* 異常発生ありの場合 */
    222224        case 0x41:
     
    242244
    243245        /* サイズが1以外は受け付けない */
    244         if(size != 1)
     246        if (size != 1)
    245247                return 0;
    246248
    247         switch(*(uint8_t *)src){
     249        switch (*(uint8_t *)src) {
    248250        /* 自動の場合 */
    249251        case 0x41:
     
    262264                data[0] = 0xB0;
    263265                ret = ecn_brk_wai(data, sizeof(data));
    264                 if(ret != E_OK){
     266                if (ret != E_OK) {
    265267                        syslog(LOG_ERROR, "ecn_brk_wai");
    266268                        return 2;
     
    284286
    285287        /* サイズが1以外は受け付けない */
    286         if(size != 1)
     288        if (size != 1)
    287289                return 0;
    288290
    289291        /* 0℃~50℃ */
    290         if((*(uint8_t *)src >= 0x00) && (*(uint8_t *)src <= 0x32)){
     292        if ((*(uint8_t *)src >= 0x00) && (*(uint8_t *)src <= 0x32)) {
    291293                *((uint8_t *)item->exinf) = *((uint8_t *)src);
    292294                /* メインタスクに通知 */
    293295                data[0] = 0xB3;
    294296                ret = ecn_brk_wai(data, sizeof(data));
    295                 if(ret != E_OK){
     297                if (ret != E_OK) {
    296298                        syslog(LOG_ERROR, "ecn_brk_wai");
    297299                        return 2;
     
    299301        }
    300302        /* 上記以外は受け付けない */
    301         else{
     303        else {
    302304                return 0;
    303305        }
     
    329331
    330332        ret2 = get_tim(&now);
    331         if (ret2 != E_OK){
     333        if (ret2 != E_OK) {
    332334                syslog(LOG_ERROR, "get_tim");
    333335                return;
    334336        }
    335337
    336         for(;;){
     338        for (;;) {
    337339                prev = now;
    338340
     
    342344                /* 応答電文待ち */
    343345                ret = ecn_trcv_esv(&esv, timer);
    344                 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)){
     346                if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {
    345347                        syslog(LOG_ERROR, "ecn_trcv_esv");
    346348                        break;
     
    348350
    349351                ret2 = get_tim(&now);
    350                 if (ret2 != E_OK){
     352                if (ret2 != E_OK) {
    351353                        syslog(LOG_ERROR, "get_tim");
    352354                        break;
     
    363365                        /* 領域解放 */
    364366                        ret = ecn_rel_esv(esv);
    365                         if (ret != E_OK){
     367                        if (ret != E_OK) {
    366368                                syslog(LOG_ERROR, "ecn_rel_esv");
    367369                                break;
     
    372374                        /* 応答電文待ちの割り込みデータ取得 */
    373375                        ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len);
    374                         if (ret != E_OK){
     376                        if (ret != E_OK) {
    375377                                syslog(LOG_ERROR, "ecn_get_brk_dat");
    376378                                break;
     
    382384                        /* 領域解放 */
    383385                        ret = ecn_rel_esv(esv);
    384                         if (ret != E_OK){
     386                        if (ret != E_OK) {
    385387                                syslog(LOG_ERROR, "ecn_rel_esv");
    386388                                break;
     
    393395}
    394396
    395 bool_t started = false;
    396 
    397397void echonet_change_netif_link(uint8_t link_up, uint8_t up)
    398398{
     
    402402                return;
    403403
    404         if (up && !started) {
    405                 started = true;
    406 
    407                 /* ECHONETミドルウェアを起動 */
    408                 ret = ecn_sta_svc();
    409                 if (ret != E_OK)
    410                         return;
    411 
    412                 /* ECHONETミドルウェアを起動するのを待つ */
    413                 dly_tsk(100);
     404        if (up) {
     405                /* インスタンスリスト通知の送信 */
     406                ret = ecn_ntf_inl();
     407                if (ret != E_OK) {
     408                        syslog(LOG_ERROR, "ecn_ntf_inl");
     409                }
    414410        }
    415411
     
    425421}
    426422
    427 enum main_state_t{
     423enum main_state_t {
     424        main_state_start,
    428425        main_state_idle,
    429426        main_state_search,
     
    436433
    437434int main_timer = TMO_FEVR;
    438 enum main_state_t main_state = main_state_idle;
     435enum main_state_t main_state = main_state_start;
    439436int16_t main_ave_templ;
    440437bool_t main_tmp_fan_on;
     
    443440int main_btn_timer = TMO_FEVR;
    444441
    445 enum main_led_state_t{
    446         main_led_state_idle,
    447         main_led_state_on_o,
    448         main_led_state_on_n,
    449         main_led_state_off_o,
    450         main_led_state_off_f1,
    451         main_led_state_off_f2,
    452         main_led_state_space1,
    453         main_led_state_templ_10,
    454         main_led_state_templ_1,
    455         main_led_state_space2,
    456         main_led_state_ave_templ_10,
    457         main_led_state_ave_templ_1,
    458         main_led_state_space3,
    459         main_led_state_mode,
    460         main_led_state_space4,
    461 };
    462 
    463 int main_led_timer = TMO_FEVR;
    464 enum main_led_state_t main_led_state = main_led_state_idle;
    465 bool_t main_led_update;
     442int main_lcd_timer = TMO_FEVR;
     443int main_lcd_state = 0;
    466444
    467445bool_t main_btn1_state;
     
    470448int main_btn2_count = 0;
    471449
    472 enum main_rly_state_t{
     450LCD_Handler_t lcd;
     451
     452enum main_rly_state_t {
    473453        main_rly_state_off,
    474454        main_rly_state_on
     
    486466        uint8_t btn1, btn2;
    487467
    488         /* 7segを"0"と表示 */
    489         sil_wrb_mem((uint8_t *)0x0008C02D, 0xC0);
    490 
    491         /* 1秒後に温度センサーを探す */
     468        /* ECHONETミドルウェアを起動するのを待つ */
     469        main_state = main_state_start;
    492470        main_timer = 1000 * 1000;
    493471
    494472        /* 10ms後にボタン状態を確認 */
    495473        main_btn_timer = 10 * 1000;
    496 
    497         if(home_air_conditioner_data.property80 == 0x30)
    498                 main_led_state = main_led_state_on_o;
    499         else
    500                 main_led_state = main_led_state_off_o;
    501         main_led_timer = 0;
    502474
    503475        /* ボタン状態読み込み */
     
    507479        main_btn2_state = (btn2 & 0x80) != 0;
    508480
     481        i2c_init(&lcd.i2c, I2C_SDA, I2C_SCL);
     482        i2c_frequency(&lcd.i2c, 100000);
     483
     484        lcd_init3(&lcd, NC);
     485
     486        lcd_begin(&lcd, SSD1306_SWITCHCAPVCC, SSD1306_I2C_ADDRESS, true);
     487
     488        lcd_clearDisplay(&lcd);
     489
     490        lcd_display(&lcd);
     491
     492        /* 1秒後にLCD表示を更新 */
     493        main_lcd_state = 10;
     494        main_lcd_timer = 1000 * 1000;
     495
     496        /* メインタスクを起動 */
    509497        ER ret = act_tsk(MAIN_TASK);
    510498        if (ret != E_OK) {
     
    520508        int result = main_timer;
    521509
    522         if((result == TMO_FEVR)
    523                 || ((main_btn_timer != TMO_FEVR) && (main_btn_timer < result))){
     510        if ((result == TMO_FEVR)
     511                || ((main_btn_timer != TMO_FEVR) && (main_btn_timer < result))) {
    524512                result = main_btn_timer;
    525513        }
    526514
    527         if((result == TMO_FEVR)
    528                 || ((main_led_timer != TMO_FEVR) && (main_led_timer < result))){
    529                 result = main_led_timer;
    530         }
    531 
    532         if((result == TMO_FEVR)
    533                 || ((main_rly_timer != TMO_FEVR) && (main_rly_timer < result))){
     515        if ((result == TMO_FEVR)
     516                || ((main_lcd_timer != TMO_FEVR) && (main_lcd_timer < result))) {
     517                result = main_lcd_timer;
     518        }
     519
     520        if ((result == TMO_FEVR)
     521                || ((main_rly_timer != TMO_FEVR) && (main_rly_timer < result))) {
    534522                result = main_rly_timer;
    535523        }
     
    543531static void main_progress(int interval)
    544532{
    545         if(main_timer != TMO_FEVR){
     533        if (main_timer != TMO_FEVR) {
    546534                main_timer -= interval;
    547                 if(main_timer < 0){
     535                if (main_timer < 0) {
    548536                        main_timer = 0;
    549537                }
    550538        }
    551539
    552         if(main_btn_timer != TMO_FEVR){
     540        if (main_btn_timer != TMO_FEVR) {
    553541                main_btn_timer -= interval;
    554                 if(main_btn_timer < 0){
     542                if (main_btn_timer < 0) {
    555543                        main_btn_timer = 0;
    556544                }
    557545        }
    558546
    559         if(main_led_timer != TMO_FEVR){
    560                 main_led_timer -= interval;
    561                 if(main_led_timer < 0){
    562                         main_led_timer = 0;
    563                 }
    564         }
    565 
    566         if(main_rly_timer != TMO_FEVR){
     547        if (main_lcd_timer != TMO_FEVR) {
     548                main_lcd_timer -= interval;
     549                if (main_lcd_timer < 0) {
     550                        main_lcd_timer = 0;
     551                }
     552        }
     553
     554        if (main_rly_timer != TMO_FEVR) {
    567555                main_rly_timer -= interval;
    568                 if(main_rly_timer < 0){
     556                if (main_rly_timer < 0) {
    569557                        main_rly_timer = 0;
    570558                }
     
    588576
    589577        eobjid = ecn_get_eobj(esv);
    590         if(eobjid == EOBJ_NULL){
     578        if (eobjid == EOBJ_NULL) {
    591579                syslog(LOG_ERROR, "ecn_get_eobj");
    592580        }
    593581
    594582        ret = ecn_itr_ini(&enm, esv);
    595         if(ret != E_OK){
     583        if (ret != E_OK) {
    596584                syslog(LOG_ERROR, "ecn_itr_ini");
    597585                return;
    598586        }
    599587
    600         for(;;) {
    601                 while((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
     588        for (;;) {
     589                while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
    602590                        switch (epc) {
    603591                        case 0xD6:
    604                                 switch(main_state){
     592                                switch (main_state) {
    605593                                case main_state_idle:
    606594                                case main_state_search:
     
    613601                                break;
    614602                        case 0xE0:
    615                                 switch(main_state){
     603                                switch (main_state) {
    616604                                case main_state_survey_01:
    617605                                        /* 温度センサー2温度監視 */
     
    643631                        }
    644632                }
    645                 if(ret != E_BOVR){
     633                if (ret != E_BOVR) {
    646634                        syslog(LOG_ERROR, "ecn_itr_nxt");
    647635                        break;
    648636                }
    649                 if(enm.is_eof)
     637                if (enm.is_eof)
    650638                        break;
    651639        }
     
    668656        /* 温度センサー動作状態取得電文作成 */
    669657        ret = ecn_esv_get(&esv, senserids[no - 1], 0x80);
    670         if(ret != E_OK){
     658        if (ret != E_OK) {
    671659                syslog(LOG_ERROR, "ecn_esv_get");
    672660                return;
     
    675663        /* 温度計測値取得追加 */
    676664        ret = ecn_add_epc(esv, 0xE0);
    677         if(ret != E_OK){
     665        if (ret != E_OK) {
    678666                syslog(LOG_ERROR, "ecn_add_epc");
    679667
    680668                ret = ecn_rel_esv(esv);
    681                 if(ret != E_OK){
     669                if (ret != E_OK) {
    682670                        syslog(LOG_ERROR, "ecn_rel_esv");
    683671                }
     
    687675        /* 電文送信 */
    688676        ret = ecn_snd_esv(esv);
    689         if(ret != E_OK){
     677        if (ret != E_OK) {
    690678                syslog(LOG_ERROR, "ecn_snd_esv");
    691679        }
     
    700688        int templ = 0;
    701689
    702         if(temp_sensor_01_data.property80 == 0x30){
     690        if (temp_sensor_01_data.property80 == 0x30) {
    703691                templ += ((((uint16_t)temp_sensor_01_data.propertyE0) & 0xFF) << 8)
    704692                        | ((((uint16_t)temp_sensor_01_data.propertyE0) & 0xFF00) >> 8);
    705693                count++;
    706694        }
    707         if(temp_sensor_02_data.property80 == 0x30){
     695        if (temp_sensor_02_data.property80 == 0x30) {
    708696                templ += ((((uint16_t)temp_sensor_02_data.propertyE0) & 0xFF) << 8)
    709697                        | ((((uint16_t)temp_sensor_02_data.propertyE0) & 0xFF00) >> 8);
    710698                count++;
    711699        }
    712         if(temp_sensor_03_data.property80 == 0x30){
     700        if (temp_sensor_03_data.property80 == 0x30) {
    713701                templ += ((((uint16_t)temp_sensor_03_data.propertyE0) & 0xFF) << 8)
    714702                        | ((((uint16_t)temp_sensor_03_data.propertyE0) & 0xFF00) >> 8);
    715703                count++;
    716704        }
    717         if(temp_sensor_04_data.property80 == 0x30){
     705        if (temp_sensor_04_data.property80 == 0x30) {
    718706                templ += ((((uint16_t)temp_sensor_04_data.propertyE0) & 0xFF) << 8)
    719707                        | ((((uint16_t)temp_sensor_04_data.propertyE0) & 0xFF00) >> 8);
     
    721709        }
    722710
    723         if(count > 0){
     711        if (count > 0) {
    724712                templ = templ / count;
    725                 if(templ < -2732)
     713                if (templ < -2732)
    726714                        main_ave_templ = 0x8000;
    727                 else if(templ > 32766)
     715                else if (templ > 32766)
    728716                        main_ave_templ = 0x7FFF;
    729717                else
     
    731719
    732720                /* FANが停止中の場合 */
    733                 if(!main_tmp_fan_on){
    734                         if(main_ave_templ > (10 * home_air_conditioner_data.propertyB3 + 5)){
     721                if (!main_tmp_fan_on) {
     722                        if (main_ave_templ > (10 * home_air_conditioner_data.propertyB3 + 5)) {
    735723                                main_tmp_fan_on = true;
    736724
     
    741729                }
    742730                /* FANが稼働中の場合 */
    743                 else{
    744                         if(main_ave_templ < (10 * home_air_conditioner_data.propertyB3 - 5)){
     731                else {
     732                        if (main_ave_templ < (10 * home_air_conditioner_data.propertyB3 - 5)) {
    745733                                main_tmp_fan_on = false;
    746734
     
    760748static void main_break_wait(uint8_t *brkdat, int32_t len)
    761749{
    762         switch(main_led_state){
    763         case main_led_state_idle:
    764                 switch (brkdat[0]) {
    765                 case 0x01:
    766                         // Link up/down
    767                         break;
    768                 case 0x80:
    769                 case 0xB0:
    770                 case 0xB3:
    771                         if(home_air_conditioner_data.property80 == 0x30)
    772                                 main_led_state = main_led_state_on_o;
    773                         else
    774                                 main_led_state = main_led_state_off_o;
    775                         main_led_timer = 0;
    776                         break;
    777                 }
    778                 break;
    779         default:
    780                 main_led_update = true;
    781                 break;
     750        bool_t prev;
     751
     752        if (brkdat[0] == 0x01) {
     753                // Link up/down
     754                return;
    782755        }
    783756
    784757        /* 運転モードが送風の場合、温度によらずFANをON */
    785         if (*brkdat == 0xB0) {
    786                 bool_t prev = main_ctl_fan_on;
     758        switch (*brkdat) {
     759        case 0x80:
     760                if (main_ctl_fan_on) {
     761                        /* リレー出力をON/OFF */
     762                        main_rly_onoff(home_air_conditioner_data.property80 == 0x30);
     763                }
     764                break;
     765        case 0xB0:
     766                prev = main_ctl_fan_on;
    787767                main_ctl_fan_on = home_air_conditioner_data.propertyB0 == 0x45;
    788768
    789769                if (prev != main_ctl_fan_on) {
    790770                        if (main_ctl_fan_on) {
    791                                 /* リレー出力をON */
    792                                 if (!main_tmp_fan_on)
    793                                         main_rly_onoff(true);
     771                                /* リレー出力をON/OFF */
     772                                main_rly_onoff(home_air_conditioner_data.property80 == 0x30);
    794773                        }
    795774                        else {
    796                                 /* リレー出力をOFF */
    797                                 if (!main_tmp_fan_on)
    798                                         main_rly_onoff(false);
     775                                /* リレー出力をON/OFF */
     776                                main_rly_onoff(main_tmp_fan_on);
    799777                        }
    800778                }
     
    804782static void main_ontimer();
    805783static void main_btn_ontimer();
    806 static void main_led_ontimer();
     784static void main_lcd_ontimer();
    807785static void main_rly_ontimer();
    808786
     
    812790static void main_timeout()
    813791{
    814         if(main_timer == 0){
     792        if (main_timer == 0) {
    815793                main_ontimer();
    816794        }
    817795
    818         if(main_btn_timer == 0){
     796        if (main_btn_timer == 0) {
    819797                main_btn_ontimer();
    820798        }
    821799
    822         if(main_led_timer == 0){
    823                 main_led_ontimer();
    824         }
    825 
    826         if(main_rly_timer == 0){
     800        if (main_lcd_timer == 0) {
     801                main_lcd_ontimer();
     802        }
     803
     804        if (main_rly_timer == 0) {
    827805                main_rly_ontimer();
    828806        }
     
    833811static void main_ontimer()
    834812{
    835         switch(main_state){
     813        ER ret;
     814
     815        switch (main_state) {
     816        case main_state_start:
     817                /* ECHONETミドルウェアを起動 */
     818                ret = ecn_sta_svc();
     819                if (ret != E_OK) {
     820                        syslog(LOG_ERROR, "ecn_sta_svc");
     821                }
     822
     823                /* 1秒後に温度センサーを探す */
     824                main_state = main_state_idle;
     825                main_timer = 1000 * 1000;
     826                break;
    836827        case main_state_idle:
    837828        case main_state_search:
     
    890881        /* 温度センサー検索 */
    891882        ret = ecn_esv_inf_req(&esv, EOBJ_NULL, 0xD6);
    892         if(ret != E_OK){
     883        if (ret != E_OK) {
    893884                syslog(LOG_ERROR, "ecn_esv_inf_req");
    894885                return;
     
    897888        /* 電文送信 */
    898889        ret = ecn_snd_esv(esv);
    899         if(ret != E_OK){
     890        if (ret != E_OK) {
    900891                syslog(LOG_ERROR, "ecn_snd_esv");
    901892        }
     
    917908
    918909        /* ボタン1の処理 */
    919         if(((btn1 & 0x20) != 0) && !main_btn1_state){
     910        if (((btn1 & 0x20) != 0) && !main_btn1_state) {
    920911                main_btn1_count++;
    921                 if(main_btn1_count > 10){
     912                if (main_btn1_count > 10) {
    922913                        main_btn1_count = 0;
    923914                        main_btn1_state = true;
     
    926917                }
    927918        }
    928         else if(((btn1 & 0x20) == 0) && main_btn1_state){
     919        else if (((btn1 & 0x20) == 0) && main_btn1_state) {
    929920                main_btn1_count++;
    930                 if(main_btn1_count > 10){
     921                if (main_btn1_count > 10) {
    931922                        main_btn1_count = 0;
    932923                        main_btn1_state = false;
     
    937928
    938929        /* ボタン2の処理 */
    939         if(((btn2 & 0x80) != 0) && !main_btn2_state){
     930        if (((btn2 & 0x80) != 0) && !main_btn2_state) {
    940931                main_btn2_count++;
    941                 if(main_btn2_count > 10){
     932                if (main_btn2_count > 10) {
    942933                        main_btn2_count = 0;
    943934                        main_btn2_state = true;
     
    946937                }
    947938        }
    948         else if(((btn2 & 0x80) == 0) && main_btn2_state){
     939        else if (((btn2 & 0x80) == 0) && main_btn2_state) {
    949940                main_btn2_count++;
    950                 if(main_btn2_count > 10){
     941                if (main_btn2_count > 10) {
    951942                        main_btn2_count = 0;
    952943                        main_btn2_state = false;
     
    957948}
    958949
    959 uint8_t led_num[] = { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 };
    960 uint8_t led_onf[] = { 0xA3, 0xAB, 0x8E };
    961 uint8_t led_abcdef[] = { 0xF7, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E };
    962 
    963 static void main_led_ontimer()
    964 {
     950static void main_lcd_ontimer()
     951{
     952        char power[] = "電源:off";
     953        char temp1[] = "設定温度:+00℃";
     954        char temp2[] = "測定温度:+00.0℃";
     955        char mode[] = "運転モード:自動  ";
     956        char *mode_texts[] = { "その他", "自動  ", "冷房  ", "暖房  ", "除湿  ", "送風  " };
     957        char *btn_texts[] = { "none  ", "down  ", "left  ", "select", "up    ", "right " };
    965958        int temp;
    966959
    967         switch(main_led_state){
    968         case main_led_state_idle:
    969                 /* 7segに' 'を表示 */
    970                 sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    971                 main_led_timer = TMO_FEVR;
    972                 return;
    973         case main_led_state_on_o:
    974                 /* 7segに'o'を表示 */
    975                 sil_wrb_mem((uint8_t *)0x0008C02D, led_onf[0]);
    976                 main_led_state = main_led_state_on_n;
    977                 break;
    978         case main_led_state_on_n:
    979                 /* 7segに'n'を表示 */
    980                 sil_wrb_mem((uint8_t *)0x0008C02D, led_onf[1]);
    981                 main_led_state = main_led_state_space1;
    982                 break;
    983         case main_led_state_off_o:
    984                 /* 7segに'o'を表示 */
    985                 sil_wrb_mem((uint8_t *)0x0008C02D, led_onf[0]);
    986                 main_led_state = main_led_state_off_f1;
    987                 break;
    988         case main_led_state_off_f1:
    989                 /* 7segに'f'を表示 */
    990                 sil_wrb_mem((uint8_t *)0x0008C02D, led_onf[2]);
    991                 main_led_state = main_led_state_off_f2;
    992                 break;
    993         case main_led_state_off_f2:
    994                 /* 7segに'f'を表示 */
    995                 sil_wrb_mem((uint8_t *)0x0008C02D, led_onf[2]);
    996                 main_led_state = main_led_state_space1;
    997                 break;
    998         case main_led_state_space1:
    999                 /* 7segに' 'を表示 */
    1000                 sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    1001                 main_led_state = main_led_state_templ_10;
    1002                 break;
    1003         case main_led_state_templ_10:
     960        switch (main_lcd_state) {
     961        case 0:
     962                if (home_air_conditioner_data.property80 == 0x30) {
     963                        power[9] = 'o';
     964                        power[10] = 'n';
     965                        power[11] = ' ';
     966                }
     967                else {
     968                        power[9] = 'o';
     969                        power[10] = 'f';
     970                        power[11] = 'f';
     971                }
     972                lcd_drawString(&lcd, &power[9], X_LINE_HALF_TO_PIX(&lcd, 6), Y_ROW_TO_PIX(&lcd, main_lcd_state + 1), WHITE, BLACK);
     973                main_lcd_state++;
     974                break;
     975        case 1:
     976                temp1[15] = (home_air_conditioner_data.propertyB3 >= 0) ? ' ' : '-';
    1004977                temp = (home_air_conditioner_data.propertyB3 / 10) % 10;
    1005                 if(temp < 0)
     978                if (temp < 0)
    1006979                        temp = -temp;
    1007                 /* 7segに温度設定10の位を表示 */
    1008                 sil_wrb_mem((uint8_t *)0x0008C02D, led_num[temp]);
    1009                 main_led_state = main_led_state_templ_1;
    1010                 break;
    1011         case main_led_state_templ_1:
     980                temp1[16] = '0' + temp;
    1012981                temp = (home_air_conditioner_data.propertyB3 / 1) % 10;
    1013                 if(temp < 0)
     982                if (temp < 0)
    1014983                        temp = -temp;
    1015                 /* 7segに温度設定1の位を表示 */
    1016                 sil_wrb_mem((uint8_t *)0x0008C02D, led_num[temp] & (~0x80));
    1017                 main_led_state = main_led_state_space2;
    1018                 break;
    1019         case main_led_state_space2:
    1020                 /* 7segに' 'を表示 */
    1021                 sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    1022                 main_led_state = main_led_state_ave_templ_10;
    1023                 break;
    1024         case main_led_state_ave_templ_10:
     984                temp1[17] = '0' + temp;
     985                lcd_drawString(&lcd, &temp1[15], X_LINE_HALF_TO_PIX(&lcd, 10), Y_ROW_TO_PIX(&lcd, main_lcd_state + 1), WHITE, BLACK);
     986                main_lcd_state++;
     987                break;
     988        case 2:
     989                temp2[15] = (main_ave_templ >= 0) ? ' ' : '-';
    1025990                temp = (main_ave_templ / 100) % 10;
    1026                 if(temp < 0)
     991                if (temp < 0)
    1027992                        temp = -temp;
    1028                 /* 7segに温度計測値10の位を表示 */
    1029                 sil_wrb_mem((uint8_t *)0x0008C02D, led_num[temp]);
    1030                 main_led_state = main_led_state_ave_templ_1;
    1031                 break;
    1032         case main_led_state_ave_templ_1:
     993                temp2[16] = '0' + temp;
    1033994                temp = (main_ave_templ / 10) % 10;
    1034                 if(temp < 0)
     995                if (temp < 0)
    1035996                        temp = -temp;
    1036                 /* 7segに温度計測値1の位を表示 */
    1037                 sil_wrb_mem((uint8_t *)0x0008C02D, led_num[temp] & (~0x80));
    1038                 main_led_state = main_led_state_space3;
    1039                 break;
    1040         case main_led_state_space3:
    1041                 /* 7segに' 'を表示 */
    1042                 sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    1043                 main_led_state = main_led_state_mode;
    1044                 break;
    1045         case main_led_state_mode:
     997                temp2[17] = '0' + temp;
     998                temp = (main_ave_templ / 1) % 10;
     999                if (temp < 0)
     1000                        temp = -temp;
     1001                temp2[19] = '0' + temp;
     1002                lcd_drawString(&lcd, &temp2[15], X_LINE_HALF_TO_PIX(&lcd, 10), Y_ROW_TO_PIX(&lcd, main_lcd_state + 1), WHITE, BLACK);
     1003                main_lcd_state++;
     1004                break;
     1005        case 3:
    10461006                temp = home_air_conditioner_data.propertyB0 - 0x40;
    1047                 /* 7segに運転モードを表示 */
    1048                 sil_wrb_mem((uint8_t *)0x0008C02D, led_abcdef[temp]);
    1049                 main_led_state = main_led_state_space4;
    1050                 break;
    1051         case main_led_state_space4:
    1052                 if(home_air_conditioner_data.property80 == 0x30)
    1053                         /* 7segに'.'を表示 */
    1054                         sil_wrb_mem((uint8_t *)0x0008C02D, 0x7F);
    1055                 else
    1056                         /* 7segに' 'を表示 */
    1057                         sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    1058 
    1059                 if(main_led_update){
    1060                         main_led_update = false;
    1061 
    1062                         if(home_air_conditioner_data.property80 == 0x30)
    1063                                 main_led_state = main_led_state_on_o;
    1064                         else
    1065                                 main_led_state = main_led_state_off_o;
    1066                 }
    1067                 else{
    1068                         main_led_state = main_led_state_idle;
    1069                         main_led_timer = TMO_FEVR;
    1070                         return;
    1071                 }
     1007                lcd_drawString(&lcd, mode_texts[temp], X_LINE_HALF_TO_PIX(&lcd, 12), Y_ROW_TO_PIX(&lcd, main_lcd_state + 1), WHITE, BLACK);
     1008                main_lcd_state++;
     1009                break;
     1010        case 4:
     1011        case 5:
     1012        case 6:
     1013                main_lcd_state++;
     1014                break;
     1015        case 9:
     1016                lcd_display(&lcd);
     1017                main_lcd_state = 0;
     1018                break;
     1019        case 10:
     1020                lcd_drawString(&lcd, "エアコン", X_LINE_TO_PIX(&lcd, 6), Y_ROW_TO_PIX(&lcd, 0), WHITE, BLACK);
     1021                lcd_drawString(&lcd, power, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 0 + 1), WHITE, BLACK);
     1022                lcd_drawString(&lcd, temp1, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 1 + 1), WHITE, BLACK);
     1023                lcd_drawString(&lcd, temp2, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 2 + 1), WHITE, BLACK);
     1024                lcd_drawString(&lcd, mode, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 3 + 1), WHITE, BLACK);
     1025                lcd_display(&lcd);
     1026                main_lcd_state = 0;
    10721027                break;
    10731028        default:
    1074                 /* 7segに' 'を表示 */
    1075                 sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    1076                 main_led_state = main_led_state_idle;
    1077                 main_led_timer = TMO_FEVR;
    1078                 return;
    1079         }
    1080 
    1081         main_led_timer = 500 * 1000;
     1029                main_lcd_state++;
     1030                break;
     1031        }
     1032
     1033        /* 100ms後にLCD表示を更新 */
     1034        main_lcd_timer = 100 * 1000;
    10821035}
    10831036
     
    10941047
    10951048        /* 押されて戻った時に処理する */
    1096         if(push)
     1049        if (push)
    10971050                return;
    10981051
    10991052        /* 設定温度 */
    1100         if(main_templ > 0)
     1053        if (main_templ > 0)
    11011054                main_templ--;   /* - 1℃ */
    11021055
     
    11051058        /* プロパティ設定電文作成 */
    11061059        ret = ecn_esv_seti(&esv, HOME_AIR_CONDITIONER_EOBJ, 0xB3, 1, p_edt);
    1107         if(ret != E_OK){
     1060        if (ret != E_OK) {
    11081061                syslog(LOG_ERROR, "ecn_esv_seti");
    11091062                return;
     
    11111064
    11121065        /* 電文送信 */
    1113         ecn_snd_esv(esv);
    1114         if(ret != E_OK){
     1066        ret = ecn_snd_esv(esv);
     1067        if (ret != E_OK) {
    11151068                syslog(LOG_ERROR, "ecn_snd_esv");
    11161069        }
     
    11271080
    11281081        /* 押されて戻った時に処理する */
    1129         if(push)
     1082        if (push)
    11301083                return;
    11311084
    11321085        /* 設定温度 */
    1133         if(main_templ < 50)
     1086        if (main_templ < 50)
    11341087                main_templ++;   /* + 1.0℃ */
    11351088
     
    11381091        /* プロパティ設定電文作成 */
    11391092        ret = ecn_esv_seti(&esv, HOME_AIR_CONDITIONER_EOBJ, 0xB3, 1, p_edt);
    1140         if(ret != E_OK){
     1093        if (ret != E_OK) {
    11411094                syslog(LOG_ERROR, "ecn_esv_seti");
    11421095                return;
     
    11441097
    11451098        /* 電文送信 */
    1146         ecn_snd_esv(esv);
    1147         if(ret != E_OK){
     1099        ret = ecn_snd_esv(esv);
     1100        if (ret != E_OK) {
    11481101                syslog(LOG_ERROR, "ecn_snd_esv");
    11491102        }
     
    11521105static void main_rly_onoff(bool_t onoff)
    11531106{
    1154         if(onoff){
     1107        if (onoff) {
    11551108                /* リレー出力をON */
    11561109                sil_wrb_mem((uint8_t *)0x0008C022, sil_reb_mem((uint8_t *)0x0008C022) | 0x20);
    11571110        }
    1158         else{
     1111        else {
    11591112                /* リレー出力をOFF */
    11601113                sil_wrb_mem((uint8_t *)0x0008C022, sil_reb_mem((uint8_t *)0x0008C022) & ~0x20);
     
    11821135static void main_rly_ontimer()
    11831136{
    1184         switch(main_rly_state)
    1185         {
     1137        switch (main_rly_state) {
    11861138        case main_rly_state_off:
    11871139                main_rly_timer = TMO_FEVR;
  • asp3_tinet_ecnl_rx/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_rx/trunk/app4_aircon/src/main.cfg

    r342 r364  
    5454INCLUDE("tinet/tinet_asp.cfg");
    5555INCLUDE("tinet_main.cfg");
    56 INCLUDE("netinet/ip_igmp.cfg");
    5756
    5857/* DHCP クライアント */
     
    7776INCLUDE("ffarch.cfg");
    7877
     78/* mbed */
     79INCLUDE("mbed_api.cfg");
     80
    7981#ifdef IF_ETHER_BTUSB
    8082INCLUDE("usb_hbth.cfg");
Note: See TracChangeset for help on using the changeset viewer.