Proj-2014-2015-ESP8266/Scrum

Project Description
Python on ESP8266

User stories
1. Internet of Things conceptors will want to develop with python on the ESP8266, and will want to be able to use every feature of it.

so as to fulfill their needs we have to proceed on these tasks:
 * Manage to connect and flash ESP8266 module from USB connection without third party card
 * Turn USB 5V connection to serial 3.3V
 * Understand procedure for flashing the ESP8266 ROM
 * Understanding the SDK devoted to the ESP8266:
 * Look for code already made and documentation
 * Make test programs
 * Make shedskin able to compile the SDK:
 * Detect conflics
 * Define dependencies between C and C++ modules.
 * Produce a Makefile for the project
 * Produce some packages so as to implement basic functions of the SDK:
 * Make a sample module such as Hello World
 * Make the adequate modules in shedskin to create Python functions for the entire SDK.
 * Generate documentation for the functionnal code
 * Use Sphinx documentation generator

Task over when
We have a functionnal prototype

Sprint 1
Sprint duration: 1 mounth

Sprint goals
Manage to connect module from USB connection without third party card

Sprint Backlog
First we followed several tutorials on Arduino based connection:
 * First contact with ESP: 10h
 * Handling Arduino and dedicated IDE: 8h
 * Arduino connection to ESP: 10h

Next we tried several other methods of communication with another board, the STM32F4 Discovery:
 * Reading STM documentation: 10h
 * Micropython setup on STM: 10h
 * Python self formation: 5h
 * Handling nodeMCU: 5h

Then we made a direct link through an usb to serial module: it would kill the ESP.
 * Seek help from fablab analysing pin mapping and voltage from a RS232 -> USB converter cable: 3h
 * concluded on the imposibility to use this piece of hardware, providing 5V only
 * Demand and Handling time for an FTDI 3.3V Serial adapter: 1 week delay + 2h
 * works fine, we now have the possibility to connect via serial console.

Writing reports:
 * Handle fritzing for schematics: 1h
 * Writing: 3h

Sprint 2
Sprint duration: 2 weeks

Sprint goals
Manage to flash ESP8266 ROM to execute external code
 * Handle direct connection
 * Select compiling toolchain

Sprint Backlog
Study of past year project:
 * Understanding the project: 5h
 * Presentation of Shedskin compilator (python to C++ cross compiler)
 * Presentation of the Xtensa toolchain (dedicated gcc recompiled for ESP SDK compiling)
 * Seeing the conclusions on garbage collection and memory limitations we added a research objecctive on garbage collecting to see if it is possible to implement a minimal garbage collector for the ESP
 * research on python -> C/C++ compilers : 5h
 * Dead end: Try to implement C/C++ -> python tranlator using python AST: put on next sprint
 * research on garbage collectors: 15h

Manage to interact with out of the box ESP:
 * Look for ESP documentation: 2h
 * Use basic wifi function through serial console: 7h

Toolchain choice & setup: 9h

Writing reports: 2h

Sprint 3
Sprint duration: 1 mounth

Sprint goals

 * Understanding the SDK devoted to the ESP8266
 * Produce some packages so as to implement basic functions of the SDK
 * Mid term presentation

Sprint Backlog
Webpage for the project: 4h

Mid term slideshow presentation: 2h

Dead end on Python -> C++ compiling: Try to implement C/C++ -> python translator using python AST:
 * test python AST module: 15h
 * python AST optimiser: 2h

Research on ESP ecosystem (SDK, documentation, basic code):
 * Lookup: 10h
 * Understanding C minimal code: 20h
 * Bug resolving in C basic code comming from toolchain: 30h

Handling shedskin:
 * Minimal test examples: 5h
 * test modules for shedskin: 10h and then reported to next sprint due to deadlock

Writing reports: 2h

Sprint 4
Sprint duration: 3 weeks

Sprint goals
compilation for ESP in C from shedskin C++ generated code, and then make python shedskin modules
 * module ESP: implement wifi calls
 * module LED: simple blinker
 * module serial: implement serial communication

Sprint Backlog
C++ to C ESP compilation