The camera runs ArchLinux and currently lighttp web server. The settings could be adjusted by using REST API through Node.js (https://nodejs.org/),**Short Description:**
Write the AXIOM Beta REST interface capable of setting and getting camera control parameters. PHP or a lightweight library (e.g. https://github.com/babelouest/ulfius)This interface will be the foundation for future higher level GUIs/Apps that utilise the API.
**Actual Status:**
The camera runs ArchLinux. Current source code demo PHP applications: https://github.com/apertus-open-source-cinema/beta-software/tree/master/httply, all camera settings like white balance are changed by calling shell scripts via multiple PHP scripts.
ECurrent example calls for changing parameters on the camera internal commandline:
* [[ https://wiki.apertus.org/index.php/AXIOM_Beta/AXIOM_Beta_Software#cmv_reg | Read/Write Image sensor registers ]]
* [[ https://github.com/apertus-open-source-cinema/beta-hardware/tree/master/Datasheets | Image Sensor registers are covered in datasheet ]]
Read/Write Image sensor registers:* [[ https://wiki.apertus.org/index.php/AXIOM_Beta/AXIOM_Beta_Software#cmv_regset_gain.sh | Changing gain ]]
Image Sensor registers are covered in datasheet: https://github.com/apertus-open-source-cinema/beta-hardware/tree/master/Datasheets* [[ https://wiki.apertus.org/index.php/AXIOM_Beta/AXIOM_Beta_Software#gamma_conf.sh | Changing gamma values ]]
Changing gain:* [[ https://wiki.apertus.org/index.php/AXIOM_Beta/AXIOM_Beta_Software#set_gain.shSetting_Exposure_Time | Changing exposure time ]] - can also be done by altering image sensor registers directly
Changing gamma values:* [[ https://wiki.apertus.org/index.php/AXIOM_Beta/AXIOM_Beta_Software#gammamat4_conf.shsh | Changing 4x4matrix parameters ]]
Current php scripts:
Changing exposure time: https://wiki.apertus.org/index.php/AXIOM_Beta/AXIOM_Beta_Software#Setting_Exposure_Time - can also be done by altering image sensor registers directlyhttps://github.com/apertus-open-source-cinema/beta-software/tree/master/http
Current shell-scripts:
Changing 4x4matrix parameters: https://wiki.https://github.com/apertus.org/index.php/AXIOM_Beta/AXIOM_Beta_S-open-source-cinema/beta-software#mat4_conf.shre/tree/master/beta-scripts
More parameters (eg. relating to HDMI output parameters, system parameters and functions,**Target status:**
The calls mentioned above can be retrieved and changed via a simple REST interface. etc.For example, should be added as this task is progressingcalling http://beta-ip/api/set/WB=3200 changes the white balance to 3200 Kelvin (routes tbd).
**Goals:**
- Design REST API for calls above, e.g. using http://swagger.io/swagger-editor/
- Implement a REST interface in go using https://github.com/julienschmidt/httprouter
- Get and set hardware properties by utilising the C library of T758
**Bonus:**
- Add more parameters relating to HDMI output parameters, system parameters and functions, etc...
Make the AXIOM Beta capable of setting and getting camera control parameters over a web-based API. This should create the foundation for future higher level GUIs/Apps that utilize the API. Deciding/Researching the best approach is part of the task. - Add a rudimentary UI
**Prerequisites:**
- Basic knowledge of the go programming language
- Basic knowledge of web application programming
- Acquainted with following document https://golang.org/doc/effective_go.html
- Linux Know-How- Very basic knowledge of Docker usage
**Language Skills:****Learnings:**
- REST in go
- C-Bindings in go
- Designing APIs
- Use Docker containers to build go applications
- C/C++, PHP, JavascriptTest driven development
**Ressources:**
Following resources give an overview of technologies to use:
- Learn about building go in Docker containers: https://hub.docker.com/_/golang
- Read chapter 1-4 of http://chimera.labs.oreilly.com/books/1234000000754
- Watch https://medium.com/@matryer/writing-packages-in-go-using-test-driven-development-d7d2a236dde9#.khkyyqvl3
- Read https://www.binpress.com/tutorial/getting-started-with-go-and-test-driven-development/160
- Use an advanced router: https://github.com/julienschmidt/httprouter
- Return html with html templates: https://golang.org/pkg/html/template/
- Start using C in go: https://golang.org/doc/faq#Do_Go_programs_link_with_Cpp_programs
**Difficulty:**
Easy
**Primary Mentor:**
@maltefiala
**Difficulty:** Easy to Medium**Secondary Mentors:**
Andrej (@BAndiT1983), @Sebastian
**Mentor:** Andrej,Timeline:**
Applicants for this task must propose a timeline. You can find examples in the [[ http://write.flossmanuals.net/gsocstudentguide/what-is-google-summer-of-code/ | GSoC Student Guide ]]. SebastianKeep the big picture in mind: https://developers.google.com/open-source/gsoc/timeline