SlideShare a Scribd company logo
Safer IoT using functional languageSafer IoT using functional languageSafer IoT using functional languageSafer IoT using functional languageSafer IoT using functional language
Kiwamu Okabe @ RIKEN AICSKiwamu Okabe @ RIKEN AICSKiwamu Okabe @ RIKEN AICSKiwamu Okabe @ RIKEN AICSKiwamu Okabe @ RIKEN AICS
Hardware: ESP8266Hardware: ESP8266Hardware: ESP8266Hardware: ESP8266Hardware: ESP8266
☆ http://espressif.com/en/products/wroom/☆ http://espressif.com/en/products/wroom/☆ http://espressif.com/en/products/wroom/☆ http://espressif.com/en/products/wroom/☆ http://espressif.com/en/products/wroom/
☆ 32-bit low power MCU Wi-Fi Module☆ 32-bit low power MCU Wi-Fi Module☆ 32-bit low power MCU Wi-Fi Module☆ 32-bit low power MCU Wi-Fi Module☆ 32-bit low power MCU Wi-Fi Module
☆ Having integrated TCP/IP network stacks☆ Having integrated TCP/IP network stacks☆ Having integrated TCP/IP network stacks☆ Having integrated TCP/IP network stacks☆ Having integrated TCP/IP network stacks
☆ Including ADC, SDIO, UART, PWM, I2C ...☆ Including ADC, SDIO, UART, PWM, I2C ...☆ Including ADC, SDIO, UART, PWM, I2C ...☆ Including ADC, SDIO, UART, PWM, I2C ...☆ Including ADC, SDIO, UART, PWM, I2C ...
☆ Small form factor of only 18mm x 20mm☆ Small form factor of only 18mm x 20mm☆ Small form factor of only 18mm x 20mm☆ Small form factor of only 18mm x 20mm☆ Small form factor of only 18mm x 20mm
Functional language: ATSFunctional language: ATSFunctional language: ATSFunctional language: ATSFunctional language: ATS
☆ http://www.ats-lang.org/☆ http://www.ats-lang.org/☆ http://www.ats-lang.org/☆ http://www.ats-lang.org/☆ http://www.ats-lang.org/
☆ Syntax like ML☆ Syntax like ML☆ Syntax like ML☆ Syntax like ML☆ Syntax like ML
☆ DML-style dependent types☆ DML-style dependent types☆ DML-style dependent types☆ DML-style dependent types☆ DML-style dependent types
☆ Linear types☆ Linear types☆ Linear types☆ Linear types☆ Linear types
☆ Optional GC☆ Optional GC☆ Optional GC☆ Optional GC☆ Optional GC
☆ Optional malloc/free☆ Optional malloc/free☆ Optional malloc/free☆ Optional malloc/free☆ Optional malloc/free
☆ Optional run-time☆ Optional run-time☆ Optional run-time☆ Optional run-time☆ Optional run-time
DemoDemoDemoDemoDemo
The code is found at following:The code is found at following:The code is found at following:The code is found at following:The code is found at following:
https://github.com/fpiot/esp8266-atshttps://github.com/fpiot/esp8266-atshttps://github.com/fpiot/esp8266-atshttps://github.com/fpiot/esp8266-atshttps://github.com/fpiot/esp8266-ats
Demo environmentDemo environmentDemo environmentDemo environmentDemo environment
Software architectureSoftware architectureSoftware architectureSoftware architectureSoftware architecture
ATS finds forgetting free memoryATS finds forgetting free memoryATS finds forgetting free memoryATS finds forgetting free memoryATS finds forgetting free memory
$�cd�esp8266-ats/ifttt_ats
$�vi�user/user_main.dats
�39�����val�json_open�=�string0_copy�"{"value1":�""
�40�����val�json_close�=�string0_copy�""�}"
�41�����val�temp�=�esp_tostrptr_int�rand
�42�����val�json_head�=�strptr_append�(json_open,�temp)
�43�����val�json_data�=�strptr_append�(json_head,�json_close)
�44�//��val�()�=�(free�json_open;�free�json_close;�free�temp;�free�json_head)
�45�����val�()�=�(free�json_open;�free�json_close;�free�temp)�//�Error!
$�make
ATS�user/user_main.dats
/home/kiwamu/src/esp8266-ats/ifttt_ats/user/user_main.dats:�985(line=32,�
offs=43)�--�2237(line=55,�offs=4):�error(3):�the�linear�dynamic�variable�
[json_head$3823(-1)]�needs�to�be�consumed�but�it�is�preserved�with�the�type�
[S2Eapp(S2Ecst(strptr_addr_vtype);�S2EVar(4441))]�instead.
$�cd�esp8266-ats/ifttt_ats
$�vi�user/user_main.dats
�39�����val�json_open�=�string0_copy�"{"value1":�""
�40�����val�json_close�=�string0_copy�""�}"
�41�����val�temp�=�esp_tostrptr_int�rand
�42�����val�json_head�=�strptr_append�(json_open,�temp)
�43�����val�json_data�=�strptr_append�(json_head,�json_close)
�44�//��val�()�=�(free�json_open;�free�json_close;�free�temp;�free�json_head)
�45�����val�()�=�(free�json_open;�free�json_close;�free�temp)�//�Error!
$�make
ATS�user/user_main.dats
/home/kiwamu/src/esp8266-ats/ifttt_ats/user/user_main.dats:�985(line=32,�
offs=43)�--�2237(line=55,�offs=4):�error(3):�the�linear�dynamic�variable�
[json_head$3823(-1)]�needs�to�be�consumed�but�it�is�preserved�with�the�type�
[S2Eapp(S2Ecst(strptr_addr_vtype);�S2EVar(4441))]�instead.
$�cd�esp8266-ats/ifttt_ats
$�vi�user/user_main.dats
�39�����val�json_open�=�string0_copy�"{"value1":�""
�40�����val�json_close�=�string0_copy�""�}"
�41�����val�temp�=�esp_tostrptr_int�rand
�42�����val�json_head�=�strptr_append�(json_open,�temp)
�43�����val�json_data�=�strptr_append�(json_head,�json_close)
�44�//��val�()�=�(free�json_open;�free�json_close;�free�temp;�free�json_head)
�45�����val�()�=�(free�json_open;�free�json_close;�free�temp)�//�Error!
$�make
ATS�user/user_main.dats
/home/kiwamu/src/esp8266-ats/ifttt_ats/user/user_main.dats:�985(line=32,�
offs=43)�--�2237(line=55,�offs=4):�error(3):�the�linear�dynamic�variable�
[json_head$3823(-1)]�needs�to�be�consumed�but�it�is�preserved�with�the�type�
[S2Eapp(S2Ecst(strptr_addr_vtype);�S2EVar(4441))]�instead.
$�cd�esp8266-ats/ifttt_ats
$�vi�user/user_main.dats
�39�����val�json_open�=�string0_copy�"{"value1":�""
�40�����val�json_close�=�string0_copy�""�}"
�41�����val�temp�=�esp_tostrptr_int�rand
�42�����val�json_head�=�strptr_append�(json_open,�temp)
�43�����val�json_data�=�strptr_append�(json_head,�json_close)
�44�//��val�()�=�(free�json_open;�free�json_close;�free�temp;�free�json_head)
�45�����val�()�=�(free�json_open;�free�json_close;�free�temp)�//�Error!
$�make
ATS�user/user_main.dats
/home/kiwamu/src/esp8266-ats/ifttt_ats/user/user_main.dats:�985(line=32,�
offs=43)�--�2237(line=55,�offs=4):�error(3):�the�linear�dynamic�variable�
[json_head$3823(-1)]�needs�to�be�consumed�but�it�is�preserved�with�the�type�
[S2Eapp(S2Ecst(strptr_addr_vtype);�S2EVar(4441))]�instead.
$�cd�esp8266-ats/ifttt_ats
$�vi�user/user_main.dats
�39�����val�json_open�=�string0_copy�"{"value1":�""
�40�����val�json_close�=�string0_copy�""�}"
�41�����val�temp�=�esp_tostrptr_int�rand
�42�����val�json_head�=�strptr_append�(json_open,�temp)
�43�����val�json_data�=�strptr_append�(json_head,�json_close)
�44�//��val�()�=�(free�json_open;�free�json_close;�free�temp;�free�json_head)
�45�����val�()�=�(free�json_open;�free�json_close;�free�temp)�//�Error!
$�make
ATS�user/user_main.dats
/home/kiwamu/src/esp8266-ats/ifttt_ats/user/user_main.dats:�985(line=32,�
offs=43)�--�2237(line=55,�offs=4):�error(3):�the�linear�dynamic�variable�
[json_head$3823(-1)]�needs�to�be�consumed�but�it�is�preserved�with�the�type�
[S2Eapp(S2Ecst(strptr_addr_vtype);�S2EVar(4441))]�instead.
Functional IoT Meetup at January 30Functional IoT Meetup at January 30Functional IoT Meetup at January 30Functional IoT Meetup at January 30Functional IoT Meetup at January 30
License of photosLicense of photosLicense of photosLicense of photosLicense of photos
*�About�time�I�had�a�whisky�glass!�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/toolmantim/14834817323/
��Copyright:�Tim�Lucas�/�License:�CC�BY�2.0
*�Japanese�traditional�style�house�design�/�和⾵建築(わふうけんちく)�│�
Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/tanaka_juuyoh/10720411936/
��Copyright:�TANAKA�Juuyoh�(⽥中⼗洋)�/�License:�CC�BY�2.0
*�Undirected�member-get-member�network�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/porternovelli/2587018053/
��Copyright:�Porter�Novelli�Global�/�License:�CC�BY-SA�2.0
*�JTAG�board�1�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/amagill/2877921712/
��Copyright:�Andrew�Magill�/�License:�CC�BY�2.0
*�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/steren/2732488224/
��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0
*�About�time�I�had�a�whisky�glass!�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/toolmantim/14834817323/
��Copyright:�Tim�Lucas�/�License:�CC�BY�2.0
*�Japanese�traditional�style�house�design�/�和⾵建築(わふうけんちく)�│�
Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/tanaka_juuyoh/10720411936/
��Copyright:�TANAKA�Juuyoh�(⽥中⼗洋)�/�License:�CC�BY�2.0
*�Undirected�member-get-member�network�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/porternovelli/2587018053/
��Copyright:�Porter�Novelli�Global�/�License:�CC�BY-SA�2.0
*�JTAG�board�1�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/amagill/2877921712/
��Copyright:�Andrew�Magill�/�License:�CC�BY�2.0
*�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/steren/2732488224/
��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0
*�About�time�I�had�a�whisky�glass!�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/toolmantim/14834817323/
��Copyright:�Tim�Lucas�/�License:�CC�BY�2.0
*�Japanese�traditional�style�house�design�/�和⾵建築(わふうけんちく)�│�
Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/tanaka_juuyoh/10720411936/
��Copyright:�TANAKA�Juuyoh�(⽥中⼗洋)�/�License:�CC�BY�2.0
*�Undirected�member-get-member�network�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/porternovelli/2587018053/
��Copyright:�Porter�Novelli�Global�/�License:�CC�BY-SA�2.0
*�JTAG�board�1�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/amagill/2877921712/
��Copyright:�Andrew�Magill�/�License:�CC�BY�2.0
*�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/steren/2732488224/
��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0
*�About�time�I�had�a�whisky�glass!�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/toolmantim/14834817323/
��Copyright:�Tim�Lucas�/�License:�CC�BY�2.0
*�Japanese�traditional�style�house�design�/�和⾵建築(わふうけんちく)�│�
Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/tanaka_juuyoh/10720411936/
��Copyright:�TANAKA�Juuyoh�(⽥中⼗洋)�/�License:�CC�BY�2.0
*�Undirected�member-get-member�network�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/porternovelli/2587018053/
��Copyright:�Porter�Novelli�Global�/�License:�CC�BY-SA�2.0
*�JTAG�board�1�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/amagill/2877921712/
��Copyright:�Andrew�Magill�/�License:�CC�BY�2.0
*�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/steren/2732488224/
��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0
*�About�time�I�had�a�whisky�glass!�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/toolmantim/14834817323/
��Copyright:�Tim�Lucas�/�License:�CC�BY�2.0
*�Japanese�traditional�style�house�design�/�和⾵建築(わふうけんちく)�│�
Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/tanaka_juuyoh/10720411936/
��Copyright:�TANAKA�Juuyoh�(⽥中⼗洋)�/�License:�CC�BY�2.0
*�Undirected�member-get-member�network�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/porternovelli/2587018053/
��Copyright:�Porter�Novelli�Global�/�License:�CC�BY-SA�2.0
*�JTAG�board�1�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/amagill/2877921712/
��Copyright:�Andrew�Magill�/�License:�CC�BY�2.0
*�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/steren/2732488224/
��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0

More Related Content

PDF
Poster: Generate ATS interface from C code, and introduce linear type
PDF
Does Infer dream of design by contract?
PDF
GCC GENERIC
PDF
SecureAssist Eclipse Plug-in 導入ガイド
PDF
SecureAssist Enterprise Portal APIガイド
PDF
SecureAssist IntelliJ Plug-in 導入ガイド
PDF
SecureAssist Enterprise Portal 導入ガイド
PDF
SecureAssist Visual Studio Package 導入ガイド
Poster: Generate ATS interface from C code, and introduce linear type
Does Infer dream of design by contract?
GCC GENERIC
SecureAssist Eclipse Plug-in 導入ガイド
SecureAssist Enterprise Portal APIガイド
SecureAssist IntelliJ Plug-in 導入ガイド
SecureAssist Enterprise Portal 導入ガイド
SecureAssist Visual Studio Package 導入ガイド

Similar to Safer IoT using functional language (20)

PDF
ATS programming on ESP8266
PDF
Embedded application designed by ATS language
PDF
Functional IoT: Hardware and Platform
PDF
Smart.js: JavaScript engine running on tiny MCU
PDF
Emacs verilog-mode is coming to Debian, again
PDF
ATS Programming Tutorial
PDF
Hands-on VeriFast with STM32 microcontroller @ Osaka
PDF
Functional IoT: Introduction
PDF
Metasepi team meeting #14: ATS programming on MCU
PDF
Start! ATS programming
PDF
Functional IoT: Programming Language and OS
PDF
Hands-on VeriFast with STM32 microcontroller @ Nagoya
PDF
Hands-on VeriFast with STM32 microcontroller
PDF
Metasepi team meeting #16: Safety on ATS language + MCU
PDF
Metasepi team meeting #20: Start! ATS programming on MCU
PDF
ATS2 updates 2017
PDF
ARM uVisor Debug Refinement Project(debugging facility improvements)
ODP
Coffeescript: Fad or Useful Tool? Socal Code Camp Fullerton 2015
PDF
Emebedded Memories from GF pb-emem presentation
PDF
Ajhc Haskell Compiler with Reentrant GC
ATS programming on ESP8266
Embedded application designed by ATS language
Functional IoT: Hardware and Platform
Smart.js: JavaScript engine running on tiny MCU
Emacs verilog-mode is coming to Debian, again
ATS Programming Tutorial
Hands-on VeriFast with STM32 microcontroller @ Osaka
Functional IoT: Introduction
Metasepi team meeting #14: ATS programming on MCU
Start! ATS programming
Functional IoT: Programming Language and OS
Hands-on VeriFast with STM32 microcontroller @ Nagoya
Hands-on VeriFast with STM32 microcontroller
Metasepi team meeting #16: Safety on ATS language + MCU
Metasepi team meeting #20: Start! ATS programming on MCU
ATS2 updates 2017
ARM uVisor Debug Refinement Project(debugging facility improvements)
Coffeescript: Fad or Useful Tool? Socal Code Camp Fullerton 2015
Emebedded Memories from GF pb-emem presentation
Ajhc Haskell Compiler with Reentrant GC
Ad

Recently uploaded (20)

PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Big Data Technologies - Introduction.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Encapsulation theory and applications.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
KodekX | Application Modernization Development
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
MYSQL Presentation for SQL database connectivity
PDF
cuic standard and advanced reporting.pdf
PPTX
Cloud computing and distributed systems.
PDF
MIND Revenue Release Quarter 2 2025 Press Release
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
Encapsulation_ Review paper, used for researhc scholars
Big Data Technologies - Introduction.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Encapsulation theory and applications.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
NewMind AI Weekly Chronicles - August'25 Week I
KodekX | Application Modernization Development
sap open course for s4hana steps from ECC to s4
MYSQL Presentation for SQL database connectivity
cuic standard and advanced reporting.pdf
Cloud computing and distributed systems.
MIND Revenue Release Quarter 2 2025 Press Release
The AUB Centre for AI in Media Proposal.docx
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Ad

Safer IoT using functional language

  • 1. Safer IoT using functional languageSafer IoT using functional languageSafer IoT using functional languageSafer IoT using functional languageSafer IoT using functional language Kiwamu Okabe @ RIKEN AICSKiwamu Okabe @ RIKEN AICSKiwamu Okabe @ RIKEN AICSKiwamu Okabe @ RIKEN AICSKiwamu Okabe @ RIKEN AICS
  • 2. Hardware: ESP8266Hardware: ESP8266Hardware: ESP8266Hardware: ESP8266Hardware: ESP8266 ☆ http://espressif.com/en/products/wroom/☆ http://espressif.com/en/products/wroom/☆ http://espressif.com/en/products/wroom/☆ http://espressif.com/en/products/wroom/☆ http://espressif.com/en/products/wroom/ ☆ 32-bit low power MCU Wi-Fi Module☆ 32-bit low power MCU Wi-Fi Module☆ 32-bit low power MCU Wi-Fi Module☆ 32-bit low power MCU Wi-Fi Module☆ 32-bit low power MCU Wi-Fi Module ☆ Having integrated TCP/IP network stacks☆ Having integrated TCP/IP network stacks☆ Having integrated TCP/IP network stacks☆ Having integrated TCP/IP network stacks☆ Having integrated TCP/IP network stacks ☆ Including ADC, SDIO, UART, PWM, I2C ...☆ Including ADC, SDIO, UART, PWM, I2C ...☆ Including ADC, SDIO, UART, PWM, I2C ...☆ Including ADC, SDIO, UART, PWM, I2C ...☆ Including ADC, SDIO, UART, PWM, I2C ... ☆ Small form factor of only 18mm x 20mm☆ Small form factor of only 18mm x 20mm☆ Small form factor of only 18mm x 20mm☆ Small form factor of only 18mm x 20mm☆ Small form factor of only 18mm x 20mm
  • 3. Functional language: ATSFunctional language: ATSFunctional language: ATSFunctional language: ATSFunctional language: ATS ☆ http://www.ats-lang.org/☆ http://www.ats-lang.org/☆ http://www.ats-lang.org/☆ http://www.ats-lang.org/☆ http://www.ats-lang.org/ ☆ Syntax like ML☆ Syntax like ML☆ Syntax like ML☆ Syntax like ML☆ Syntax like ML ☆ DML-style dependent types☆ DML-style dependent types☆ DML-style dependent types☆ DML-style dependent types☆ DML-style dependent types ☆ Linear types☆ Linear types☆ Linear types☆ Linear types☆ Linear types ☆ Optional GC☆ Optional GC☆ Optional GC☆ Optional GC☆ Optional GC ☆ Optional malloc/free☆ Optional malloc/free☆ Optional malloc/free☆ Optional malloc/free☆ Optional malloc/free ☆ Optional run-time☆ Optional run-time☆ Optional run-time☆ Optional run-time☆ Optional run-time
  • 4. DemoDemoDemoDemoDemo The code is found at following:The code is found at following:The code is found at following:The code is found at following:The code is found at following: https://github.com/fpiot/esp8266-atshttps://github.com/fpiot/esp8266-atshttps://github.com/fpiot/esp8266-atshttps://github.com/fpiot/esp8266-atshttps://github.com/fpiot/esp8266-ats
  • 5. Demo environmentDemo environmentDemo environmentDemo environmentDemo environment
  • 6. Software architectureSoftware architectureSoftware architectureSoftware architectureSoftware architecture
  • 7. ATS finds forgetting free memoryATS finds forgetting free memoryATS finds forgetting free memoryATS finds forgetting free memoryATS finds forgetting free memory $�cd�esp8266-ats/ifttt_ats $�vi�user/user_main.dats �39�����val�json_open�=�string0_copy�"{"value1":�"" �40�����val�json_close�=�string0_copy�""�}" �41�����val�temp�=�esp_tostrptr_int�rand �42�����val�json_head�=�strptr_append�(json_open,�temp) �43�����val�json_data�=�strptr_append�(json_head,�json_close) �44�//��val�()�=�(free�json_open;�free�json_close;�free�temp;�free�json_head) �45�����val�()�=�(free�json_open;�free�json_close;�free�temp)�//�Error! $�make ATS�user/user_main.dats /home/kiwamu/src/esp8266-ats/ifttt_ats/user/user_main.dats:�985(line=32,� offs=43)�--�2237(line=55,�offs=4):�error(3):�the�linear�dynamic�variable� [json_head$3823(-1)]�needs�to�be�consumed�but�it�is�preserved�with�the�type� [S2Eapp(S2Ecst(strptr_addr_vtype);�S2EVar(4441))]�instead. $�cd�esp8266-ats/ifttt_ats $�vi�user/user_main.dats �39�����val�json_open�=�string0_copy�"{"value1":�"" �40�����val�json_close�=�string0_copy�""�}" �41�����val�temp�=�esp_tostrptr_int�rand �42�����val�json_head�=�strptr_append�(json_open,�temp) �43�����val�json_data�=�strptr_append�(json_head,�json_close) �44�//��val�()�=�(free�json_open;�free�json_close;�free�temp;�free�json_head) �45�����val�()�=�(free�json_open;�free�json_close;�free�temp)�//�Error! $�make ATS�user/user_main.dats /home/kiwamu/src/esp8266-ats/ifttt_ats/user/user_main.dats:�985(line=32,� offs=43)�--�2237(line=55,�offs=4):�error(3):�the�linear�dynamic�variable� [json_head$3823(-1)]�needs�to�be�consumed�but�it�is�preserved�with�the�type� [S2Eapp(S2Ecst(strptr_addr_vtype);�S2EVar(4441))]�instead. $�cd�esp8266-ats/ifttt_ats $�vi�user/user_main.dats �39�����val�json_open�=�string0_copy�"{"value1":�"" �40�����val�json_close�=�string0_copy�""�}" �41�����val�temp�=�esp_tostrptr_int�rand �42�����val�json_head�=�strptr_append�(json_open,�temp) �43�����val�json_data�=�strptr_append�(json_head,�json_close) �44�//��val�()�=�(free�json_open;�free�json_close;�free�temp;�free�json_head) �45�����val�()�=�(free�json_open;�free�json_close;�free�temp)�//�Error! $�make ATS�user/user_main.dats /home/kiwamu/src/esp8266-ats/ifttt_ats/user/user_main.dats:�985(line=32,� offs=43)�--�2237(line=55,�offs=4):�error(3):�the�linear�dynamic�variable� [json_head$3823(-1)]�needs�to�be�consumed�but�it�is�preserved�with�the�type� [S2Eapp(S2Ecst(strptr_addr_vtype);�S2EVar(4441))]�instead. $�cd�esp8266-ats/ifttt_ats $�vi�user/user_main.dats �39�����val�json_open�=�string0_copy�"{"value1":�"" �40�����val�json_close�=�string0_copy�""�}" �41�����val�temp�=�esp_tostrptr_int�rand �42�����val�json_head�=�strptr_append�(json_open,�temp) �43�����val�json_data�=�strptr_append�(json_head,�json_close) �44�//��val�()�=�(free�json_open;�free�json_close;�free�temp;�free�json_head) �45�����val�()�=�(free�json_open;�free�json_close;�free�temp)�//�Error! $�make ATS�user/user_main.dats /home/kiwamu/src/esp8266-ats/ifttt_ats/user/user_main.dats:�985(line=32,� offs=43)�--�2237(line=55,�offs=4):�error(3):�the�linear�dynamic�variable� [json_head$3823(-1)]�needs�to�be�consumed�but�it�is�preserved�with�the�type� [S2Eapp(S2Ecst(strptr_addr_vtype);�S2EVar(4441))]�instead. $�cd�esp8266-ats/ifttt_ats $�vi�user/user_main.dats �39�����val�json_open�=�string0_copy�"{"value1":�"" �40�����val�json_close�=�string0_copy�""�}" �41�����val�temp�=�esp_tostrptr_int�rand �42�����val�json_head�=�strptr_append�(json_open,�temp) �43�����val�json_data�=�strptr_append�(json_head,�json_close) �44�//��val�()�=�(free�json_open;�free�json_close;�free�temp;�free�json_head) �45�����val�()�=�(free�json_open;�free�json_close;�free�temp)�//�Error! $�make ATS�user/user_main.dats /home/kiwamu/src/esp8266-ats/ifttt_ats/user/user_main.dats:�985(line=32,� offs=43)�--�2237(line=55,�offs=4):�error(3):�the�linear�dynamic�variable� [json_head$3823(-1)]�needs�to�be�consumed�but�it�is�preserved�with�the�type� [S2Eapp(S2Ecst(strptr_addr_vtype);�S2EVar(4441))]�instead.
  • 8. Functional IoT Meetup at January 30Functional IoT Meetup at January 30Functional IoT Meetup at January 30Functional IoT Meetup at January 30Functional IoT Meetup at January 30
  • 9. License of photosLicense of photosLicense of photosLicense of photosLicense of photos *�About�time�I�had�a�whisky�glass!�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/toolmantim/14834817323/ ��Copyright:�Tim�Lucas�/�License:�CC�BY�2.0 *�Japanese�traditional�style�house�design�/�和⾵建築(わふうけんちく)�│� Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/tanaka_juuyoh/10720411936/ ��Copyright:�TANAKA�Juuyoh�(⽥中⼗洋)�/�License:�CC�BY�2.0 *�Undirected�member-get-member�network�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/porternovelli/2587018053/ ��Copyright:�Porter�Novelli�Global�/�License:�CC�BY-SA�2.0 *�JTAG�board�1�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/amagill/2877921712/ ��Copyright:�Andrew�Magill�/�License:�CC�BY�2.0 *�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/steren/2732488224/ ��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0 *�About�time�I�had�a�whisky�glass!�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/toolmantim/14834817323/ ��Copyright:�Tim�Lucas�/�License:�CC�BY�2.0 *�Japanese�traditional�style�house�design�/�和⾵建築(わふうけんちく)�│� Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/tanaka_juuyoh/10720411936/ ��Copyright:�TANAKA�Juuyoh�(⽥中⼗洋)�/�License:�CC�BY�2.0 *�Undirected�member-get-member�network�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/porternovelli/2587018053/ ��Copyright:�Porter�Novelli�Global�/�License:�CC�BY-SA�2.0 *�JTAG�board�1�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/amagill/2877921712/ ��Copyright:�Andrew�Magill�/�License:�CC�BY�2.0 *�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/steren/2732488224/ ��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0 *�About�time�I�had�a�whisky�glass!�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/toolmantim/14834817323/ ��Copyright:�Tim�Lucas�/�License:�CC�BY�2.0 *�Japanese�traditional�style�house�design�/�和⾵建築(わふうけんちく)�│� Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/tanaka_juuyoh/10720411936/ ��Copyright:�TANAKA�Juuyoh�(⽥中⼗洋)�/�License:�CC�BY�2.0 *�Undirected�member-get-member�network�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/porternovelli/2587018053/ ��Copyright:�Porter�Novelli�Global�/�License:�CC�BY-SA�2.0 *�JTAG�board�1�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/amagill/2877921712/ ��Copyright:�Andrew�Magill�/�License:�CC�BY�2.0 *�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/steren/2732488224/ ��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0 *�About�time�I�had�a�whisky�glass!�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/toolmantim/14834817323/ ��Copyright:�Tim�Lucas�/�License:�CC�BY�2.0 *�Japanese�traditional�style�house�design�/�和⾵建築(わふうけんちく)�│� Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/tanaka_juuyoh/10720411936/ ��Copyright:�TANAKA�Juuyoh�(⽥中⼗洋)�/�License:�CC�BY�2.0 *�Undirected�member-get-member�network�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/porternovelli/2587018053/ ��Copyright:�Porter�Novelli�Global�/�License:�CC�BY-SA�2.0 *�JTAG�board�1�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/amagill/2877921712/ ��Copyright:�Andrew�Magill�/�License:�CC�BY�2.0 *�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/steren/2732488224/ ��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0 *�About�time�I�had�a�whisky�glass!�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/toolmantim/14834817323/ ��Copyright:�Tim�Lucas�/�License:�CC�BY�2.0 *�Japanese�traditional�style�house�design�/�和⾵建築(わふうけんちく)�│� Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/tanaka_juuyoh/10720411936/ ��Copyright:�TANAKA�Juuyoh�(⽥中⼗洋)�/�License:�CC�BY�2.0 *�Undirected�member-get-member�network�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/porternovelli/2587018053/ ��Copyright:�Porter�Novelli�Global�/�License:�CC�BY-SA�2.0 *�JTAG�board�1�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/amagill/2877921712/ ��Copyright:�Andrew�Magill�/�License:�CC�BY�2.0 *�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/steren/2732488224/ ��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0