{"action":"created","issue":{"url":"https://api.github.com/repos/WellDone/MoMo-Firmware/issues/153","labels_url":"https://api.github.com/repos/WellDone/MoMo-Firmware/issues/153/labels{/name}","comments_url":"https://api.github.com/repos/WellDone/MoMo-Firmware/issues/153/comments","events_url":"https://api.github.com/repos/WellDone/MoMo-Firmware/issues/153/events","html_url":"https://github.com/WellDone/MoMo-Firmware/pull/153","id":53351846,"number":153,"title":"Update momo shell with better help features and ability to add packages","user":{"login":"timburke","id":2424759,"avatar_url":"https://avatars.githubusercontent.com/u/2424759?v=3","gravatar_id":"","url":"https://api.github.com/users/timburke","html_url":"https://github.com/timburke","followers_url":"https://api.github.com/users/timburke/followers","following_url":"https://api.github.com/users/timburke/following{/other_user}","gists_url":"https://api.github.com/users/timburke/gists{/gist_id}","starred_url":"https://api.github.com/users/timburke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timburke/subscriptions","organizations_url":"https://api.github.com/users/timburke/orgs","repos_url":"https://api.github.com/users/timburke/repos","events_url":"https://api.github.com/users/timburke/events{/privacy}","received_events_url":"https://api.github.com/users/timburke/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/WellDone/MoMo-Firmware/labels/Documentation","name":"Documentation","color":"bfe5bf"},{"url":"https://api.github.com/repos/WellDone/MoMo-Firmware/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/WellDone/MoMo-Firmware/labels/support+tools","name":"support tools","color":"009800"},{"url":"https://api.github.com/repos/WellDone/MoMo-Firmware/labels/unit+testing","name":"unit testing","color":"d7e102"}],"state":"open","locked":false,"assignee":{"login":"amcgee","id":947888,"avatar_url":"https://avatars.githubusercontent.com/u/947888?v=3","gravatar_id":"","url":"https://api.github.com/users/amcgee","html_url":"https://github.com/amcgee","followers_url":"https://api.github.com/users/amcgee/followers","following_url":"https://api.github.com/users/amcgee/following{/other_user}","gists_url":"https://api.github.com/users/amcgee/gists{/gist_id}","starred_url":"https://api.github.com/users/amcgee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amcgee/subscriptions","organizations_url":"https://api.github.com/users/amcgee/orgs","repos_url":"https://api.github.com/users/amcgee/repos","events_url":"https://api.github.com/users/amcgee/events{/privacy}","received_events_url":"https://api.github.com/users/amcgee/received_events","type":"User","site_admin":false},"milestone":null,"comments":1,"created_at":"2015-01-04T22:52:35Z","updated_at":"2015-01-04T22:55:08Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/WellDone/MoMo-Firmware/pulls/153","html_url":"https://github.com/WellDone/MoMo-Firmware/pull/153","diff_url":"https://github.com/WellDone/MoMo-Firmware/pull/153.diff","patch_url":"https://github.com/WellDone/MoMo-Firmware/pull/153.patch"},"body":"This PR adds a new syslog implementation that does not require sprintf'ing things, allows the logging of typed data and in the future can facilitate hardware testing by allowing the logging of typed data into a special 'test' log that can be inspected to see if hardware tests were successful for or not.  The implementation of syslog and usage is detailed [here](https://github.com/timburke/MoMo-Firmware/blob/feature-taggedsyslog/doc/92-SystemLog.md).\r\n\r\nThe reason why I wanted to change it was so that we can get better data on running momo systems including the actual RAM variables for debugging and development purposes.  This required some fairly extensive additional work to automatically match python types with firmware types automatically and is used in syslog as well as read_ram to read controller ram variables and in the future can be used for symbolic debugging in the simulators as well.\r\n\r\nThe main disadvantage of the new systemlog vs the old one is that you now need a log definition file in order to translate the log messages into english text and match types with the logged parameters.  If you don't have a log definition handy for the module, the syslog will do the best it can and always show you as much as it can with the information that it has.  There is enough metadata stored with each logged parameter to display it as either an integer, ascii string or binary blob without a log definition but with a log definition file you can give each parameter a name and associate rich types with each binary blob that can have complicated processing and display routines. \r\n\r\n## Changes from Old System Log\r\n\r\n- any amount of data can be logged with a message\r\n- the message string is not embedded in the log entry but instead a unique 32-bit identifier is stored that is used to look up the message and learn how to parse and display the typed data (as detailed in 92-SystemLog.md linked above)\r\n- modules that want to use the syslog need to define the format of the log entries that they use in a log_definition.ldf file according to the above linked documentation.  This has been done for mainboard and shared/pic24 code.\r\n- the systemlog can be inspected and displayed using the momo tool\r\n\r\n## Changes to the MoMo Tool\r\n\r\n- Documentation for the MoMo tool is now [here](https://github.com/timburke/MoMo-Firmware/blob/feature-taggedsyslog/doc/42-momo.md)\r\n- typedargs has been updated to allow for dynamically adding types from external packages.  This is needed so that firmware modules can define python types for the variables that they wish to log or otherwise expose to the user.  \r\n- MoMo has an optional config file that allows the running of initialization commands for certain contexts to repetitively inject types and log definitions for commonly used modules.  This is described in the above documentation for the momo tool.\r\n\r\n## Additional Changes\r\n- Scons now tracks pic24 include statements to add dependencies on header files so that modifying a header triggers a rebuild.\r\n- MoMo tool help system is fixed (it could throw exceptions sometimes before)\r\n- MoMo tool compatibility with windows is fixed to have working tab completion\r\n- Unit tests are now run for pymomo using the nose testing framework (provision.sh and build_all.sh have been updated to run these tests and import the required packages)\r\n\r\nAdditional work that can be done on these changes (for a future PR) is detailed in Issue #152."},"comment":{"url":"https://api.github.com/repos/WellDone/MoMo-Firmware/issues/comments/68653441","html_url":"https://github.com/WellDone/MoMo-Firmware/pull/153#issuecomment-68653441","issue_url":"https://api.github.com/repos/WellDone/MoMo-Firmware/issues/153","id":68653441,"user":{"login":"timburke","id":2424759,"avatar_url":"https://avatars.githubusercontent.com/u/2424759?v=3","gravatar_id":"","url":"https://api.github.com/users/timburke","html_url":"https://github.com/timburke","followers_url":"https://api.github.com/users/timburke/followers","following_url":"https://api.github.com/users/timburke/following{/other_user}","gists_url":"https://api.github.com/users/timburke/gists{/gist_id}","starred_url":"https://api.github.com/users/timburke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timburke/subscriptions","organizations_url":"https://api.github.com/users/timburke/orgs","repos_url":"https://api.github.com/users/timburke/repos","events_url":"https://api.github.com/users/timburke/events{/privacy}","received_events_url":"https://api.github.com/users/timburke/received_events","type":"User","site_admin":false},"created_at":"2015-01-04T22:55:08Z","updated_at":"2015-01-04T22:55:08Z","body":"Is TravisCI down?  I don't see an attempt to build this PR appearing."}}