{"action":"created","issue":{"url":"https://api.github.com/repos/sandeepmistry/arduino-nRF5/issues/59","repository_url":"https://api.github.com/repos/sandeepmistry/arduino-nRF5","labels_url":"https://api.github.com/repos/sandeepmistry/arduino-nRF5/issues/59/labels{/name}","comments_url":"https://api.github.com/repos/sandeepmistry/arduino-nRF5/issues/59/comments","events_url":"https://api.github.com/repos/sandeepmistry/arduino-nRF5/issues/59/events","html_url":"https://github.com/sandeepmistry/arduino-nRF5/issues/59","id":190516100,"number":59,"title":"Support for internal hardware via external/internal libraries","user":{"login":"d00616","id":519822,"avatar_url":"https://avatars.githubusercontent.com/u/519822?v=3","gravatar_id":"","url":"https://api.github.com/users/d00616","html_url":"https://github.com/d00616","followers_url":"https://api.github.com/users/d00616/followers","following_url":"https://api.github.com/users/d00616/following{/other_user}","gists_url":"https://api.github.com/users/d00616/gists{/gist_id}","starred_url":"https://api.github.com/users/d00616/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/d00616/subscriptions","organizations_url":"https://api.github.com/users/d00616/orgs","repos_url":"https://api.github.com/users/d00616/repos","events_url":"https://api.github.com/users/d00616/events{/privacy}","received_events_url":"https://api.github.com/users/d00616/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2016-11-19T19:46:53Z","updated_at":"2016-11-26T17:14:47Z","closed_at":"2016-11-26T17:14:47Z","body":"The nRF5 Platform provides a lot of internal Hardware like:\r\n- Watchdog Timer\r\n- PPI\r\n- RADIO\r\n- Temperature Sensor\r\n- NFC\r\n- I2S\r\n- Hardware Random Number Generator\r\n....\r\n\r\nI think the best way is to provide bundled libraries supporting the internal hardware instead of forking an external library like https://github.com/sandeepmistry/arduino-nRF5/pull/55#issuecomment-261719099 or https://github.com/sandeepmistry/arduino-nRF5/pull/54#issuecomment-258714787\r\n\r\nFor other platforms a lot of libraries are included:\r\n- [Arduino for AVR](https://github.com/arduino/Arduino/tree/master/hardware/arduino/avr/libraries) comes with \"EEPROM\", \"SPI\", \"HID\", \"SoftwareSerial\", \"Wire\".\r\n- [Arduino for SAMD](https://github.com/arduino/ArduinoCore-samd/tree/master/libraries) is bundled with \"HID\", \"SAMD_AnalogCorrection\", \"SPI\", \"USBHost\" and \"Wire\".\r\n- [Arduino for ESP8266](https://github.com/esp8266/Arduino/tree/master/libraries) comes with 24 libraries supporting Hard- and Software features.\r\n\r\nI think there is no problem to bundle more libraries than Arduino for AVR. This makes it easier for many people use the internal Hardware of nRF5 MCU.\r\n\r\nExample: In the future arduino-nRF5 is included into \"Board Manager\" per default like a lot of other boards. The installation is easy. Nobody sees what is written in README. The most people have no knowledge about complete functionality provided by nRF5 hardware.\r\n\r\nTo use an external library you must know that the MCU provides a functionality, you have to know that there are external libraries providing Nordic specific functionality and last but not least you have to choose a correct version. Libraries like [SleepyDog](https://github.com/adafruit/Adafruit_SleepyDog/blob/master/library.properties) are marked as compatible but they aren't.\r\n\r\nIn my opinion, when hardware functionality is implemented in external libraries this results in projects using more hardware, like a external temerature sensor instead of the internal one, or insecure cryptogaphy by seeding a pseudo random number generator with input of an analog pin instead of using random numbers generated with included hardware RNG...\r\n\r\nIf you wanna provide the hardware functionality across external libraries, i think the best way is to create a github organization which collects all additional libraries. This helps people with advanced knowledge to find out what is implemented. I think in most cases a fork of libraries like SlepyDog or TrueRandom must be maintained by people working with arduino-nrf5."},"comment":{"url":"https://api.github.com/repos/sandeepmistry/arduino-nRF5/issues/comments/263074757","html_url":"https://github.com/sandeepmistry/arduino-nRF5/issues/59#issuecomment-263074757","issue_url":"https://api.github.com/repos/sandeepmistry/arduino-nRF5/issues/59","id":263074757,"user":{"login":"sandeepmistry","id":1163840,"avatar_url":"https://avatars.githubusercontent.com/u/1163840?v=3","gravatar_id":"","url":"https://api.github.com/users/sandeepmistry","html_url":"https://github.com/sandeepmistry","followers_url":"https://api.github.com/users/sandeepmistry/followers","following_url":"https://api.github.com/users/sandeepmistry/following{/other_user}","gists_url":"https://api.github.com/users/sandeepmistry/gists{/gist_id}","starred_url":"https://api.github.com/users/sandeepmistry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sandeepmistry/subscriptions","organizations_url":"https://api.github.com/users/sandeepmistry/orgs","repos_url":"https://api.github.com/users/sandeepmistry/repos","events_url":"https://api.github.com/users/sandeepmistry/events{/privacy}","received_events_url":"https://api.github.com/users/sandeepmistry/received_events","type":"User","site_admin":false},"created_at":"2016-11-26T17:14:47Z","updated_at":"2016-11-26T17:14:47Z","body":"I agree with @dlabun, for now the goal of this project is to provide a similar set of capabilities as the official Arduino SAMD core of which it is based.\r\n\r\nFrom my perspective the ESP8266 core bundles more libraries than it should.\r\n\r\nAlso, when if comes to library discoverability, bundling then with the core only solves one problem. It's still key to have proper documentation. For example, for the SPI and Wire libraries included in the core the official Arduino reference can be used: https://www.arduino.cc/en/Reference/Libraries because the API is 100% compatible.\r\n\r\n> In the future arduino-nRF5 is included into \"Board Manager\" per default like a lot of other boards.\r\n\r\nI'm skeptical this will happen, only official Arduino products are included in the board manager by default.\r\n\r\n> If you wanna provide the hardware functionality across external libraries, i think the best way is to create a github organization which collects all additional libraries. This helps people with advanced knowledge to find out what is implemented. I think in most cases a fork of libraries like SlepyDog or TrueRandom must be maintained by people working with arduino-nrf5.\r\n\r\nFeel free to start the Github organization. I don't have the bandwidth to take on such efforts at this time."}}
{"actor":{"display_login":"sandeepmistry"}}