Short Description:
Write the AXIOM Beta REST interface capable of setting and getting camera control parameters. This interface will be the foundation for future higher level GUIs/Apps that utilise the API.
Actual Status:
The camera runs ArchLinux. Currently, all camera settings like white balance are changed by calling shell scripts via multiple PHP scripts.
Current example calls for changing parameters on the camera internal commandline:
- Read/Write Image sensor registers
- Image Sensor registers are covered in datasheet
- Changing gain
- Changing gamma values
- Changing exposure time - can also be done by altering image sensor registers directly
- Changing 4x4matrix parameters
Current php scripts:
https://github.com/apertus-open-source-cinema/beta-software/tree/master/http
Current shell-scripts:
https://github.com/apertus-open-source-cinema/beta-software/tree/master/beta-scripts
Target status:
The calls mentioned above can be retrieved and changed via a simple REST interface. For example, calling 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...
- 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
- Very basic knowledge of Docker usage
Learnings:
- REST in go
- C-Bindings in go
- Designing APIs
- Use Docker containers to build go applications
- Test 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
Secondary Mentors:
Andrej (@BAndiT1983), @sebastian
Timeline:
Applicants for this task must propose a timeline. You can find examples in the GSoC Student Guide. Keep the big picture in mind: https://developers.google.com/open-source/gsoc/timeline