{"action":"created","issue":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/3538","labels_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/3538/labels{/name}","comments_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/3538/comments","events_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/3538/events","html_url":"https://github.com/RIOT-OS/RIOT/pull/3538","id":98488814,"number":3538,"title":"Introducing RASI, the [R]IOT [A]ctuator [S]ensor [I]nterface","user":{"login":"haukepetersen","id":620834,"avatar_url":"https://avatars.githubusercontent.com/u/620834?v=3","gravatar_id":"","url":"https://api.github.com/users/haukepetersen","html_url":"https://github.com/haukepetersen","followers_url":"https://api.github.com/users/haukepetersen/followers","following_url":"https://api.github.com/users/haukepetersen/following{/other_user}","gists_url":"https://api.github.com/users/haukepetersen/gists{/gist_id}","starred_url":"https://api.github.com/users/haukepetersen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haukepetersen/subscriptions","organizations_url":"https://api.github.com/users/haukepetersen/orgs","repos_url":"https://api.github.com/users/haukepetersen/repos","events_url":"https://api.github.com/users/haukepetersen/events{/privacy}","received_events_url":"https://api.github.com/users/haukepetersen/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/Device%20driver","name":"Device driver","color":"0052cc"},{"url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/enhancement","name":"enhancement","color":"f17070"},{"url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/Feature%20Request","name":"Feature Request","color":"aefdcb"},{"url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/major","name":"major","color":"ff0000"},{"url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/new%20feature","name":"new feature","color":"e11d21"},{"url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/Waiting%20For%20Other%20PR","name":"Waiting For Other PR","color":"009800"}],"state":"open","locked":false,"assignee":{"login":"kaspar030","id":4679640,"avatar_url":"https://avatars.githubusercontent.com/u/4679640?v=3","gravatar_id":"","url":"https://api.github.com/users/kaspar030","html_url":"https://github.com/kaspar030","followers_url":"https://api.github.com/users/kaspar030/followers","following_url":"https://api.github.com/users/kaspar030/following{/other_user}","gists_url":"https://api.github.com/users/kaspar030/gists{/gist_id}","starred_url":"https://api.github.com/users/kaspar030/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kaspar030/subscriptions","organizations_url":"https://api.github.com/users/kaspar030/orgs","repos_url":"https://api.github.com/users/kaspar030/repos","events_url":"https://api.github.com/users/kaspar030/events{/privacy}","received_events_url":"https://api.github.com/users/kaspar030/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/milestones/12","html_url":"https://github.com/RIOT-OS/RIOT/milestones/Release%202015.06","labels_url":"https://api.github.com/repos/RIOT-OS/RIOT/milestones/12/labels","id":1088995,"number":12,"title":"Release 2015.06","description":"This release aims mainly to include the brand new network stack.","creator":{"login":"OlegHahm","id":1590423,"avatar_url":"https://avatars.githubusercontent.com/u/1590423?v=3","gravatar_id":"","url":"https://api.github.com/users/OlegHahm","html_url":"https://github.com/OlegHahm","followers_url":"https://api.github.com/users/OlegHahm/followers","following_url":"https://api.github.com/users/OlegHahm/following{/other_user}","gists_url":"https://api.github.com/users/OlegHahm/gists{/gist_id}","starred_url":"https://api.github.com/users/OlegHahm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OlegHahm/subscriptions","organizations_url":"https://api.github.com/users/OlegHahm/orgs","repos_url":"https://api.github.com/users/OlegHahm/repos","events_url":"https://api.github.com/users/OlegHahm/events{/privacy}","received_events_url":"https://api.github.com/users/OlegHahm/received_events","type":"User","site_admin":false},"open_issues":64,"closed_issues":250,"state":"open","created_at":"2015-04-29T10:11:27Z","updated_at":"2015-08-03T06:32:55Z","due_on":"2015-06-29T22:00:00Z","closed_at":null},"comments":4,"created_at":"2015-07-31T23:34:04Z","updated_at":"2015-08-03T11:41:48Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/3538","html_url":"https://github.com/RIOT-OS/RIOT/pull/3538","diff_url":"https://github.com/RIOT-OS/RIOT/pull/3538.diff","patch_url":"https://github.com/RIOT-OS/RIOT/pull/3538.patch"},"body":"Let me introduce to you RASI - the all new generic [R]IOT [A]ctuator [S]ensor [I]nterface. I had a nice idea for making all sensors and actuator in a system available via a unified API, and here are the results.\r\n\r\nThe concepts are very similar to (grnc) netdev and netif - every actuator and sensor is accessible through the same API (read and write for now) with one single data structure used of parameter passing -> `phydat_t`. All devices register at a central location and can then be listed, queried, searched and accessed. By specifying unique classes of devices, one could search for: \"give me all sensors, that read pressure values\" or similar.\r\n\r\nThis data structure `phydat_t` is made for carrying up to 3 dimensions of physical values, e.g. values read by sensor or set values for actuators. It takes only ~8 byte and contains additional to the data the physical unit and a scaling factor.\r\n\r\nAlso I included the sensors for auto-initialization, exactly in the same way we do it for network interfaces: In the board or in the application you just define a set of parameters for a device, and auto-init takes care of the rest.\r\n\r\nTesting this PR is best done on the `iot-lab_M3`, as I included all 4 sensors and 3 LED (actuators) into this PR. A little comparison:\r\n\r\nCode size of the default example before:\r\n```\r\n   text\t   data\t    bss\t    dec\t    hex\r\n  28592\t    168\t   7304\t  36064\t   8ce0\r\n```\r\nand after:\r\n```\r\n   text\t   data\t    bss\t    dec\t    hex\r\n  27648\t    168\t   7408\t  35224\t   8998\r\n```\r\nWe save ~900 byte of flash and lose ~100byte of RAM. The saved flash is mainly due to one unified shell command (instead of one for each sensor before). The lost RAM is spend on the RASI registry, in this setup there are 8 devices in it (5 sensor entries, 3 LEDs) and one entry is 12 byte...\r\n\r\n\r\nThe amount of touched files looks worse than it is - this PR is based on #3535 and #3420.\r\n"},"comment":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/comments/127205296","html_url":"https://github.com/RIOT-OS/RIOT/pull/3538#issuecomment-127205296","issue_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/3538","id":127205296,"user":{"login":"haukepetersen","id":620834,"avatar_url":"https://avatars.githubusercontent.com/u/620834?v=3","gravatar_id":"","url":"https://api.github.com/users/haukepetersen","html_url":"https://github.com/haukepetersen","followers_url":"https://api.github.com/users/haukepetersen/followers","following_url":"https://api.github.com/users/haukepetersen/following{/other_user}","gists_url":"https://api.github.com/users/haukepetersen/gists{/gist_id}","starred_url":"https://api.github.com/users/haukepetersen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haukepetersen/subscriptions","organizations_url":"https://api.github.com/users/haukepetersen/orgs","repos_url":"https://api.github.com/users/haukepetersen/repos","events_url":"https://api.github.com/users/haukepetersen/events{/privacy}","received_events_url":"https://api.github.com/users/haukepetersen/received_events","type":"User","site_admin":false},"created_at":"2015-08-03T11:41:48Z","updated_at":"2015-08-03T11:41:48Z","body":"Thought about the name,  how about `arcade`? just not sure about the meaning, maybe something like Awesome RIOT Control/Acquisition Device Extension? Ideas?"}}