Requirement Specifications

Translation in progress.

Obey the following format:
 * Final decisions are written in bold.
 * Work in progress / almost final decisions are written in normal body text.
 * Suggestions are written in italic.

Idea
The main goal is to design and produce a tracking system, which is mainly designed for relaying real-time location information to client hardware. When operational, the tracking system will replace (for example) commercial hunting trackers (in example, systems on dog collars) with at least the same functionality, but at a fraction of the price. The system might and will also have different usecases and because of that, hardware design will focus also on expansion and possibility for additional features.

Features
Tracking system consists of hardware and software. Hardware is designed to be as small and light as possible, but versatile. Software consists of firmware, server and client software. Firmware is on the tracker itself and takes care of communication with server, for example. Server is designed to be served as centralized service or a local server, run by the user. Client software might have different solutions for different devices (Android, iOS, PC etc.) or possibly one software for all devices (web-based).

Hardware

 * GSM/GPRS/GPS module
 * GSM antenna
 * GPS antenna
 * SIM-holder
 * Microcontroller
 * Compass, accelerometer and gyroscope
 * Memory card
 * LiPo- or Li-ion-battery
 * Possibility to charge the battery with standard Micro-USB charger
 * Seamless compatibility for batteries of different battery capacities (no changes to hardware or software)
 * Microphone for bark detection and voice calls
 * Indicators (LED) for different operation states
 * Power On (boot successful)
 * GPS Fix OK
 * 'Battery charge in progress/full
 * Low battery
 * GSM coverage
 * GPRS connection to server OK
 * Serial port (virtual through USB)
 * DFU/JTAG/SWD for software development
 * At least I2C and SPI interfaces (+ multiple IO-ports) available (allows connecting additional sensors etc.)

Palvelinohjelmisto/API

 * Toteutetaan RESTful web API:na, paluudata kyselykohtaisesti valitussa strukturoidussa formaatissa esim. joko JSON tai XML sekä firmwarella helposti parsittavassa muodossa
 * Kaikki käyttöliittymät (View) käyttävät samaa API:a (Model-Controller), eli mahdollinen toiminnallisuus ja rajapinnat ovat samat käyttöliittymän toteutustavasta riippumatta.
 * Ottaa sisälle paikannuslaitteiston GPRS:llä lähettämää sijaintitietoa, hoitaa kaikki tietokantayhteydet/autentikoinnit, tarjoaa dataa käyttöliittymille

Webkäyttöliittymä/Päätelaiteohjelmistot
(Ensimmäinen versio voisi olla Androidille tai ainoastaan web-pohjainen)
 * Käyttävät kaikki samaa RESTful rajapintaa kaikkiin toimintoihinsa. Ei ole erillistä "adminpuolta", sama api. On käyttöliittymästä kiinni mitä ominaisuuksia se toteuttaa.
 * Myöhemmin websocketit apiin mukaan, jolloin saadaan oikeaa reaaliaikaisuutta käyttöliittymiin
 * Karttanäyttö, jossa näkyy reaaliajassa ryhmään kuuluvien paikannulaitteiden sijainti (+ryhmään kuuluvat mobiilipäätelaitteet)
 * Karttamateriaali ilmaisista lähteistä (esim. Maanmittauslaitoksen 1.5.2012 ilmaiseen levitykseen julkistettavat kartat)
 * Web-käyttöliittymässä pohjakartan valinta käyttötarpeen mukaan (OpenStreetMap/Google/MML)
 * Haukkuilmaisin (esim. vilkkuva markkeri tai teksti HAU!)
 * Paikannuslaitteen matalan jännitetason hälytys

Microcontroller's firmware

 * Communicate with GSM/GPS module
 * Communicate with server software
 * Deliver location and sensor data to server
 * Logging to memory card or EEPROM
 * Blink LEDs
 * Measure battery level