{"action":"closed","issue":{"url":"https://api.github.com/repos/espruino/Espruino/issues/698","repository_url":"https://api.github.com/repos/espruino/Espruino","labels_url":"https://api.github.com/repos/espruino/Espruino/issues/698/labels{/name}","comments_url":"https://api.github.com/repos/espruino/Espruino/issues/698/comments","events_url":"https://api.github.com/repos/espruino/Espruino/issues/698/events","html_url":"https://github.com/espruino/Espruino/issues/698","id":115809487,"number":698,"title":"Dedicated module for NeoPixel support","user":{"login":"nkolban","id":3421732,"avatar_url":"https://avatars.githubusercontent.com/u/3421732?v=3","gravatar_id":"","url":"https://api.github.com/users/nkolban","html_url":"https://github.com/nkolban","followers_url":"https://api.github.com/users/nkolban/followers","following_url":"https://api.github.com/users/nkolban/following{/other_user}","gists_url":"https://api.github.com/users/nkolban/gists{/gist_id}","starred_url":"https://api.github.com/users/nkolban/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nkolban/subscriptions","organizations_url":"https://api.github.com/users/nkolban/orgs","repos_url":"https://api.github.com/users/nkolban/repos","events_url":"https://api.github.com/users/nkolban/events{/privacy}","received_events_url":"https://api.github.com/users/nkolban/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/espruino/Espruino/labels/ESP8266","name":"ESP8266","color":"d4c5f9"}],"state":"closed","locked":false,"assignee":{"login":"nkolban","id":3421732,"avatar_url":"https://avatars.githubusercontent.com/u/3421732?v=3","gravatar_id":"","url":"https://api.github.com/users/nkolban","html_url":"https://github.com/nkolban","followers_url":"https://api.github.com/users/nkolban/followers","following_url":"https://api.github.com/users/nkolban/following{/other_user}","gists_url":"https://api.github.com/users/nkolban/gists{/gist_id}","starred_url":"https://api.github.com/users/nkolban/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nkolban/subscriptions","organizations_url":"https://api.github.com/users/nkolban/orgs","repos_url":"https://api.github.com/users/nkolban/repos","events_url":"https://api.github.com/users/nkolban/events{/privacy}","received_events_url":"https://api.github.com/users/nkolban/received_events","type":"User","site_admin":false},"assignees":[{"login":"nkolban","id":3421732,"avatar_url":"https://avatars.githubusercontent.com/u/3421732?v=3","gravatar_id":"","url":"https://api.github.com/users/nkolban","html_url":"https://github.com/nkolban","followers_url":"https://api.github.com/users/nkolban/followers","following_url":"https://api.github.com/users/nkolban/following{/other_user}","gists_url":"https://api.github.com/users/nkolban/gists{/gist_id}","starred_url":"https://api.github.com/users/nkolban/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nkolban/subscriptions","organizations_url":"https://api.github.com/users/nkolban/orgs","repos_url":"https://api.github.com/users/nkolban/repos","events_url":"https://api.github.com/users/nkolban/events{/privacy}","received_events_url":"https://api.github.com/users/nkolban/received_events","type":"User","site_admin":false}],"milestone":null,"comments":21,"created_at":"2015-11-09T06:34:15Z","updated_at":"2016-09-19T05:29:21Z","closed_at":"2016-09-19T05:29:21Z","body":"The NeoPixel (aka WS2811, WS2812 and others) is a smart LED that contains an embedded controller.  It can take a one wire stream of data and change its color based on this while at the same time allowing other NeoPixels to be serially connected in a chain.   In order to drive these NeoPixels, sub microsecond timings are required in the GPIO signals in conjunction with no-latency control (there is no clock signal).  This is extremely hard to do even in native C and believed to be unlikely to be achieved in a native JS app.  Possibilities for implementing these functions include hardware SPI and other techniques.\r\n\r\nFor some boards however, (eg. ESP8266) it may make sense to provide a native C/Assembler implementation that can then be wrapped in a JS module built into the base Espruino.  Proto types of this have been tested and seem to work.   The amount of compiled code appears to be on the order of 100-200 bytes with no apparent static storage being required and hence can live exclusively in flash memory without run-time impact on precious RAM.\r\n\r\nThis Issue tracks any work items needed to provide this function as well as discuss other ramifications such as design choices for the module and \"correctness\" of adding ostensibly non-JavaScript function into a JavaScript runtime environment."}}
{"actor":{"display_login":"nkolban"}}