docs: components - ds3
This commit is contained in:
parent
752eca2587
commit
8231974761
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -798,5 +798,231 @@
|
||||
},
|
||||
"timestamp": "2025-05-27T07:31:46.793Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/analog-level-switch.md",
|
||||
"content": "IyBBbmFsb2dMZXZlbFN3aXRjaAoKKipQYXRoKiogOiBbYHNyYy9jb21wb25lbnRzL0FuYWxvZ0xldmVsU3dpdGNoLmhgXShzcmMvY29tcG9uZW50cy9BbmFsb2dMZXZlbFN3aXRjaC5oKQoKKipSZXZpc2lvbiBoaXN0b3J5KiogOiBpbml0aWFsIGRvY3VtZW50YXRpb24KCkNvbXBvbmVudCB0byByZWFkIGFuIGFuYWxvZyBpbnB1dCBhcyBhIG11bHRpLXBvc2l0aW9uIHN3aXRjaC4gSW50ZXJwcmV0cyBhbmFsb2cgdm9sdGFnZSBhcyBkaXNjcmV0ZSBwb3NpdGlvbnMgKHNsb3RzKSB1c2luZyB2b2x0YWdlIGRpdmlkZXIgY2lyY3VpdHMuCgojIyBSZXF1aXJlbWVudHMKCiMjIyBQaW5zCi0gT25lIGFuYWxvZyBpbnB1dCBwaW4KCiMjIyBEZXBlbmRlbmNpZXMKLSBgY29uZmlnLmhgIC0gRm9yIGFuYWxvZyBzd2l0Y2ggcmVhZCBpbnRlcnZhbAotIGBjb25maWctbW9kYnVzLmhgIC0gRm9yIE1vZGJ1cyBjb25maWd1cmF0aW9uCi0gYENvbXBvbmVudC5oYCAtIEJhc2UgY29tcG9uZW50IGNsYXNzCi0gYG1vZGJ1cy9Nb2RidXNUQ1AuaGAgLSBNb2RidXMgVENQIGZ1bmN0aW9uYWxpdHkKCiMjIyBIYXJkd2FyZQotIEZpeGVkIHJlc2lzdG9yIChSX2ZpeGVkKSBjb25uZWN0ZWQgZnJvbSBhbmFsb2cgcGluIHRvIEdORAotIFNldCBvZiBzd2l0Y2hlZCByZXNpc3RvcnMgKFJfc3cwLCBSX3N3MSwgLi4uLCBSX3N3Ti0xKSBmb3IgZWFjaCBzbG90CgojIyBGZWF0dXJlcwoKLSBSZWFkcyBhbmFsb2cgdm9sdGFnZSBhbmQgbWFwcyBpdCB0byBkaXNjcmV0ZSBzbG90cwotIENvbmZpZ3VyYWJsZSBudW1iZXIgb2Ygc2xvdHMgKHVwIHRvIDMyKQotIEFkanVzdGFibGUgQURDIHN0ZXAgcGVyIHNsb3QgYW5kIG9mZnNldAotIFNtb290aGluZyBhbGdvcml0aG0gKE1vdmluZyBBdmVyYWdlIC8gRXhwb25lbnRpYWwgTW92aW5nIEF2ZXJhZ2UpCi0gRGVib3VuY2luZyBtZWNoYW5pc20gZm9yIHN0YWJsZSByZWFkaW5ncwotIEh5c3RlcmVzaXMgZm9yIG5vaXNlIHJlc2lzdGFuY2UKLSBNb2RidXMgVENQIGludGVncmF0aW9uCi0gQWN0aXZlIHNsb3QgZGV0ZWN0aW9uIGFuZCByZXBvcnRpbmcKLSBSYXcgYW5kIHNtb290aGVkIEFEQyB2YWx1ZSBhY2Nlc3MKLSBTZXJpYWwgY29tbXVuaWNhdGlvbiBzdXBwb3J0CgojIyBDb25maWd1cmF0aW9uCgojIyMgQ29tcGlsZS10aW1lIERlZmluZXMKLSBgQU5BTE9HX0xWTF9TTE9UU19NQVhgIC0gTWF4aW11bSBudW1iZXIgb2Ygc2xvdHMgKGRlZmF1bHQ6IDMyKQotIGBBTFNfU01PT1RISU5HX1NJWkVgIC0gU2FtcGxlcyBpbiBtb3ZpbmctYXZlcmFnZSBidWZmZXIgKGRlZmF1bHQ6IDgpCi0gYEFMU19ERUJPVU5DRV9DT1VOVGAgLSBJZGVudGljYWwgZGV0ZWN0aW9ucyBiZWZvcmUgY29tbWl0IChkZWZhdWx0OiAzKQotIGBBTFNfSFlTVEVSRVNJU19DT0RFU2AgLSDCsUFEQyBjb2RlcyBndWFyZC1iYW5kIChkZWZhdWx0OiA0KQotIGBBTFNfUkVBRF9JTlRFUlZBTF9NU2AgLSBSZWFkIGludGVydmFsIG92ZXJyaWRlIChkZWZhdWx0OiAyNW1zKQotIGBBTFNfVVNFX0VNQWAgLSBFbmFibGUgRXhwb25lbnRpYWwgTW92aW5nIEF2ZXJhZ2UgKGRlZmF1bHQ6IDAgLSBkaXNhYmxlZCkKCiMjIFRvZG9zCgotIEFkZCBjYWxpYnJhdGlvbiBmdW5jdGlvbmFsaXR5Ci0gSW1wbGVtZW50IGNvbmZpZ3VyYWJsZSBoeXN0ZXJlc2lzIHNldHRpbmdzCi0gQWRkIG91dC1vZi1yYW5nZSBkZXRlY3Rpb24gYW5kIGhhbmRsaW5nCi0gQWRkIGNvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBhbmQgZXJyb3IgaGFuZGxpbmcKLSBJbXBsZW1lbnQgZGlhZ25vc3RpYyBtb2RlIGZvciBjaXJjdWl0IHZhbGlkYXRpb24KCiMjIEV4YW1wbGUKCmBgYGNwcAojZGVmaW5lIFBJTl9BTkFMT0dfU1dJVENIX1AwXzAgMzIKI2RlZmluZSBTTE9UX0NPVU5UXzAgNCAgLy8gNCBwb3NpdGlvbiBzd2l0Y2gKI2RlZmluZSBBRENfU1RFUF9QRVJfU0xPVF8wIDgwMCAvLyBBREMgY291bnRzIGJldHdlZW4gZWFjaCBzbG90CiNkZWZpbmUgQURDX09GRlNFVF8wIDIwMCAgLy8gRmlyc3Qgc2xvdCBzdGFydHMgYXQgQURDIHZhbHVlIDIwMAojZGVmaW5lIElEX0FOQUxPR19TV0lUQ0hfMCAxNAojZGVmaW5lIFAyU19BTkFMT0dfU1dJVENIXzBfTUJfQURIUiAweDAxMDEKCi8vIEluIGluaXRpYWxpemF0aW9uCiNpZmRlZiBQSU5fQU5BTE9HX1NXSUNUX1AwXzAKICBhbmFsb2dTd2l0Y2hfMCA9IG5ldyBBbmFsb2dMZXZlbFN3aXRjaCgKICAgICAgdGhpcywgICAgICAgICAgICAgICAgICAgICAgLy8gb3duZXIKICAgICAgUElOX0FOQUxPR19TV0lUQ0hfUDBfMCwgICAgICAvLyBwaW4KICAgICAgU0xPVF9DT1VOVF8wLCAgICAgICAgICAgICAgICAvLyBudW1MZXZlbHMKICAgICAgQURDX1NURVBfUEVSX1NMT1RfMCwgICAgICAgICAgLy8gbGV2ZWxTdGVwCiAgICAgIEFEQ19PRkZTRVRfMCwgICAgICAgICAgICAgICAgIC8vIGFkY1ZhbHVlT2Zmc2V0CiAgICAgIElEX0FOQUxPR19TV0lUQ0hfMCwgICAgICAgICAgIC8vIGlkCiAgICAgIFAyU19BTkFMT0dfU1dJVENIXzBfTUJfQURIUiAgIC8vIG1vZGJ1c0FkZHJlc3MKICA7CiAgaWYgKGFuYWxvZ1N3aXRjaF8wKQogIHsKICAgIGNvbXBvbmVudHMucHVzaF9iYWNrKGFuYWxvZ1N3aXRjaF8wKTsKICAgIExvZy5pbmZvbG4oRigiQW5hbG9nU3dpdGNoXzAgaW5pdGlhbGl6ZWQuIFBpbjolZCwgU2xvdHM6JWQsIFN0ZXA6JWQsIE9mZnNldDolZCwgSUQ6JWQsIE1COiVkIiksCiAgICAgICAgICAgICAgUElOX0FOQUxPR19TV0lUQ0hfUDBfMCwgU0xPVF9DT1VOVF8wLAogICAgICAgICAgICAgIEFEQ19TVEVQX1BFUl9TTE9UXzAsIEFEQ19PRkZTRVRfMCwKICAgICAgICAgICAgICBJRF9BTkFMT0dfU1dJVENIXzAsIFAyU19BTkFMT0dfU1dJVENIXzBfTUJfQURIUik7CiAgfQogIGVsc2UKICB7CiAgICBMb2cuZXJyb3JsbihGKCJBbmFsb2dTd2l0Y2hfMCBpbml0aWFsaXphdGlvbiBmYWlsZWQuIikpOwogIH0KI2VuZGlmCmBgYA=="
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T13:20:25.062Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/analog-level-switch.md",
|
||||
"content": "IyBBbmFsb2cgTGV2ZWwgU3dpdGNoCgpgYGB0eXBlc2NyaXB0CnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KYGB0CgoqKlBhdGgqKjogW3NyYy9jb21wb25lbnRzL0FuYWxvZ0xldmVsU3dpdGNoLmhdKC4uL3NyYy9jb21wb25lbnRzL0FuYWxvZ0xldmVsU3dpdGNoLmgpCgpDb21wb25lbnQgdG8gcmVhZCBhbiBhbmFsb2cgaW5wdXQgYXMgYSBtdWx0aS1wb3NpdGlvbiBzd2l0Y2ggd2l0aCB2b2x0YWdlIGRpdmlkZXIgc2V0dXAuCgojIyBSZXF1aXJlbWVudHMKCi0gKipQaW5zKio6IEFuYWxvZyBpbnB1dCBwaW4KLSAqKkRlcGVuZGVuY2llcyoqOgogIC0gQXJkdWluby5oCiAgLSBBcmR1aW5vTG9nLmgKICAtIGNvbmZpZy5oCiAgLSBBcHAuaAogIC0gQ29tcG9uZW50LmgKICAtIG1vZGJ1cy9Nb2RidXNUQ1AuaAogIC0gY29uZmlnLW1vZGJ1cy5oCi0gKipIYXJkd2FyZSoqOiBWb2x0YWdlIGRpdmlkZXIgY2lyY3VpdCB3aXRoIHJlc2lzdG9ycyBmb3IgZWFjaCBzbG90CgojIyBGZWF0dXJlcwoKLSBNdWx0aS1wb3NpdGlvbiBhbmFsb2cgc3dpdGNoIHJlYWRpbmcKLSBDb25maWd1cmFibGUgQURDIG9mZnNldCBhbmQgc3RlcCBzaXplCi0gU21vb3RoaW5nIGZpbHRlciAobW92aW5nIGF2ZXJhZ2Ugb3IgRU1BKQotIERlYm91bmNlIGxvZ2ljIGZvciBzdGFibGUgcmVhZGluZ3MKLSBIeXN0ZXJlc2lzIGZvciByb2J1c3QgbGV2ZWwgZGV0ZWN0aW9uCi0gTW9kYnVzIFRDUCBpbnRlZ3JhdGlvbgotIFJlYWwtdGltZSBBREMgdmFsdWUgZXhwb3N1cmUKLSBDb25maWd1cmFibGUgc2FtcGxpbmcgaW50ZXJ2YWwKCiMjIENvbmZpZ3VyYXRpb24KCmBgYGMKI2RlZmluZSBBTkFMT0dfTFZMX1NMT1RTX01BWCAgICAgIDMyICAgICAgLy8gaGFyZHdhcmUgbGltaXQKI2RlZmluZSBBTFNfU01PT1RISU5HX1NJWkUgICAgICAgIDggICAgICAgLy8gc21vb3RoaW5nIGJ1ZmZlciBzaXplCiNkZWZpbmUgQUxTX0RFTE9VTkNFX0NPVU5UICAgICAgICAzICAgICAgIC8vIGNvbmZpcm1hdGlvbnMKI2RlZmluZSBBTFNfSFlTVEVSRVNJU19DT0RFUyAgICAgIDQgICAgICAgLy8gQURDIGNvZGVzIGd1YXJkZAojZGVmaW5lIEFMU19SRUFEX0lOVEVSVkFMX01TICAgICAgMjUgICAgICAgLy8gcmVhZCBpbnRlcnZhbGwKI2RlZmluZSBBTFNfVVNFX0VNQSAgICAgICAgICAgICAgIDA=CmBgYAoKIyMgVG9kb3MKCi0gRW5oYW5jZSBlcnJvciBoYW5kbGluZyBmb3IgaW52YWxpZCBjb25maWd1cmF0aW9ucwotIEFkZCBhdXRvLWNhbGlicmF0aW9uIGZlYXR1cmUKLSBJbXBsZW1lbnQgZGlhZ25vc3RpY3MgZm9yIG9wZW4vY2xvc2VkIGNpcmN1aXQgZGV0ZWN0aW9uCi0gQWRkIGNvbmZpZ3VyYWJsZSB0b2xlcmFuY2UgZm9yIG5vaXN5IGVudmlyb25tZW50cwoKIyMgRXhhbXBsZQoKYGBgYworLy8gQ29tcG9uZW50IGluaXRpYWxpemF0aW9uIGluIE1haW5BY3Rvcit8fC5jcHAKI2lmZGVmIFBJTl9BTkFMT0dfTEVWRUxfU1dJVENIXzAKICBhbmFsb2dMZXZlbFN3aXRjaF8wID0gbmV3IEFuYWxvZ0xldmVsU3dpdGNoCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIFBJTl9BTkFMT0dfTEVWRUxfU1dJVENIXzAsIC8vIGFuYWxvZyBwaW4KICAgICAgNCwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbnVtIGxldmVscwogICAgICA4MDAsICAgICAgICAgICAgICAgICAgICAgIC8vIGxldmVsIHN0ZXAKICAgICAgMjAwLCAgICAgICAgICAgICAgICAgICAgICAgLy8gQURDIHZhbHVlIG9mZnNldAogICAgICBJRF9BTkFMT0dfTEVWRUxfU1dJVENIXzAsIC8vIGNvbXBvbmVudCBJRAogICAgICBBTkFMT0dfTEVWRUxfU1dJVENIXzBfTUJfQUREUiAvLyBNb2RidXMgYWRkcmVzcwogICk7CiAgaWYgKGFuYWxvZ0xldmVsU3dpdGNoXzApCiAgewogICAgY29tcG9uZW50cy5wdXNoX2JhY2soYW5hbG9nTGV2ZWxTd2l0Y2hfMCk7CiAgICBMb2cuaW5mb2xuKEYoIkFuYWxvZ0xldmVsU3dpdGNoXzAgaW5pdGlhbGl6ZWQuIFBpbjolZCwgTGV2ZWxzOiVkLCBTdGVwOiVkLCBPZmZzZXQ6JWQsIElEOiVkLCBNQjolZCIpLAogICAgICAgICAgICAgICBQSU5fQU5BTE9HX0xFVkVMX1NXSVRDSF8wLCA0LCA4MDAsIDIwMCwKICAgICAgICAgICAgICAgSURfQU5BTE9HX0xFVkVMX1NXSVRDSF8wLCBBTkFMT0dfTEVWRUxfU1dJVENIXzBfTUJfQUREUik7CiAgfQogIGVsc2UKICB7CiAgICBMb2cuZXJyb3JsbihGKCJBbmFsb2dMZXZlbFN3aXRjaF8wIGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKSk7CiAgfQojZW5kaWYKYGBgCgojIyBWb2x0YWdlIERpdmlkZXIgU2V0dXAKCkZvciBhIDUtdm9sdCBzeXN0ZW0gd2l0aCA0IGxldmVsczogClJfcHVsbF9kb3duID0gMTBrIGZyb20gYW5hbG9nIHBpbiB0byBHTkQKCnwgU2xvdCB8IEFORG9WYWx1ZSB8IFJfeFsqXSh2aWEgc3dpdGNoIHRvIDVWKSB8IEl0ZW0gfAp8LS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLXwKfCAwICAgfCA2MjAgICAgICAgfCA1NmsgICAgICAgICAgICAgICAgICAgfCA6VzgxMDozVnw9PiB1c2luZyBBRFNfNFwiNTZrPz4gfAp8IDEgICB8IDEzNjUgICAgICB8IDIwayAgICAgICAgICAgICAgICAgICB8IDIwayBzdGFuZGFyZCBjYXJib24gICAgICAgfAp8IDIgICB8IDIyNTAgICAgICB8IDguMmsgICAgICAgICAgICAgICAgICAgfCA4LjJrIHN0YW5kYXJkIGNhcmJvbiAgICAgICB8CnwgMyAgIHwgMzAxMSAgICAgIHwgMy42ayAgICAgICAgICAgICAgICAgICB8IDMuNmsgc3RhbmRhcmQgY2FyYm9uICAgICAgIHwKClZfb3V0ID0gNVYgKiAoMTBrIC8gKFJfeCArIDEwaykpCg=="
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T13:22:19.975Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/extruder.md",
|
||||
"content": "LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIEV4dHJ1ZGVyCgoqKlBhdGgqKiA6IFtzcmMvY29tcG9uZW50cy9FeHRydWRlci5oXSguLi9zcmMvY29tcG9uZW50cy9FeHRydWRlci5oKQoKSW5kdXN0cmlhbCBleHRydWRlciBjb250cm9sIGNvbXBvbmVudCBmb3IgbWFuYWdpbmcgVkZELWRyaXZlbiBleHRydXNpb24gb3BlcmF0aW9ucy4gUHJvdmlkZXMgbWFudWFsIGFuZCBhdXRvbWF0aWMgZXh0cnVzaW9uIG1vZGVzIHdpdGggam9zdGljayBjb250cm9sLCBzcGVlZCBhZGp1c3RtZW50LCBhbmQgamFtIGRldGVjdGlvbi4KCiMjIFJlcXVpcmVtZW50cwoKKipEZXBlbmRlbmNpZXMqKjoKLSBTQUtPX1ZGRCBjb21wb25lbnQKLSAzUG9zQW5hbG9nIGNvbXBvbmVudCAob3B0aW9uYWwpCi0gUE9UIGNvbXBvbmVudCAob3B0aW9uYWwpCgojIyBGZWF0dXJlcwoKLSAqKk11bHRpLW1vZGUgT3BlcmF0aW9uKio6IE1hbnVhbCBhbmQgYXV0b21hdGljIGV4dHJ1c2lvbiBtb2RlcwotICoqVmFyaWFibGUgU3BlZWQqKjogQ29uZmlndXJhYmxlIHNwZWVkIHByZXNldHMgYW5kIFBPVC1iYXNlZCBmaW5lIHR1bmluZwogIC0gU0xPVzogMTAuMDBIegogIC0gTUVESVVNOiAyNS4wMEh6CiAgLSBGQVNUOiA1MC4wMEh6IChmb3IgZnV0dXJlIHVzZSkKLSAqKkphbSBEZXRlY3Rpb24qKjogVG9ycXVlLWJhc2VkIGphbW1pbmcgZGV0ZWN0aW9uIHdpdGggYXV0b21hdGljIHN0b3AKLSAqKk92ZXJsb2FkIFByb3RlY3Rpb24qKjogQ29uZmlndXJhYmxlIHRvcnF1ZSB0aHJlc2hvbGRzCi0gKipTYWZldHkgVGltZW91dCo6IE1heGltdW0gcnVudGltZSBwcm90ZWN0aW9uICgxNS4wMHMpCi0gKipNb2RidXMgVENQIEludGVncmF0aW9uKio6IFJlbW90ZSBjb250cm9sIGFuZCBzdGF0dXMgbW9uaXRvcmluZwoKIyMgVG9kb3MKCi0gW10gRXh0cmVuZGVkIGZhdWx0IGhhbmRsaW5nCi0gW10gUmV2ZXJzZSBleHRydXNpb24gZmVhdHVyZQotIFtdIEFkdmFuY2VkIGRpYWdub3N0aWNzIGFuZCBwZXJmb3JtYW5jZSBtZXRyaWNzCi0gW10gSGlzdG9yaWNhbCBvcGVyYXRpb24gbG9nZ2luZwoKIyMgRXhhbXBsZQoKYGBgY3BwCiNpZmRlZiBQSU5fRVhUUlVERVJfVkZEX1NJR05BTAogIHNha29WZmQgPSBuZXcgU0FLT19WRkQoCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgICAvLyBvd25lcgogICAgICBQSU5fRVhUUlVERVJfVkZEX1NJR05BTCwgICAvLyB2ZmRQaW4KICAgICAgSUQfRVhUUlVERVJfVkZELCAgICAgICAgICAgLy8gaWQKICAgICAgRVhUUlVERVJfVkZEX01CX0FERFIgICAgICAgLy8gbW9kYnVzQWRkcmVzcwogICk7CiNlbmRpZgoKI2lmZGVmIFBJTl9FeHRydWRlcl9KeXN0aWNrCiAgZXh0cnVkZXJKb3lzdGljayA9IG5ldyAzUG9zQW5hbG9nKAogICAgICB0aGlzLCAgICAgICAgICAgICAgICAgICAgLy8gb3duZXIKICAgICAgUElOX0V4dHJ1ZGVyX0p5c3RpY2ssICAgICAvLyBhbmFsb2dQaW4KICAgICAgSURfRXh0cnVkZXJfSm95c3RpY2sgICAgICAvLyBpZAogICk7CiNlbmRpZgoKI2lmZGVmIFBJTl9FWFRSVURFUF9TUEVFRApzcGVlZFBvdEV4dHJ1ZGVyID0gbmV3IFBPVF8oCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIFBJTl9FWFRSVURFUF9TUEVFRCwgICAgICAgLy8gYW5hbG9nUGluCiAgICAgIElEX0VYVFJVREVSX1NQRUVEX1BPVCwgICAgIC8vIGlkCiAgICAgIFBPVF9FWFRSVURFX1NQRUVEX01CX0FERFIgIC8vIG1vZGJ1c0FkZHJlc3MKKTsKI2VuZGlmCgojUGlmZGVmIFBJTl9FWFRSVURFX09CU0lMT0FEUG90CiAgb3ZlcmxvYWRQb3RFeHRydWRlciA9IG5ldyBQT1QoCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIFBJTl9FWFRSVURFX09CU0lMT0FEUE90LCAgICAvLyBhbmFsb2dQaW4KICAgICAgSURfRVhUUlVERVJfT1ZFUkxPQURfUE9ULCAgLy8gaWQKICAgICAgUE9UX0VYVFJVREVSX09WRVJMT0FEX01CX0FERFIgLy8gbW9kYnVzQWRkcmVzcwopOwojZW5kaWYKCiNpZmRlZiBQSU5fRVhUUlVERVJfVkZEX1NJR05BTAogIGV4dHJ1ZGVyID0gbmV3IEV4dHJ1ZGVyKAogICAgICB0aGlzLCAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIHNha29WZmQsICAgICAgICAgICAgLy8gdmZkCiAgICAgIGV4dHJ1ZGVyU295cywgICAgICAgLy8gam95c3RpY2sgKG51bGxxaXIpCiAgICAgIHNwZWVkUG90RXh0cnVkZXIsICAgIC8vIHNwZWVkUG90IChvcGUgZm9yIDBvcGVuKQogICAgICBvdmVybG9hZFBvdEV4dHJ1ZGVyIC8vIG92ZXJsb2FkUG90IChvcHRpb25hbCkKICApOjYKICBpZiAoZXh0cnVkZXIpCiAgeqFhJyBDCiMjICAgIGNvbXBvbmVudHMucHVzaF9iYWNrKGV4dHJ1ZGVyKTsKICAgIExvZy5pbmZvbG4oRigiRXh0cnVkZXIgaW5pdGlhbGl6ZWQuIFZGRDolZCwgSW8aTCVkIE1COmRwV61lcgogICAgICAgICAgICAgPC9DgmkKICAgIExvZy5lcnJvcmxuKEYoIkV4dHJ1ZGVyIGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKSk7CiAgfQojZW5kaWYKYGBgCg=="
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T13:23:11.213Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/extruder.md",
|
||||
"content": "LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIEV4dHJ1ZGVyCgoqKlBhdGgqKiA6IFtzcmMvY29tcG9uZW50cy9FeHRydWRlci5oXSguLi9zcmMvY29tcG9uZW50cy9FeHRydWRlci5oKQoKSW5kdXN0cmlhbCBleHRydWRlciBjb250cm9sIGNvbXBvbmVudCBmb3IgbWFuYWdpbmcgVkZELWRyaXZlbiBleHRydXNpb24gb3BlcmF0aW9ucy4gUHJvdmlkZXMgbWFudWFsIGFuZCBhdXRvbWF0aWMgZXh0cnVzaW9uIG1vZGVzIHdpdGggam9zdGljayBjb250cm9sLCBzcGVlZCBhZGp1c3RtZW50LCBhbmQgamFtIGRldGVjdGlvbi4KCiMjIFJlcXVpcmVtZW50cwoKKipEZXBlbmRlbmNpZXMqKjoKLSBTQUtPX1ZGRCBjb21wb25lbnQKLSAzUG9zQW5hbG9nIGNvbXBvbmVudCAob3B0aW9uYWwpCi0gUE9UIGNvbXBvbmVudCAob3B0aW9uYWwpCgojIyBGZWF0dXJlcwoKLSAqKk11bHRpLW1vZGUgT3BlcmF0aW9uKio6IE1hbnVhbCBhbmQgYXV0b21hdGljIGV4dHJ1c2lvbiBtb2RlcwotICoqVmFyaWFibGUgU3BlZWQqKjogQ29uZmlndXJhYmxlIHNwZWVkIHByZXNldHMgYW5kIFBPVC1iYXNlZCBmaW5lIHR1bmluZwogIC0gU0xPVzogMTAuMDBIegogIC0gTUVESVVNOiAyNS4wMEh6CiAgLSBGQVNUOiA1MC4wMEh6IChmb3IgZnV0dXJlIHVzZSkKLSAqKkphbSBEZXRlY3Rpb24qKjogVG9ycXVlLWJhc2VkIGphbW1pbmcgZGV0ZWN0aW9uIHdpdGggYXV0b21hdGljIHN0b3AKLSAqKk92ZXJsb2FkIFByb3RlY3Rpb24qKjogQ29uZmlndXJhYmxlIHRvcnF1ZSB0aHJlc2hvbGRzCi0gKipTYWZldHkgVGltZW91dCo6IE1heGltdW0gcnVudGltZSBwcm90ZWN0aW9uICgxNS4wMHMpCi0gKipNb2RidXMgVENQIEludGVncmF0aW9uKio6IFJlbW90ZSBjb250cm9sIGFuZCBzdGF0dXMgbW9uaXRvcmluZwoKIyMgVG9kb3MKCi0gW10gRXh0ZW5kZWQgZmF1bHQgaGFuZGxpbmcKLSBbXSBSZXZlcnNlIGV4dHJ1c2lvbiBmZWF0dXJlCi0gW10gQWR2YW5jZWQgZGlhZ25vc3RpY3MgYW5kIHBlcmZvcm1hbmNlIG1ldHJpY3MKLSBbXSBIaXN0b3JpY2FsIG9wZXJhdGlvbiBsb2dnaW5nCgojIyBFeGFtcGxlCgpgYGBjcHAKI2lmZGVmIFBJTl9FWFRSVURFX1ZGRF9TSUdOQUwKICBzYWtvVmZkID0gbmV3IFNBS09fVkZEKAogICAgICB0aGlzLCAgICAgICAgICAgICAgICAgICAgLy8gb3duZXIKICAgICAgUElOX0VYVFJVREVFX1ZGRF9TSUdOQUwsICAgLy8gdmZkUGluCiAgICAgIElEX0VYVFJVREVFX1ZGRCwgICAgICAgICAgIC8vIGlkCiAgICAgIEVYVFJVREVSX1ZGRF9NQl9BRERSICAgICAgIC8vIG1vZGJ1c0FkZHJlc3MKICApOwojZW5kaWYKCiNpZmRlZiBQSU5fRVhUUlVERVJfSk9ZU1RJQ0sKICBleHRydWRlckpveXN0aWNrID0gbmV3IDNQb3NBbmFsb2coCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgICAgLy8gb3duZXIKICAgICAgUElOX0VYVFJVREVSX0pPWVNUSUNLLCAgICAgLy8gYW5hbG9nUGluCiAgICAgIElEX0VYVFJVREVSX0pPWVNUSUNLICAgICAgLy8gaWQKICApOwojZW5kaWYKCiNpZmRlZiBQSU5fRVhUUlVERVJfU1BFRUQKICBzcGVlZFBvdEV4dHJ1ZGVyID0gbmV3IFBPVF8oCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIFBJTl9FWFRSVURFX1NQRUVELCAgICAgICAvLyBhbmFsb2dQaW4KICAgICAgSURfRVhUUlVERVJfU1BFRURfUE9ULCAgICAgLy8gaWQKICAgICAgUE9UX0VYVFJVREVFX1NQRUVEX01CX0FERFIgLy8gbW9kYnVzQWRkcmVzcwogICk7CiNlbmRpZgoKI2lmZGVmIFBJTl9FWFRSVURFX09WRVJMT0FEUEFUCiAgb3ZlcmxvYWRQb3RFeHRydWRlciA9IG5ldyBQT1QoCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIFBJTl9FWFRSVURFX09WRVJMT0FEUEFULCAgICAvLyBhbmFsb2dQaW4KICAgICAgSURfRVhUUlVERVJfT1ZFUkxPQURfUE9ULCAgLy8gaWQKICAgICAgUE9UX0VYVFJVREV7X09WRVJMT0FEX01CX0FERFIgLy8gbW9kYnVzQWRkcmVzcwogICk7CiNlbmRpZgoKI2lmZGVmIFBJTl9FWFRSVURFX1ZGRF9TSUdOQUwKICBleHRydWRlciA9IG5ldyBFeHRydWRlcigKICAgICAgdGhpcywgICAgICAgICAgICAgICAvLyBvd25lcgogICAgICBzYWtvVmZkLCAgICAgICAgICAgICAvLyB2ZmQKICAgICAgZXh0cnVkZXJKb3lzdGljaywgICAgLy8gam95c3RpY2sgKG9wdGlvbmFsKQogICAgICBzcGVlZFBvdEV4dHJ1ZGVyLCAgICAvLyBzcGVlZFBvdCAob3B0aW9uYWwpCiAgICAgIG92ZXJsb2FkUG90RXh0cnVkZXIgIC8vIG92ZXJsb2FkUG90IChvcHRpb25hbCkKICApOwogIGlmIChleHRydWRlcikKICB7CiAgICBjb21wb25lbnRzLnB1c2hfYmFjayhleHRydWRlcik7CiAgICBMb2cuaW5mb2xuKEYoIkV4dHJ1ZGVyIGluaXRpYWxpemVkLiBWRkQ6JWQsIElEOiVkLCBNQjolZCIpLAogICAgICAgICAgICAgSURfRVhUUlVERVJfVkZELCBJRF9FWFRSVURFX0NPTVBPTkVOVCwKICAgICAgICAgICAgIEVYVFJVREVSX01CX0JBU0VfQUREUkVTUyk7CiAgfQogIGVsc2UKICB7CiAgICBMb2cuZXJyb3JsbihGKCJFeHRydWRlciBpbml0aWFsaXphdGlvbiBmYWlsZWQuIikpOwogIH0KI2VuZGlmCmBgYAo="
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T13:23:52.528Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/mb-gpio.md",
|
||||
"content": "LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIE1CX0dQSU8KCioqUGF0aCoqIDogW3NyYy9jb21wb25lbnRzL0dQSU8uaF0oLi4vc3JjL2NvbXBvbmVudHMvR1BJTy5oKQoKTW9kYnVzLWVuYWJsZWQgR1BJTyBtYW5hZ2VtZW50IGNvbXBvbmVudCBmb3IgRVNQLTMyIGlpbi1kdXN0cmlhbCBhcHBsaWNhdGlvbnMuIE1hbmFnZXMgbXVsdGlwbGUgR1BJTyBwaW5zIHdpdGggY29uZmlndXJhYmxlIG1vZGVzLCB0aHJvdHRsaW5nLCBhbmQgTW9kYnVzLTQ4NSBpbnRlZ3JhdGlvbi4KCiMjIFJlcXVpcmVtZW50cwoKLSBFU1AtMzIgR1BJTyBwaW5zIChzZWUgRV9HUElPX1BpbiBlbnVtKQotIGNzdGRpbnQsIHZlY3RvciwgY2xpbWl0cwotIEFyZHVpbm9Mb2cKLSBDb21wb25lbnQgYmFzZSBjbGFzcwotIEJyaWRnZSBmb3Igc2VyaWFsIGNvbW11bmljYXRpb24KLSBlbnVtcyBmb3IgZXJyb3IgY29kZXMKLSBNb2RidXMgZGVwZW5kZW5jaWVzIChNb2RidXNUeXBlcywgTW9kYnVzVENQKQotIEFyZHVpbm9Kc29uIGZvciBjb25maWd1cmF0aW9uCgojIyBGZWF0dXJlcwoKLSBTdXBwb3J0cyBhbGwgRVNQLTMyIEdQSU8gcGlucyAoMC00OCwgZXhjbHVkaW5nIDIyLTM0KQotIE11bHRpcGxlIHBpbiBtb2RlczogSU5QVVQsIE9VVFBVVCwgSU5QVVRfUFVMTFVQLCBJTlBVVF9QVUxMRE9XTiwgT1VUUFVUX09QRU5fRFJBSU4sIEFOQUxPR19JTlBVVCwgVE9VQ0gKLSBNb2RidXMgaW50ZWdyYXRpb24gd2l0aCBmdWxsIHJlYWQvd3JpdGUgYWNjZXNzIGNvbnRyb2wKLSBPcGVyYXRpb24gdGhyb3R0bGluZyB3aXRoIGNvbmZpZ3VyYWJsZSBpbnRlcnZhbHMKLSBEdXBsaWNhdGUgdmFsdWUgY2FjaGluZyB0byByZWR1Y2UgdW5uZWNlc3NhcnkgSSvCtyBvcGVyYXRpb25zCi0gSlNPTi1iYXNlZCBkeW5hbWljIGNvbmZpZ3VyYXRpb24KLSBDb21wcmVoZW5zaXZlIGVycm9yIGhhbmRsaW5nIGFuZCBsb2dnaW5nCi0gU2VyaWFsIGNvbW1hbmQgaW50ZXJmYWNlIHZpYSBCcmlkZ2UKCiMjIFRvZG9zCgotIEltcGxlbWVudCBJTlBVVF9QVUxMRE9XTiBtb2RlCi0gQWRkIHBpbiBjYXBhYmlsaXR5IHZhbGlkYXRpb24gKGRlZmluZWQgYnV0IG5vdCBhY3RpdmUpCi0gSW1wbGVtZW50IHRvdWNoIHNlbnNvciBmdW5jdGlvbmFsaXR5Ci0gT3B0aW1pemUgbWVtb3J5IHVzYWdlIGZvciBsYXJnZSBwaW4gY29uZmlndXJhdGlvbnMKLSBBZGQgcGluIGNvbmZsaWN0IGRldGVjdGlvbgoKIyMgRXhhbXBsZQoKYGBgY3BwCiNpZmRlZiBQSU5fTEVEX0ZFRURCQUNLXzAKICAjZGVmaW5lIEdQSU9fUElOX0NPVU5UIDMKICAKICAvLyBDb25maWd1cmUgcGlucwogIHN0ZDo6dmVjdG9yPEdQSU9fUGluQ29uZmlnPiBncGlvQ29uZmlncyA9IHsKICAgIC8vIE91dHB1dCBMRUQgY29udHJvbAogICAgR1BJT19QaW5Db25maWcoRV9HUElPXzIsIEVfR1BJT19UWVBFX09VVFBVVCwgNTAwMCwgRl9GTl9DT0RFOjpGTl9XUklURV9TSU5HTEVfQ09JTCwKICAgICAgICAgICAgICAgICAgICAgICBNQl9BQ0NFU1NfV1JJVEVfT05MWSwgMTAwLCAiTEVEX0NvbnRyb2wiKSwKICAgIC8vIElucHV0IGJ1dHRvbgogICAgR1BJT19QaW5Db25maWcoRV9HUElPXzAsIEVfR1BJT19UWVBFX0lOUFVUX1BVTExVUCwgNTAwMSwgRl9GTl9DT0RFOjpGTl9SRUFEX0RJU0NSRVRFLAogICAgICAgICAgICAgICAgICAgICAgIE1CX0FDQ0VTU19SRUFEX09OTFksIDUwLCAiQnV0dG9uX0lucHV0IiksCiAgICAvLyBBbmFsb2cgaW5wdXQKICAgIEdQSU9fUGluQ29uZmlnKEVfR1BJT180LCBFX0dQSU9fVFlQRV9BTkFMT0dfSU5QVVQsIDUwMDIsIEVfRk5fQ09ERTo6Rk5fUkVBRF9JTlBVVF9SRUdJU1RFUiwKICAgICAgICAgICAgICAgICAgICAgICBNQl9BQ0NFU1NfUkVBRF9PTkxZLCAyMDAsICJBbmFsb2dfU2Vuc29yIikKICB9OwogIAogIG1iR1BJT18wID0gbmV3IE1CX0dQSU8oCiAgICAgIHRoaXMsICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIElEX01CX0dQSU9fMCwgICAgICAvLyBpZAogICAgICBncGlvQ29uZmlncyAgICAgICAgLy8gcGluIGNvbmZpZ3VyYXRpb25zCiAgKTsKCiAgaWYgKG1iR1BJT18wKQogIHsKICAgIGNvbXBvbmVudHMucHVzaF9iYWNrKG1iR1BJT18wKTsKICAgIExvZy5pbmZvbG4oRigiTUJfR1BJT18wIGluaXRpYWxpemVkLiBDb3VudDolZCwgSUQ6JWQiKSwKICAgICAgICAgICAgICAgR1BJT19QSU5fQ09VTlQsIElEX01CX0dQSU9fMCk7CiAgfQogIGVsc2UKICB7CiAgICBMb2cuZXJyb3JsbihGKCJNQl9HUElPXzAgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpKTsKICB9CiNlbmRpZgpgYGAKClNhbXBsZSBKU09OIGNvbmZpZ3VyYXRpb246CmBgYGpzb24KewogICJwaW5zIjogWwogICAgewogICAgICAicGluTnVtYmVyIjogMiwKICAgICAgInBpblR5cGUiOiAyCiAgICAgICJtb2RidXNBZGRyZXNzIjogNTAwMCwKICAgICAgIm1vZGJ1c0Z1bmN0aW9uIjogNSwKICAgICAgIm1vZGJ1c0FjY2VzcyI6IDIsCiAgICAgICJvcEludGVydmFsTXMiOiAxMDAsCiAgICAgICJuYW1lIjogIkxFRF9Db250cm9sIgogICAgfQogIF0KfQpgYGA="
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T13:24:48.349Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/joystick.md",
|
||||
"content": "LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIEpveXN0aWNrCgoqKlBhdGgqKiA6IFtzcmMvY29tcG9uZW50cy9Kb3lzdGljay5oXSguLi9zcmMvY29tcG9uZW50cy9Kb3lzdGljay5oKQoKNC1kaXJlY3Rpb24gam95c3RpY2sgaW5wdXQgY29tcG9uZW50IHdpdGggbG9jYWwvcmVtb3RlIG1vZGUgc3VwcG9ydCBhbmQgTW9kYnVzIGludGVncmF0aW9uLiBQcm92aWRlcyBkZWJvdW5jZWQgaW5wdXQgcmVhZGluZyBhbmQgaG9sZGluZyB0aW1lIHRyYWNraW5nLgoKIyMgUmVxdWlyZW1lbnRzCgotIDQgZGlnaXRhbCBpbnB1dCBwaW5zIChVcCwgRG93biwgTGVmdCwgUmlnaHQpCi0gTW9kYnVzVENQIGRlcGVuZGVuY3kKLSBCcmlkZ2UgY29tcG9uZW50IGZvciBzZXJpYWwgY29tbXVuaWNhdGlvbgotIEFyZHVpbm9Mb2cgZm9yIGRlYnVnZ2luZwoKIyMgRmVhdHVyZXMKCi0gKipQb3NpdGlvbiBEZXRlY3Rpb24qKiA6IFVwLCBEb3duLCBMZWZ0LCBSaWdodCwgQ2VudGVyIHBvc2l0aW9ucwotICoqRGVib3VuY2luZyoqIDogQ29uZmlndXJhYmxlIGRlYm91bmNpbmcgd2l0aCAzLWNvdW50IGNvbmZpcm1hdGlvbgotICoqSG9sZGluZyBUaW1lKiogOiBUcmFja3MgaG93IGxvbmcgYSBwb3NpdGlvbiBpcyBoZWxkCi0gKipPcGVyYXRpbmcgTW9kZXMqKiA6CiAgLSBMT0NBTDogUmVhZHMgZnJvbSBwaHlzaWNhbCBwaW5zCiAgLSBSRU1PVEUgOiBVc2VzIG92ZXJyaWRlIHBvc2l0aW9uIHZpYSBNb2RidXMKLSAqKk1vZGJ1cyBJbnRlZ3JhdGlvbioqIDogVENQIHN1cHBvcnQgZm9yIHJlbW90ZSBjb250cm9sCi0gKipTZXJpYWwgQ29tbXVuaWNhdGlvbioqIDogQnJpZGdlIGludGVncmF0aW9uIGZvciBzZXJpYWwgcHJvdG9jb2xzCgojIyBUb2RvcwoKLSBJbXBsZW1lbnQgYW5hbG9nIGpveXN0aWNrIHN1cHBvcnQKLSBBZGQgY2FsaWJyYXRpb24gZmVhdHVyZXMKLSBPcHRpbWl6ZSBkZWJvdW5jZSBhbGdvcml0aG0gZm9yIGZhc3RlciByZXNwb25zZQotIEFkZCBjdXN0b20gZGVib3VuY2UgaW50ZXJ2YWwgY29uZmlndXJhdGlvbgoKIyMgRXhhbXBsZQoKYGBgY3BwCiNpZmRlZiBQSU5fSk9ZU1RJQ0tfVVAKICBqb3lzdGljayA9IG5ldyBKb3lzdGljayggICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgLy8gb3duZXIKICAgICAgUElOX0pPWVNUSUNLX1VQLCAgICAgICAgLy8gcGluVXAKICAgICAgUElOX0pPWVNUSUNLX0RPV04sICAgICAgLy8gcGluRG93bgogICAgICBQSU5fSk9ZU1RJQ0tfTEVGVCwgICAgICAvLyBwaW5MZWZ0CiAgICAgIFBJTl9KT1lTVElDS19SSUdIVCwgICAgIC8vIHBpblJpZ2h0CiAgICAgIEpPWVNUSUNLX01CX0FERFIgICAgICAgIC8vIG1vZGJ1c0FkZHJlc3MKICApOwogIGlmIChqb3lzdGlja0spCiAgewogICAgY29tcG9uZW50cy5wdXNoX2JhY2soam95c3RpY2spOwogICAgTG9nLmluZm9sbihGKCJKb3lzdGljayBpbml0aWFsaXplZC4gUGlucyBVL0QvTC9SOiVkLyVkLyVkLyVkLCBNQjoiZCIpLAogICAgICAgICAgICAgICBQSU5fSk9ZU1RJQ0tfVVAsIFBJTl9KT1lTVElDS19ET1dOLAogICAgICAgICAgICAgICBQSU5fSk9ZU1RJQ0tfTEVGVCwgUElOX0pPWVNUSUNLX1JJR0hULAogICAgICAgICAgICAgICBKT1lTVElDS19NQl9BRERSKTsKICB9CiAgZWxzZQogIHsKICAgIExvZy5lcnJvcmxuKEYoIkpveXN0aWNrIGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKSk7CiAgfQojZW5kaWYKYGBgCgoqKlVzYWdlIEV4YW1wbGUqKiA6CgpgYGBjcHAKLy8gR2V0IGN1cnJlbnQgam95c3RpY2sgcG9zaXRpb24KSm95c3RpY2s6OkVfUE9TSVRJT04gcG9zID0gam95c3RpY2stPmdldFBvc2l0aW9uKCk7Cgpzd2l0Y2gocG9zKQp7CiAgY2FzZSBKb3lzdGljayI6RV9QT1NJVElPTjo6VVA6CiAgICAvLyBIYW5kbGUgdXAgYWN0aW9uCiAgICBicmVhazsKICBjYXNlIEpveXN0aWNrOjpFX1BPU0lUSU9OOjpET1dOOgogICAgLy8gSGFuZGxlIGRvd24gYWN0aW9uCiAgICBicmVhazsKICAvLyAuLi4KfQoKLy8gU3dpdGNoIHRvIHJlbW90ZSBtb2RlCmpveXN0aWNrLT5zZXRNb2RlKEpveXN0aWNrOjpFX01PREU6OlJFTU9URSk7Cm1veXN0aWNrLT5zZXRPdmVycmlkZVBvc2l0aW9uKEpveXN0aWNrOjpFX1BPU0lUSU9OOjpVUCk7CmBgYA=="
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T13:25:37.051Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/led-feedback.md",
|
||||
"content": "LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIExFREZlZWRiYWNrCgoqKlBhdGgqKiA6IFtzcmMvY29tcG9uZW50cy9MRURGZWVkYmFjay5oXShzcmMvY29tcG9uZW50cy9MRURGZWVkYmFjay5oKQoKQWRkcmVzc2FibGUgTmVvUGl4ZWwgTEVEIHN0cmlwIGZlZWRiYWNrIGNvbXBvbmVudCBmb3IgaW5kdXN0cmlhbCB2aXN1YWwgaW5kaWNhdGlvbi4gU3VwcG9ydHMgbXVsdGlwbGUgZGlzcGxheSBtb2RlcywgTW9kYnVzLTQ4NSBjb250cm9sLCBhbmQgcmVhbC10aW1lIHN0YXR1cyB2aXN1YWxpemF0aW9uLgoKIyMgUmVxdWlyZW1lbnRzCgojIyMgSGFyZHdhcmUKCi0gKipQaW4qKjogRGlnaXRhbCBvdXRwdXQgcGluIGZvciBOZW9QaXhlbCBkYXRhCi0gKipQb3dlcioqOiA1ViBmb3IgTkVPUElYRUwgc3RyaXAgKGV4dGVybmFsIHBvd2VyIHN1cHBseSByZWNvbW1lbmRlZCBmb3IgbGFyZ2VyIHN0cmlwcykKLSAqKkdyb3VuZCoqOiBDb21tb24gZ3JvdW5kIGJldHdlZW4gRVNQLTMyIGFuZCBOZW9QaXhlbCBzdHJpcAotICoqKERhdGEgTGluZSoqOiAzLjN2IGxvZ2ljIGxldmVsIChORU9QSVhFTCBhdXRvLXJlc2lzdGFudCB0byBsb3dlciB2b2x0YWdlKQoKIyMjIERlcGVuZGVuY2llcwoKLSBgQWRhZnJ1aXRfTmVvUGl4ZWxgCi0gYEFyZHVpbm9Mb2dgCi0gYENvbXBvbmVudGAgKGJhc2UgY2xhc3MpCi0gYG1vZGJ1cy9Nb2RidXNUQ1BgCi0gYGNvbmZpZy5oYCBhbmQgYGNvbmZpZy1tb2RidXMuaGAKCiMjIEZlYXR1cmVzCgojIyMgTEVEIE1vZGVzCgotICoqT0ZGKio6IEFsbCBMRURzIGVzdGluZ3VpZGFzCi0gKipGQURFX1JfQioqOiBGYWRlIGVudHJlIHJvalkgeSBhenVsIChzdWF2ZSB0cmFuc2ljacOzbikKLSAqKlJBTkdFKio6IE5pdmVsIDAtMTAwIGNvbW8gYmFycmEgZGUgcHJvZ3Jlc28KLSAqKlRSSV9DT0xPUl9CTElOSyoqOiBTZWNjaW9uZXMgZGUgdHJlcyBjb2xvcmVzIGNvbiBwYXJwYWRlbwoKIyMjIE1vZGJ1cyBJbnRlcmZhY2UKCi0gSG9sZGluZyByZWdpc3RlciAoUkVBRC9XUklURSkKLSBCYXNlIGFkZHJlc3MgY29uZmlndXJhYmxlCi0gUmVnaXN0ZXIgb2Zmc2V0czoKICAtIGBNT0RFID0gMGAgKExFRE1vZGUgZW51bSkKICAtIGBMRVZFTCA9IDFgIDAtMTAwIGZvciBSQU5HRSBtb2RlCgojIyMgQ29tcG9uZW50IExpZmVjeWNsZQoKLSBOZW9QaXhlbCBpbml0aWFsaXphdGlvbiBpbiBgc2V0dXAoKWAKLSBOb24tYmxvY2tpbmcgbG9vcCB3aXRoIHVwZGF0ZSB0aW1pbmcKLSBTZXJpYWwgYW5kIE1vZGJ1cyByZWdpc3RyYXRpb24gc3VwcG9ydAotIENvbXBvbmVudCBzdGF0ZSBub3RpZmljYXRpb24KCiMjIFRvZG9zCgotIFsgXSBTT0xJRF9DT0xPUiBtb2RlCi0gWyBdIFJBSU5CT1cgbW9kZSAoY3ljbGUgdGhyb3VnaCBzcGVjdHJ1bSkKLSBbIF0gQlJJR0hUTkVTUyBjb250cm9sIChNb2RidXMgcmVnaXN0ZXIpCi0gWyBdIEN1c3RvbWl6YWJsZSBGQURFX1JfQiBjb2xvcnMKLSBbIF0gSGlnaCBzcGVlZCBidWZmZXJlZCBhbmltYXRpb25zCi0gWyBdIEluZGl2aWR1YWwgcGl4ZWwgY29udHJvbCBtb2RlCi0gWyBdIFB1bHNlIGVmZmVjdCBtb2RlcwotIFsgXSBTdGF0dXMsIGVycm9yIGFuZCBoZWFydGJlYXQgbW9kZXMKCiMjIEV4YW1wbGUKCmBgYGMKI2lmZGVmIFBJTl9MRURfRkVFREJBQ0tfMAogIGxlZEZlZWRiYWNrXzAgPSBuZXcgTEVERmVlZGJhY2soCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAvLyBvd25lcgogICAgICBQSU5fTEVEX0ZFRURCQUNLXDA8ICAgIC8vIHBpbgogICAgICBMRURfUElYRUxfQ09VTlRfMCwgICAgIC8vIHBpeGVsQ291bnQKICAgICAgSURfTEVEX0ZFRURCQUNLX18sICAgICAvLyBpZAogICAgICBMRURfRkVFREJBQ0tfMF9NQl9BRERSIC8vIG1vZGJ1c0FkZHJlc3MKICApOwogIGlmIChsZWRGZWVkYmFja18wKQogIHsKICAgIGNvbXBvbmVudHMucHVzaF9iYWNrKGxlZEZlZWRiYWNrXzApOwogICAgTG9nLmluZm9sbihGKCJMRURGZWVkYmFja18wIGluaXRpYWxpemVkLiBQaW46JWQsIENvdW50OiVkLCBJRDolZCwgTUI6JWQiKSwKICAgICAgICAgICAgICAgUElOX0xFRF9GRUVEQkFDS18wLCBMRURfUElYRUxfQ09VTlRfMCwKICAgICAgICAgICAgICAgSURfTEVEX0ZFRURCQUNLX18sIExFRF9GRUVEQkFDS18wX01CX0FERFIpOwogIH0KICBlbHNlCiAgewogICAgTG9nLmVycm9ybG4oRigiTEVERmVlZGJhY2tfMCBpbml0aWFsaXphdGlvbiBmYWlsZWQuIikpOwogIH0KI2VuZGlmCmBgYAoKIyMjIE1vZGJ1cyBDb250cm9sCgpgYGBjCi8vIFNldCBtb2RlIHRvIEZBREVfUl9CCi8vIEFzc3VtZSBiYXNlIGFkZHJlc3MgaXMgMTAwMAptb2RidXNfaG9sZGluZ19yZWdpc3RlcnNbd3JpdGVdKDEwMDAsIDEpOwoKLy8gU2V0IG1vZGUgdG8gUkFOR0Ugd2l0aCA3NSUgbGV2ZWwKbW9kYnVzX2hvbGRpbmdfcmVnaXN0ZXJzW3dyaXRlXSgxMDAwLCAyKTsgLy8gUkFOR0UgbW9kZQptb2RidXNfaG9sZGluZ19yZWdpc3RlcnNbd3JpdGVdKDEwMDEsIDc1KTsgLy8gNzUlIGxldmVsCmBgYAo="
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T13:26:36.184Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": "<parameter name=\"path\">docs/modbus-logic-engine.md",
|
||||
"content": "LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIE1vZGJ1cyBMb2dpYyBFbmdpbmUKCioqUGF0aCoqOiBbc3JjL2NvbXBvbmVudHMvTW9kYnVzTG9naWNFbmdpbmUuaF0oLi4vc3JjL2NvbXBvbmVudHMvTW9kYnVzTG9naWNFbmdpbmUuaCkKCkEgY29tcG9uZW50IHRoYXQgaW1wbGVtZW50cyBhIHJ1bGUtYmFzZWQgbG9naWMgZW5naW5lIGZvciBhdXRvbWF0aW9uLCBjb25maWd1cmFibGUgdmlhIE1vZGJ1cy00ODUuIEl0IGFsbG93cyBjcmVhdGluZyBjb25kaXRpb25hbCBydWxlcyB0aGF0IGNhbiByZWFkIGZyb20gYW5kIHdyaXRlIHRvIE1vZGJ1cyByZWdpc3RlcnMsIGNvaWxzLCBvciBjYWxsIGNvbXBvbmVudCBtZXRob2RzLgoKIyMgUmVxdWlyZW1lbnRzCgojIyMgRGVwZW5kZW5jaWVzCi0gYEVOQUJMRV9NQl9TQ1JJUFRgIGRlZmluZWQgaW4gY29uZmlnLmgKLSBgQ29tcG9uZW50YCBiYXNlIGNsYXNzCi0gYEFyZHVpbm9Mb2dgIGxpYnJhcnkKLSBgbW9kYnVzL01vZGJ1c1R5cGVzLmhgCi0gQWNjZXNzIHRvIGBQSEFwcGAgaW5zdGFuY2UKCiMjIyBDb25maWd1cmF0aW9uIENvbnN0YW50cwotIGBNQVhfTE9HSUNfUlVMRVNgIC0gTWF4aW11bSBudW1iZXIgb2YgcnVsZXMgKGRlZmF1bHQ6IDgpCi0gYExPR0lDX0VOR0lORV9SRUdJU1RFUlNfUEVSX1JVTEVgIC0gTnVtYmVyIG9mIHJlZ2lzdGVycyBwZXIgcnVsZSAoZGVmYXVsdDogMTMpCi0gYE1PREJVU19MT0dJQ19SVUxFU19TVEFSVGAgLSBTdGFydGluZyBNb2RidXMgYWRkcmVzcyAoZGVmYXVsdDogMTAwMCkKCiMjIEZlYXR1cmVzCgojIyMgUnVsZS1CYXNlZCBMb2dpYwotIDggY29uZmlndXJhYmxlIGxvZ2ljIHJ1bGVzIGJ5IGRlZmF1bHQKLSBFYWNoIHJ1bGUgb2NjdXBpZXMgMTMgY29uc2VjdXRpdmUgTW9kYnVzIHJlZ2lzdGVycwotIENvbmRpdGlvbmFsIGV2YWx1YXRpb24gd2l0aCBhcml0aG1ldGljIG9wZXJhdG9ycwotIDEwMG1zIGV2YWx1YXRpb24gY3ljbGUKCiMjIyBDb25kaXRpb24gRXZhbHVhdGlvbgotIFNvdXJjZSB0eXBlczogSG9sZGluZyByZWdpc3RlcnMsIElucHV0IHJlZ2lzdGVycywgQ29pbHMsIERpc2NyZXRlIGlucHV0cwotIE9wZXJhdG9yczogRXF1YWwsIE5vdCBFcXVhbCwgTGVzcywgTGVzcyBFcXVhbCwgR3JlYXRlciwgR3JlYXRlciBFcXVhbAotIENvbXBhcmlzb24gYWdhaW5zdCBjb25maWd1cmVkIHZhbHVlCgojIyMgQWN0aW9uIFR5cGVzCi0gKipXcml0ZSBDb2lsKio6IFNldCBjb2lsIHN0YXRlICgwLzEpCi0gKipXcml0ZSBIb2xkaW5nIFJlZ2lzdGVyKio6IFNldCByZWdpc3RlciB2YWx1ZQotICoqQ2FsbCBDb21wb25lbnQgTWV0aG9kKio6IEV4ZWN1dGUgcmVnaXN0ZXJlZCBjb21wb25lbnQgZnVuY3Rpb24KCiMjIyBSdWxlIFN0YXR1cyAmIERlYnVnZ2luZwotIExhc3Qgc3RhdHVzIGZvciBkZWJ1Z2dpbmcKLSBUcmlnZ2VyIGNvdW50IGFuZCB0aW1lc3RhbXAKLSBPcHRpb25hbCBkZWJ1ZyBhbmQgcmVjZWlwdCBsb2dnaW5nCi0gUGVyLXJ1bGUgZmxhZyBjb25maWd1cmF0aW9uCgojIyMgTWV0aG9kIFJlZ2lzdHJ5Ci0gUmVnaXN0ZXIgYW5kIGNhbGwgY29tcG9uZW50IG1ldGhvZHMKLSBDb21wb25lbnQgSUQgKyBNZXRob2QgSUQgYmFzZWQgYWRkcmVzc2luZwotIFN1cHBvcnQgZm9yIDIgcGFyYW1ldGVycyB3aXRoIHJldHVybiBjb2RlCgojIyBUb2RvcwotIERvY3VtZW50IHJlZ2lzdGVyIG1hcHBpbmcgZnVsbHkKLSBJbXBsZW1lbnQgcnVsZSBwcmlvcml0aXphdGlvbgotIEFkZCBydWxlIHZhbGlkYXRpb24gYXQgY29uZmlndXJhdGlvbiB0aW1lCi0gSW1wbGVtZW50IHBlcnNpc3RlbnQgY29uZmlndXJhdGlvbiBzdG9yYWdlCi0gQWRkIGNvbmRpdGlvbiBjaGFpbmluZy90aW1pbmcgYWR2YW5jZWQgZmVhdHVyZXMKCiMjIEV4YW1wbGUKCmBgYGNwcAojdGVyaWYgRU5BQkxFX01CX1NDUklQVAogIC8vIEluIGFwcGxpY2F0aW9uIHNldHVwCiAgTW9kYnVzTG9naWNFbmdpbmUqIG1vZGJ1c0xvZ2ljOyAKCiAgbW9kYnVzTG9naWMgPSBuZXcgTW9kYnVzTG9naWNFbmdpbmUodGhpcyk7CiAgaWYgKG1vZGJ1c0xvZ2ljKSoKICB7CiAgICBjb21wb25lbnRzLnB1c2hfYmFjayhtb2RidXNMb2dpYyk7CiAgICBMb2cuaW5mb2xuKEYoIk1vZGJ1c0xvZ2ljRW5naW5lIGluaXRpYWxpemVkLiIpKTsKICAgIAogICAgLy8gUmVnaXN0ZXIgYSBjYWxsYWJsZSBtZXRob2QKICAgIG1vZGJ1c0xvZ2ljLT5yZWdpc3Rlck1ldGhvZCgKICAgICAgSURfTEVEX0ZFRURCQUNLXzAsIC8vIGNvbXBvbmVudCBJRCAgICAgICAgCiAgICAgIDEsICAgICAgICAgICAgICAgICAgLy8gbWV0aG9kIElEIChtZXRob2QgIzEpCiAgICAgIFtdKHNob3J0IHBhcmFtMSwgc2hvcnQgcGFyYW0yKSAtPiBzaG9ydCB7CiAgICAgICAgLy8gRXhhbXBsZTogY2hhbmdlIEZGRkZGRjAwIDw+IFJSUkdHR0JCCiAgICAgICAgcmV0dXJuIDEwMDsgLy8gc3VjY2VzcyBjb2RlCiAgICAgIH0KICAgICk7CiAgfQogIGVsc2UKICB7CiAgICBMb2cuZXJyb3JsbihGKCJNb2RidXNMb2dpY0VuZ2luZSBpbml0aWFsaXphdGlvbiBmYWlsZWQuIikpOwogIH0KI2VuZGlmCmBgYAoKIyMjIFJ1bGUgQ29uZmlndXJhdGlvbiBFeGFtcGxlCgpSZWdpc3RlciBtYXBwaW5nIGZvciBSdWxlIDEgKGFkZHJlc3NlcyAxMDAwLTEwMTIpOgoKfCBPZmZzZXQgfCBBZGRyZXNzIHwgUHVycG9zZSB8IEV4YW1wbGUgVmFsdWUgfCBEZXNjcmlwdGlvbiB8CnwtLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tfAp8IDAgfCAxMDAwIHwgRU5BQkxFRCB8IDEgfCBSdWxlIGVuYWJsZWQgfAp8IDEgfCAxMDAxIHwgQ09ORF9TUkNfVFlQRSB8IDEgfCBIb2xkaW5nIHJlZ2lzdGVyIHwKfCAyIHwgMTAwMiB8IENPTkRfU1JDX0FERFIgfCAyMDAwIHwgTW9uaXRvcmVkIGFkZHJlc3MgfAp8IDMgfCAxMDAzIHwgQ09ORF9PUEVSQVRPUiB8IDQgfCBHcmVhdGVyIHRoYW4gfAp8IDQgfCAxMDA0IHwgQ09ORF9WQUxVRSB8IDEwMCB8IENvbXBhcmlzb24gdmFsdWUgfAp8IDUgfCAxMDA1IHwgQ09NTUFORF9UWVBFIHwgMyB8IFdyaXRlIHJlZ2lzdGVyIHwKfCA2IHwgMTAwNiB8IENPTU1BTkRfVEFSR0VUIHwgMzAwMCB8IFRhcmdldCBhZGRyZXNzIHwKfCA3IHwgMTAwNyB8IENPTU1BTkRfUEFSQU0xIHwgNTAwIHwgVmFsdWUgdG8gd3JpdGUgfAp8IDggfCAxMDA4IHwgQ09NTUFORF9QQVJBTTICICA1IHwgRXh0cmEgcGFyYW1ldGVyIHwKfCA5IHwgMTAwOSB8IEZMQUdTIHwgMyB8IERlYnVnICsgUmVjZWlwdCB8Cnwgd9IBMTACF8TgQ1VBTD1TVEFUVVMNfZo7CogTGFzdIFN0NGF0dXMgfGF8IDExIHwgMTAxMSB8IExBNQ2009UUklHR0VSX1RPICNZ7E9TBAV9vJIDWUcgDAZWVydBBTfZoTBmD2NgcXZlNWZpAqfAiaMkBhBMXBOXXYgCiw1UdkGccJgxSTMRjQ1JhOq7CiBUcmlnZ2VyBGNovW50I4AUKQ0KYXB7"
|
||||
},
|
||||
"timestamp": "2025-06-03T13:27:45.925Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": "<parameter name=\"path\">docs/modbus-logic-engine.md</parameter><parameter name=\"content\">LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIE1vZGJ1cyBMb2dpYyBFbmdpbmUKCioqUGF0aCoqOiBbc3JjL2NvbXBvbmVudHMvTW9kYnVzTG9naWNFbmdpbmUuaF0oLi4vc3JjL2NvbXBvbmVudHMvTW9kYnVzTG9naWNFbmdpbmUuaCkKCkEgY29tcG9uZW50IHRoYXQgaW1wbGVtZW50cyBhIHJ1bGUtYmFzZWQgbG9naWMgZW5naW5lIGZvciBhdXRvbWF0aW9uLCBjb25maWd1cmFibGUgdmlhIE1vZGJ1cy00ODUuIEl0IGFsbG93cyBjcmVhdGluZyBjb25kaXRpb25hbCBydWxlcyB0aGF0IGNhbiByZWFkIGZyb20gYW5kIHdyaXRlIHRvIE1vZGJ1cyByZWdpc3RlcnMsIGNvaWxzLCBvciBjYWxsIGNvbXBvbmVudCBtZXRob2RzLgoKIyMgUmVxdWlyZW1lbnRzCgojIyMgRGVwZW5kZW5jaWVzCi0gYEVOQUJMRV9NQl9TQ1JJUFRgIGRlZmluZWQgaW4gY29uZmlnLmgKLSBgQ29tcG9uZW50YCBiYXNlIGNsYXNzCi0gYEFyZHVpbm9Mb2dgIGxpYnJhcnkKLSBgbW9kYnVzL01vZGJ1c1R5cGVzLmhgCi0gQWNjZXNzIHRvIGBQSEFwcGAgaW5zdGFuY2UKCiMjIyBDb25maWd1cmF0aW9uIENvbnN0YW50cwotIGBNQVhfTE9HSUNfUlVMRVNgIC0gTWF4aW11bSBudW1iZXIgb2YgcnVsZXMgKGRlZmF1bHQ6IDgpCi0gYExPR0lDX0VOR0lORV9SRUdJU1RFUlNfUEVSX1JVTEVgIC0gTnVtYmVyIG9mIHJlZ2lzdGVycyBwZXIgcnVsZSAoZGVmYXVsdDogMTMpCi0gYE1PREJVU19MT0dJQ19SVUxFU19TVEFSVGAgLSBTdGFydGluZyBNb2RidXMgYWRkcmVzcyAoZGVmYXVsdDogMTAwMCkKCiMjIEZlYXR1cmVzCgojIyMgUnVsZS1CYXNlZCBMb2dpYwotIDggY29uZmlndXJhYmxlIGxvZ2ljIHJ1bGVzIGJ5IGRlZmF1bHQKLSBFYWNoIHJ1bGUgb2NjdXBpZXMgMTMgY29uc2VjdXRpdmUgTW9kYnVzIHJlZ2lzdGVycwotIENvbmRpdGlvbmFsIGV2YWx1YXRpb24gd2l0aCBhcml0aG1ldGljIG9wZXJhdG9ycwotIDEwMG1zIGV2YWx1YXRpb24gY3ljbGUKCiMjIyBDb25kaXRpb24gRXZhbHVhdGlvbgotIFNvdXJjZSB0eXBlczogSG9sZGluZyByZWdpc3RlcnMsIElucHV0IHJlZ2lzdGVycywgQ29pbHMsIERpc2NyZXRlIGlucHV0cwotIE9wZXJhdG9yczogRXF1YWwsIE5vdCBFcXVhbCwgTGVzcywgTGVzcyBFcXVhbCwgR3JlYXRlciwgR3JlYXRlciBFcXVhbAotIENvbXBhcmlzb24gYWdhaW5zdCBjb25maWd1cmVkIHZhbHVlCgojIyMgQWN0aW9uIFR5cGVzCi0gKipXcml0ZSBDb2lsKio6IFNldCBjb2lsIHN0YXRlICgwLzEpCi0gKipXcml0ZSBIb2xkaW5nIFJlZ2lzdGVyKio6IFNldCByZWdpc3RlciB2YWx1ZQotICoqQ2FsbCBDb21wb25lbnQgTWV0aG9kKio6IEV4ZWN1dGUgcmVnaXN0ZXJlZCBjb21wb25lbnQgZnVuY3Rpb24KCiMjIyBSdWxlIFN0YXR1cyAmIERlYnVnZ2luZwotIExhc3Qgc3RhdHVzIGZvciBkZWJ1Z2dpbmcKLSBUcmlnZ2VyIGNvdW50IGFuZCB0aW1lc3RhbXAKLSBPcHRpb25hbCBkZWJ1ZyBhbmQgcmVjZWlwdCBsb2dnaW5nCi0gUGVyLXJ1bGUgZmxhZyBjb25maWd1cmF0aW9uCgojIyMgTWV0aG9kIFJlZ2lzdHJ5Ci0gUmVnaXN0ZXIgYW5kIGNhbGwgY29tcG9uZW50IG1ldGhvZHMKLSBDb21wb25lbnQgSUQgKyBNZXRob2QgSUQgYmFzZWQgYWRkcmVzc2luZwotIFN1cHBvcnQgZm9yIDIgcGFyYW1ldGVycyB3aXRoIHJldHVybiBjb2RlCgojIyBUb2RvcwotIERvY3VtZW50IHJlZ2lzdGVyIG1hcHBpbmcgZnVsbHkKLSBJbXBsZW1lbnQgcnVsZSBwcmlvcml0aXphdGlvbgotIEFkZCBydWxlIHZhbGlkYXRpb24gYXQgY29uZmlndXJhdGlvbiB0aW1lCi0gSW1wbGVtZW50IHBlcnNpc3RlbnQgY29uZmlndXJhdGlvbiBzdG9yYWdlCi0gQWRkIGNvbmRpdGlvbiBjaGFpbmluZy90aW1pbmcgYWR2YW5jZWQgZmVhdHVyZXMKCiMjIEV4YW1wbGUKCmBgYGNwcAojaWZkZWYgRU5BQkxFX01CX1NDUklQVAogIC8vIEluIGFwcGxpY2F0aW9uIHNldHVwCiAgTW9kYnVzTG9naWNFbmdpbmUqIG1vZGJ1c0xvZ2ljOwogIAogIG1vZGJ1c0xvZ2ljID0gbmV3IE1vZGJ1c0xvZ2ljRW5naW5lKHRoaXMpOwogIGlmIChtb2RidXNMb2dpYykKICB7CiAgICBjb21wb25lbnRzLnB1c2hfYmFjayhtb2RidXNMb2dpYyk7CiAgICBMb2cuaW5mb2xuKEYoIk1vZGJ1c0xvZ2ljRW5naW5lIGluaXRpYWxpemVkLiIpKTsKICAgIAogICAgLy8gUmVnaXN0ZXIgYSBjYWxsYWJsZSBtZXRob2QKICAgIG1vZGJ1c0xvZ2ljLT5yZWdpc3Rlck1ldGhvZCgKICAgICAgSURfTEVEX0ZFRURCQUNLXzAsIC8vIGNvbXBvbmVudCBJRAogICAgICAxLCAgICAgICAgICAgICAgICAgIC8vIG1ldGhvZCBJRCAobWV0aG9kICMxKQogICAgICBbXShzaG9ydCBwYXJhbTEsIHNob3J0IHBhcmFtMikgLT4gc2hvcnQgewogICAgICAgIC8vIEV4YW1wbGU6IGNoYW5nZSBGRkZGRkYwMCA8PiBSUlJHR0dCQgogICAgICAgIHJldHVybiAxMDA7IC8vIHN1Y2Nlc3MgY29kZQogICAgICB9CiAgICApOwogIH0KICBlbHNlCiAgewogICAgTG9nLmVycm9ybG4oRigiTW9kYnVzTG9naWNFbmdpbmUgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpKTsKICB9CiNlbmRpZgpgYGAKCiMjIyBSdWxlIENvbmZpZ3VyYXRpb24gRXhhbXBsZQoKUmVnaXN0ZXIgbWFwcGluZyBmb3IgUnVsZSAxIChhZGRyZXNzZXMgMTAwMC0xMDEyKToKCnwgT2Zmc2V0IHwgQWRkcmVzcyB8IFB1cnBvc2UgfCBFeGFtcGxlIFZhbHVlIHwgRGVzY3JpcHRpb24gfAp8LS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwKfCAwIHwgMTAwMCB8IEVOQUJMRUQgfCAxIHwgUnVsZSBlbmFibGVkIHwKfCAxIHwgMTAwMSB8IENPTkRfU1JDX1RZUEUgfCAxIHwgSG9sZGluZyByZWdpc3RlciB8CnwgMiB8IDEwMDIgfCBDT05EX1NSQ19BRERSIHW\n\n\nAgMDAwIHwgTW9uaXRvcmVkIGFkZHJlc3MgfAp8IDMgfCAxMDAzIHwgQ09ORF9PUEVSQVRPUiB8IDQgfCBHcmVhdGVyIHRoYW4gfAp8IDQgfCAxMDA0IHwgQ09ORF9WQUxVRSB8IDEwMCB8IENvbXBhcmlzb24gdmFsdWUgfAp8IDUgfCAxMDA1IHwgQ09NTUFORF9UWVBFIHwgMyB8IFdyaXRlIHJlZ2lzdGVyIHwKfCA2IHwgMTAwNiB8IENPTU1BTkRfVEFSR0VUIHwgMzAwMCB8IFRhcmdldCBhZGRyZXNzIHwKfCA3IHwgMTAwNyB8IENPTU1BTkRfUEFSQU0xIHwgNTAwIHwgVmFsdWUgdG8gd3JpdGUgfAp8IDggfCAxMDA4IHwgQ09NTUFORF9QQVJBTTICCA1IHwgRXh0cmEgcGFyYW1ldGVyIHwKfCA5IHwgMTAwOSB8IEZMQUdTIHwgMyB8IERlYnVnICsgUmVjZWlwdCB8Cnwga3HDHwgxMDEwIHwgTEFTVF9TVEFUVVMgfCAwIHwgTGFzdCBzdGF0dXMgfAp8IDExIHwgMTAxMSB8IExBU1RfVFJJR0dFUl9UUyB8IDEyMzQ1IHwgVHJpZ2dlciB0aW1lc3RhbXAgfAp8IDEyIHwgMTAxMiB8IFRSSUDHR0VSX0NPVU5UIHwgNSB8IFRyaWdnZXIgY291bnQgfAo="
|
||||
},
|
||||
"timestamp": "2025-06-03T13:28:49.054Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"path": "docs/modbus-logic-engine.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T13:28:53.038Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": "<parameter name=\"path\">docs/modbus-logic-engine.md</parameter><parameter name=\"content\">LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIE1vZGJ1cyBMb2dpYyBFbmdpbmUKCioqUGF0aCoqOiBbc3JjL2NvbXBvbmVudHMvTW9kYnVzTG9naWNFbmdpbmUuaF0oLi4vc3JjL2NvbXBvbmVudHMvTW9kYnVzTG9naWNFbmdpbmUuaCkKCkEgY29tcG9uZW50IHRoYXQgaW1wbGVtZW50cyBhIHJ1bGUtYmFzZWQgbG9naWMgZW5naW5lIGZvciBhdXRvbWF0aW9uLCBjb25maWd1cmFibGUgdmlhIE1vZGJ1cy00ODUuIEl0IGFsbG93cyBjcmVhdGluZyBjb25kaXRpb25hbCBydWxlcyB0aGF0IGNhbiByZWFkIGZyb20gYW5kIHdyaXRlIHRvIE1vZGJ1cyByZWdpc3RlcnMsIGNvaWxzLCBvciBjYWxsIGNvbXBvbmVudCBtZXRob2RzLgoKIyMgUmVxdWlyZW1lbnRzCgojIyMgRGVwZW5kZW5jaWVzCgotIGBFTkFCTEVfTUJfU0NSSVBUYCBkZWZpbmVkIGluIGNvbmZpZy5oCi0gYENvbXBvbmVudGAgYmFzZSBjbGFzcwotIGBBcmR1aW5vTG9nYCBsaWJyYXJ5Ci0gYG1vZGJ1cy9Nb2RidXNUeXBlcy5oYAotIEFjY2VzcyB0byBgUEhBcHBgIGluc3RhbmNlCgojIyMgQ29uZmlndXJhdGlvbiBDb25zdGFudHMKCi0gYE1BWF9MT0dJQ19SVUxFU2AgLSBNYXhpbXVtIG51bWJlciBvZiBydWxlcyAoZGVmYXVsdDogOCkKLSBgTE9HSUNfRU5HSU5FX1JFR0lTVEVSU19QRVJfUlVMRWAgLSBOdW1iZXIgb2YgcmVnaXN0ZXJzIHBlciBydWxlIChkZWZhdWx0OiAxMykKLSBgTU9EQlVTX0xPR0lDX1JVTEVTX1NUQVJUYCAtIFN0YXJ0aW5nIE1vZGJ1cyBhZGRyZXNzIChkZWZhdWx0OiAxMDAwKQoKIyMgRmVhdHVyZXMKCiMjIyBSdWxlLUJhc2VkIExvZ2ljCgotIDggY29uZmlndXJhYmxlIGxvZ2ljIHJ1bGVzIGJ5IGRlZmF1bHQKLSBFYWNoIHJ1bGUgb2NjdXBpZXMgMTMgY29uc2VjdXRpdmUgTW9kYnVzIHJlZ2lzdGVycwotIENvbmRpdGlvbmFsIGV2YWx1YXRpb24gd2l0aCBhcml0aG1ldGljIG9wZXJhdG9ycwotIDEwMG1zIGV2YWx1YXRpb24gY3ljbGUKCiMjIyBDb25kaXRpb24gRXZhbHVhdGlvbgoKLSBTb3VyY2UgdHlwZXM6IEhvbGRpbmcgcmVnaXN0ZXJzLCBJbnB1dCByZWdpc3RlcnMsIENvaWxzLCBEaXNjcmV0ZSBpbnB1dHMKLSBPcGVyYXRvcnM6IEVxdWFsLCBOb3QgRXF1YWwsIExlc3MsIExlc3MgRXF1YWwsIEdyZWF0ZXIsIEdyZWF0ZXIgRXF1YWYKLSBDB21wYXJpc29uIGFnYWluc3QgY29uZmlndXJlZCB2YWx1ZQoKIyMjIEFjdGlvbiBUeXBlcwoKLSAqKldyaXRlIENvaWwqKjogU2V0IGNvaWwgc3RhdGUgKDAvMSkKLSAiKldyaXRlIEhvbGRpbmcgUmVnaXN0ZXIqKjogU2V0IHJlZ2lzdGVyIHZhbHVlCi0gKipDYWxsIENvbXBvbmVudCBNZXRob2QqKjogRXhlY3V0ZSByZWdpc3RlcmVkIGNvbXBvbmVudCBmdW5jdGlvbgoKIyMjIFJ1bGUgU3RhdHVzICYgRGVidWdnaW5nCgotIExhc3Qgc3RhdHVzIGZvciBkZWJ1Z2dpbmcKLSBUcmlnZ2VyIGNvdW50IGFuZCB0aW1lc3RhbXAKLSBPcHRpb25hbCBkZWJ1ZyBhbmQgcmVjZWlwdCBsb2dnaW5nCi0gUGVyLXJ1bGUgZmxhZyBjb25maWd1cmF0aW9uCgojIyMgTWV0aG9kIFJlZ2lzdHJ5CgotIFJlZ2lzdGVyIGFuZCBjYWxsIGNvbXBvbmVudCBtZXRob2RzCi0gQ29tcG9uZW50IElEICsgTWV0aG9kIElEIGJhc2VkIGFkZHJlc3NpbmcKLSBTdXBwb3J0IGZvciAyIHBhcmFtZXRlcnMgd2l0aCByZXR1cm4gY29kZQoKIyMgVG9kb3MKCi0gRG9jdW1lbnQgcmVnaXN0ZXIgbWFwcGluZyBmdWxseQotIEltcGxlbWVudCBydWxlIHByaW9yaXRpemF0aW9uCi0gQWRkIHJ1bGUgdmFsaWRhdGlvbiBhdCBjb25maWd1cmF0aW9uIHRpbWUKLSBJbXBsZW1lbnQgcGVyc2lzdGVudCBjb25maWd1cmF0aW9uIHN0b3JhZ2UKLSBBZGQgY29uZGl0aW9uIGNoYWluaW5nL3RpbWluZyBhZHZhbmNlZCBmZWF0dXJlcwoKIyMgRXhhbXBsZQoKYGBgY3BwCiNpZmRlZiBFTkFCTEVfTUJfU0NSSVBUCiAgLy8gSW4gYXBwbGljYXRpb24gc2V0dXAKICBNb2RidXNMb2dpY0VuZ2luZSogbW9kYnVzTG9naWM7CiAgCiAgbW9kYnVzTG9naWMgPSBuZXcgTW9kYnVzTG9naWNFbmdpbmUodGhpcyk7CiAgaWYgKG1vZGJ1c0xvZ2ljKQogIHsKICAgIGNvbXBvbmVudHMucHVzaF9iYWNrKG1vZGJ1c0xvZ2ljKTsKICAgIExvZy5pbmZvbG4oRighIk1vZGJ1c0xvZ2ljRW5naW5lIGluaXRpYWxpemVkLiIpKTsKICAgIAogICAgLy8gUmVnaXN0ZXIgYSBjYWxsYWJsZSBtZXRob2QKICAgIG1vZGJ1c0xvZ2ljLT5yZWdpc3Rlck1ldGhvZCgKICAgICAgSURfTEVEX0ZFRURCQUNLXzAsIC8vIGNvbXBvbmVudCBJRAogICAgICAxLCAgICAgICAgICAgICAgICAgIC8vIG1ldGhvZCBJRCAobWV0aG9kICMxKQogICAgICBbXShzaG9ydCBwYXJhbTEsIHNob3J0IHBhcmFtMikgLT4gc2hvcnQgewogICAgICAgIC8vIEV4YW1wbGU6IGNoYW5nZSBGRkZGRkYwMCA8PiBSUlJHR0dCQgogICAgICAgIHJldHVybiAxMDA7IC8vIHN1Y2Nlc3MgY29kZQogICAgICB9CiAgICApOwogIH0KICBlbHNlCiAge, KICAgIExvZy5lcnJvcmxuKEYhIk1vZGJ1c0xvZ2ljRW5naW5lIGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKSk7CiAgfQojZW5kaWYKYGBgCgojIyMgUnVsZSBDb25maWd1cmF0aW9uIEV4YW1wbGUKClJlZ2lzdGVyIG1hcHBpbmcgZm9yIFJ1bGUe1MQIUiGFkZHJlc3NlcyAxMDAwLTEwMTIpOgoKfCBPZmZzZXQgfCBBZGRyZXNzIHwgUHVycG9zZSB8IEV4YWaA1bGUgVmFsdWUgfCBEZXNjcmlwdGlvbiB8Cnx8LS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tC3wgMCB8IDEwMDAgfCBFTkFCTEVEIHwgMSB8IFJ1bGUgZW5hYmxlZCB8CnwgMSB8IDEwMDEgfCBDT05EX1NSQ19UWVBFIHwgMSB8IEhvbEBpbmcgcmVnaXN0ZXIgfAp8IDIgfCAxMDAyIHwgQ09ORF9TKEMfQUREUiB8IDIwMDAgfCBNb25pdG9yZWQgYWRkcmVzcCB8CnwgzMzAHwgxMDAzIHwgQ09ORF9PUEVSQVRPUiB8IDQgfCBHcmVhdGVyFBhYW4gfAp8IDQgfCAxMDA0IHwgQ09ORF9WQUxVRSB8IDEwMCB8IENvbXBhcmlzb24gdmFsdWUgfAp8IDUh+LxMDZwAINWExdZCBDT01NQOiDqMEVfRSIIZaEHwNgwWApzaAcQdzCkZyB08Z7MxKCMtEXJlZ2lzdGVyIHwKfMAAGcRg10GTZwKfCBDT01NQU5EGcF0RCtFVOSd80QMzZAHwgFJoaXN0ZXIgfApJCTGFkZHJlc3MgfAp8IDcgfCAxMDA3IHwgQ09NTUFORF9QQVJBTTICQ1MQGVsA1Io7CIVZhbHVlIHRvIHdyaXRlIHwKfCA4IHWAAEMDiGZjzAQQkNPTU1BTkRfUEFSQU0yIHcUQAGY1wgRXh0cmEgcGFyYW1ldGVyIHwGfCA5IHwgMTo4QTl9QMHYYQCAG1TRwFV8Mw3J6XFIRGl7H1DIA1MIEZlY2VpcHQgfAp8MYEqwDkQgA8QFSiwgBgaOaEYHSO7I1VfU1RBVFxeU|TrEcAgYIBZYQ3EFHQTzRDQ/FU9kYXR1cyB8CnwgMTEgfCAxMDExIHwgX0VEHgATFMRfVFJJR0xdRT7cP1SGNYhYzMjM0NSAV9HIFRyaQdnasZXIgdGltZXN0YW1yWmWfAqhTEACaBMn9ODfKHMDRFRZGSRW9zzANpTZNUlQGZEJGT2Y1TP1VOEIQNH7Ew1vgKKHUQ2ZyH8rApnZ2VyYyBUNa3VOBR5="
|
||||
},
|
||||
"timestamp": "2025-06-03T13:30:02.526Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/GPIO.md",
|
||||
"content": "LS0tCnRpdGxlOiBHUElPIENvbXBvbmVudApkZXNjcmlwdGlvbjogRG9jdW1lbnRhdGlvbiBmb3IgdGhlIE1CX0dQSU8gY29tcG9uZW50LCB3aGljaCBtYW5hZ2VzIGEgZ3JvdXAgb2YgR1BJTyBwaW5zIHdpdGggTW9kYnVzIGludGVyZmFjZQprZXl3b3JkczogRVNQLTMyLCBHUElPLCBNb2RidXMsIGluZHVzdHJpYWwsIGVtYmVkZGVkLCBDKysKLS0tCgojIyBHUElPCgoqKnBhdGgqKjogW3NyYy9jb21wb25lbnRzL0dQSU8uaF0oLi4vLi4vc3JjL2NvbXBvbmVudHMvR1BJTy5oKQoKKipyZXZpc2lvbiBoaXN0b3J5Kio6IGluaXRpYWwgZG9jdW1lbnRhdGlvbgoKVGhlIE1CX0dQSU8gY29tcG9uZW50IHByb3ZpZGVzIGNlbnRyYWxpemVkIG1hbmFnZW1lbnQgb2YgR1BJTyBwaW5zIHdpdGggTW9kYnVzIGludGVyZmFjZSBzdXBwb3J0LiBJdCBhbGxvd3MgY29uZmlndXJhdGlvbiBvZiBtdWx0aXBsZSBwaW5zIHdpdGggZGlmZmVyZW50IG1vZGVzIChpbnB1dCwgb3V0cHV0LCBhbmFsb2csIGV0Yy4pIGFuZCBtYXBzIHRoZW0gdG8gTW9kYnVzIHJlZ2lzdGVycyBmb3IgcmVtb3RlIGFjY2Vzcy4KCiMjIFJFUVVJUkVNRU5UUwoKLSBFU1AzMiBtaWNyb2NvbnRyb2xsZXIKLSBQbGF0Zm9ybUlPIGVudmlyb25tZW50Ci0gQXJkdWlubyBmcmFtZXdvcmsgKGZvciBHUElPIGZ1bmN0aW9ucykKLSBNb2RidXMtNDg1IGludGVyZmFjZQotIExvZ2dpbmcgbGlicmFyeSAoQXJkdWlub0xvZy5oKQotIE1vZGJ1cyBsaWJyYXJ5IChNb2RidXNUQ1AuaCkKLSBDb21wb25lbnQgc3lzdGVtIGRlcGVuZGVuY2llcwoKIyMgRkVBVFVSRVMKCi0gQ29uZmlndXJhYmxlIEdQSU8gcGlucyB3aXRoIG11bHRpcGxlIG1vZGVzOgogIC0gSW5wdXQKICAtIE91dHB1dAogIC0gSW5wdXQgd2l0aCBwdWxsdXAvcHVsbGRvd24KICAtIE91dHB1dCBvcGVuLWRyYWluCiAgLSBBbmFsb2cgaW5wdXQKICAtIFRvdWNoIGlucHV0Ci0gTW9kYnVzIGludGVyZmFjZSBzdXBwb3J0CiAgLSBSZWFkL1dyaXRlIG9wZXJhdGlvbnMKICAtIEFjY2VzcyBjb250cm9sIHBlciBwaW4KICAtIFRocm90dGxpbmcgdG8gcHJldmVudCBleGNlc3NpdmUgb3BlcmF0aW9ucwotIFJ1bnRpbWUgY29uZmlndXJhdGlvbiB2aWEgSlNPTgotIFBpbiBzdGF0ZSBjYWNoaW5nIHRvIGF2b2lkIHVubmVjZXNzYXJ5IG9wZXJhdGlvbnMKLSBCdWlsdC1pbiBsb2dnaW5nIGFuZCBkZWJ1Z2dpbmcKCiMjIFRPRE9TCgotIEFkZCBzdXBwb3J0IGZvciBpbnB1dCBwdWxsZG93biBtb2RlCi0gSW1wbGVtZW50IHRvdWNoIGlucHV0IGZ1bmN0aW9uYWxpdHkKLSBBZGQgbW9yZSBjb21wcmVoZW5zaXZlIGVycm9yIGhhbmRsaW5nCi0gSW1wbGVtZW50IGNhcGFiaWxpdHkgY2hlY2tzIGJhc2VkIG9uIEVTUDMyIHBpbiBjYXBhYmlsaXRpZXMKCiMjIEVYQU1QTEUKCiMjIyBHUElPIGNvbmZpZ3VyYXRpb24gZXhhbXBsZQoKYGBgY3BwCiNpZmRlZiBQSU5fTEVEX0ZFRURCQUNLXzAKICBsZWRGZWVkYmFja18wID0gbmV3IExFRGZlZWRiYWNrKAogICAgICB0aGlzLCAgICAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIFBJTl9MRURfRkVFREJBQ0tfMCwgICAgLy8gcGluCiAgICAgIExFRF9QSVhFTF9DT1VOVF8wLCAgICAgLy8gcGl4ZWxDb3VudAogICAgICBJRF9MRURfRkVFREJBQ0tfMCwgICAgIC8vIGlkCiAgICAgIExFRF9GRUVEQkFDS18wX01CX0FERFJTIC8vIG1vZGJ1c0FkZHJlc3MKICApOwogIGlmIChsZWRGZWVkYmFja18wKQogIHsKICAgIGNvbXBvbmVudHMucHVzaF9iYWNrKGxlZEZlZWRiYWNrXzApOwogICAgTG9nLmluZm9sbihGKExFRGZlZWRiYWNrXzAgaW5pdGlhbGl6ZWQuIFBpbjolZCwgQ291bnQ6JWQsIElEOiVkLCBNQjolZCIpLAogICAgICAgICAgICAgICBQSU5fTEVEX0ZFRURCQUNLXzAsIExFRF9QSVhFTF9DT1VOVF8wLAogICAgICAgICAgICAgICBJRF9MRURfRkVFREJBQ0tfMCwgTEVEX0ZFRURCQUNLXzBfTUJfQUREUik7CiAgfQogIGVsc2UKICB7CiAgICBMb2cuZXJyb3JsbihGKExFRGZlZWRiYWNrXzAgaW5pdGlhbGl6YXRpb24gZmFpbGVkLikpOwogIH0KI2VuZGlmCmBgYAo="
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T14:07:25.496Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/LEDFeedback.md",
|
||||
"content": "---\ntitle: LEDFeedback Component\ndescription: Documentation for the LEDFeedback component used in ESP-32, Platform.io, C17 for industrial applications with Modbus-485.\nkeywords: ESP-32, Platform.io, C17, Modbus-485, LEDFeedback, NeoPixel\n---\n\n## LEDFEEDBACK\n\n**Path**: [../src/components/LEDFeedback.h](../src/components/LEDFeedback.h)\n\n**Revision History**: Initial documentation\n\nThis component controls an LED strip (NeoPixel) with various modes like fade, range display, and tri-color blink. It integrates with Modbus for industrial control.\n\n## REQUIREMENTS\n\n- **Pins**: Data pin for NeoPixel (configurable via `PIN_LED_FEEDBACK`).\n- **Dependencies**:\n - `Adafruit_NeoPixel` library for LED control.\n - ModbusTCP library for communication.\n - `config.h` and `config-modbus.h` for configurations.\n\n## FEATURES\n\n- Multiple LED modes (OFF, Fade Red-Blue, Range display, Tri-Color Blink).\n- Modbus integration for remote control and monitoring.\n- Configurable LED strip parameters (pin, pixel count, Modbus address).\n\n## TODOS\n\n- Add more LED modes (e.g., SOLID_COLOR, RAINBOW).\n- Implement brightness control via Modbus.\n- Enhance error handling in Modbus communication.\n\n## EXAMPLE\n\n```cpp\n#ifdef PIN_LED_FEEDBACK_0\n ledFeedback_0 = new LEDFeedback(\n this, // owner\n PIN_LED_FEEDBACK_0, // pin\n LED_PIXEL_COUNT_0, // pixelCount\n ID_LED_FEEDBACK_0, // id\n LED_FEEDBACK_0_MB_ADDR // modbusAddress\n );\n if (ledFeedback_0)\n {\n components.push_back(ledFeedback_0);\n Log.infoln(F(\"LEDFeedback_0 initialized. Pin:%d, Count:%d, ID:%d, MB:%d\"),\n PIN_LED_FEEDBACK_0, LED_PIXEL_COUNT_0,\n ID_LED_FEEDBACK_0, LED_FEEDBACK_0_MB_ADDR);\n }\n else\n {\n Log.errorln(F(\"LEDFeedback_0 initialization failed.\"));\n }\n#endif\n```"
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T14:08:05.563Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/component-name.md",
|
||||
"content": "---\ntitle: \"Component Name\"\ndescription: \"Documentation for the OmronE5 component used in an ESP-32, Platform.io, C17 industrial application with Modbus-485.\"\nkeywords: [\"ESP-32\", \"Platform.io\", \"C17\", \"Modbus-485\", \"OmronE5\", \"industrial\"]\n---\n\n## OMROM E5\n\n**Path**: [../../src/components/OmronE5.h](../../src/components/OmronE5.h)\n\n**Revision History**: Initial documentation\n\nThis component is designed for interfacing with the Omron E5 temperature controller via Modbus-RTU (RS-485). It provides functionalities for reading and writing registers, managing heating and cooling states, and tracking statistics when enabled.\n\n## REQUIREMENTS\n\n- **Pins**: Requires RS-485 communication pins (configured in `config.h`).\n- **Dependencies**:\n - ArduinoLog\n - ModbusRTU library\n - Component base class\n\n## FEATURES\n\n- Modbus-RTU communication support.\n- Configurable read intervals for Modbus blocks.\n- Support for conditional compilation (e.g., `ENABLE_TRUTH_COLLECTOR`, `ENABLE_COOLING`).\n- Getters and setters for process values (PV), setpoints (SP), and status registers.\n- Statistics tracking (e.g., mean error, heat rate) when enabled.\n\n## TODOS\n\n- Add detailed examples for Modbus-RTU configuration.\n- Implement unit tests for Modbus communication.\n- Validate cooling functionality when `ENABLE_COOLING` is active.\n\n## EXAMPLE\n\nBelow is an example of how to initialize and use the `OmronE5` component:\n\n```cpp\n#include \"components/OmronE5.h\"\n\n#ifdef ENABLE_RS485\nOmronE5 tempController(\n this, // owner\n 1, // slaveId\n 300 // readInterval (ms)\n);\n\nshort result = tempController.setup();\nif (result != 0) {\n Log.errorln(F(\"Failed to setup OmronE5\"));\n}\n\n// In the main loop:\ntempController.loop();\n\nuint16_t pv;\nif (tempController.getPV(pv)) {\n Log.infoln(F(\"Current PV: %d\"), pv);\n}\n#endif\n```\n"
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T14:09:07.594Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": "Unterminated string in JSON at position 992 (line 1 column 993)",
|
||||
"timestamp": "2025-06-03T14:10:07.749Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/Plunger.md",
|
||||
"content": "LS0tCnRpdGxlOiBQbHVuZ2VyIENvbXBvbmVudApkZXNjcmlwdGlvbjogQSBjb21wb25lbnQgZm9yIGNvbnRyb2xsaW5nIHBsdW5nZXIgbW90aW9uIHVzaW5nIE1vZGJ1cy00ODUsIFNBS08gVkZEcywgYW5kIGpveXN0aWNrIGlucHV0cy4ga2V5d29yZHM6IFBsdW5nZXIsIEVTVC0zMiwgUGxhdGZvcm0uaW8sIE1vZGJ1cy00ODUsIFNBS08gVkZELCBJbmR1c3RyaWFsIFNvZnR3YXJlCi0tLQoKIyBQTFVOR0VSCgogICAgCn5+fgptYXJrZG93bgogICAgCUhlYWRlciBpbmZvcm1hdGlvbiBmcm9tICoqUEJfQ09NSVQqKgogICAgClJldmlzaW9uIEhpc3Rvcnk6IGluaXRpYWwgZG9jdW1lbnRhdGlvbgp7e3sgL3NyYy9jb21wb25lbnRzL1BsdW5nZXIuaCB9fX0Kfn5+CiAKT3ZlcnZpZXc6IFRoZSBQbHVuZ2VyIGNvbXBvbmVudCBwcm92aWRlcyBjb250cm9sIG9mIHBsdW5nZXIgbW90aW9uIHVzaW5nIGEgU0FLTyBWRkQsIGpveXN0aWNrLCBhbmQgc3BlZWQvdG9ycXVlIHBvdGVudGlvbWV0ZXJzLiBJdCBzdXBwb3J0cyBtYW51YWwgYW5kIGF1dG9tYXRlZCBvcGVyYXRpb25zLCBqYW0gZGV0ZWN0aW9uLCBhbmQgTW9kYnVzIFRDUC9SU0Q0ODUgY29tbXVuaWNhdGlvbi4KCiMjIFJFUVVJUkVNRU5UUwoKLSBQaW5zOgogIC0gQ29ubmVjdGVkIHRvIGEgU0FLTyBWRkQgKFNlcmlhbCBvciBNb2RidXMpCiAgLSBKb3lzdGljayBpbnB1dCAoQUREIGNoYW5uZWxzKQogIC0gU3BlZWQgYW5kIFRvcnF1ZSBQb3RlbnRpb21ldGVycwogIC0gT3B0aW9uYWw6IExFRCBmZWVkYmFjayBmb3IgdmlzdWFsIHN0YXR1cwogIAotIERlcGVuZGVuY2llczoKICAtIGBgYENvbXBvbmVudC5oYGBgCiAgLSBgYGBNb2RidXMvTW9kYnVzVENQLmhgYAogIC0gYGAgU0FLT19WRkQuaGBgCiAgLSBgYCBKb3lzdGljay5oYGBgCiAgLSBgYCBQT1QuaGBgCiAgLSBgYCBQbHVuZ2VyU2V0dGluZ3MuaGBgCiAgLSBgYCBUaWNrZXIuaGBgCiAgLSBgYCA8QXJkdWlub0xvZy5oPmBgYAogIC0gYGAgPEFyZHVpbm9Kc29uLmg+YGBgCgojIyBGZWF0dXJlcwoKLSBTdXBwb3J0cyBtYW51YWwgYW5kIGF1dG9tYXRlZCBwbHVuZ2luZy9ob21pbmcKLSBTcGVlZCBhZGp1c3RtZW50IHZpYSBwb3RlbnRpb21ldGVyCi0gVG9ycXVlLWJhc2VkIGphbSBkZXRlY3Rpb24KLSBNb2RidXMgVENQL1JTRDQ4NSBpbnRlcmZhY2UgZm9yIHJlbW90ZSBjb250cm9sCi0gRW5hYmxlL2Rpc2FibGUgYXV0byBtb2RlCi0gUmVjb3JkL1JlcGxheSBmdW5jdGlvbmFsaXR5Ci0gRmlsbGluZyBtb2RlIGZvciBzeXN0ZW0gb3BlcmF0aW9ucwoKIyMgVE9ET1MKCi0gQWRkIG1vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBmb3IgZW51bXMgYW5kIHN0YXRlcwotIFZhbGlkYXRlIE1vZGJ1cyBUQ1AvUlNENDg1IG1hcHBpbmcKLSBUZXN0IHJlY29yZC9yZXBsYXkgZnVuY3Rpb25hbGl0eQotIEFkZCBleGFtcGxlIHVzYWdlIGNvZGUgZm9yIGJlZC4KCiMjIEVYQU1QTEUKCgpgYGAgYysrsP+/vyBQSVNfTkVHQVRJVkVfQlVUVE9OX0hPTERfRFVSQVRJT05fTVMgMjAwMCAvLyBUaW1lIGZvciBsaW9uIHRvIGJlIGhlbGQgZm9yIGF1dG8gbW9kZQojZGVmaW5lIFBJTl9Kb3lzdGlja19GRUVEQkFDS18wIDEyCiAKIApQTFVOR0VSIGNvbXBvbmVudCA9IG5ldyBQbHVuZ2VyKAogICAgdGhpcywgICAgICAgICAgICAgICAgICAvLyBvd25lcgogICAgU0FLT1dGRCwgICAgICAgICAgICAvLyBWbnNmCiAgICBKb3lzdGljaywgICAgICAgICAvLyBKb3lzdGljawogICAgU0BLTyBWRksgLSAgICAgIC8vIE92ZXJyaWRpbmcgUG90CiAgICBGSU5BTl9TVVJGRQogICAgKTsKICAgaWYgKGR1bmdlbikKICAgIHsKICAgICAgICBjb21wb25lbnRzLnB1c2hfYmFjayhEdW5nZW4pOwogICAgICAgIExvZy5pbmZvbG4oRigiRHVuZ2VuX3RvIGluaXRpYWxpemVkLiBQaW58JWR8JGQlZCxJRCRkLCBNQiRkIiksCiAgICAgICAgICAgICAgICBKSksgUERQLCBGKSBNRCwgSBxKLCAhIT8gKG5ldy4uLi4pOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIExvZy5lcnJvcmxuKEYoIkR1bmdlbl9kbyBpbml0aWFsaXphdGlvbiBmYWlsZWQuIikpOwogICAgfQogICAgCiNgYGA="
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T14:11:23.713Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/rest-server.md",
|
||||
"content": "IyMgUkVTVF9TRVJWRVIKCiogKipQYXRoKiogOiBbLi9zcmMvY29tcG9uZW50cy9SZXN0U2VydmVyLmhdKC4vc3JjL2NvbXBvbmVudHMvUmVzdFNlcnZlci5oKQoqICoqUmV2aXNpb24gaGlzdG9yeSoqIDogaW5pdGlhbCBkb2N1bWVudGF0aW9uCgpUaGlzIGNvbXBvbmVudCBpbXBsZW1lbnRzIGEgUkVTVGZ1bCBBUEkgc2VydmVyIHRoYXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBNb2RidXMgc3lzdGVtIGZvciBpbmR1c3RyaWFsIGFwcGxpY2F0aW9ucy4gSXQgc3VwcG9ydHMgd2ViIHNvY2tldCBjb21tdW5pY2F0aW9uIGZvciByZWFsLXRpbWUgdXBkYXRlcy4KCiMjIFJFUVVJUkVNRU5UUwoKLSBQaW5zOiBOb3QgYXBwbGljYWJsZSAobmV0d29yay1iYXNlZCkKLSBEZXBlbmRlbmNpZXM6CiAgLSBgRVNQQXN5bmNXZWJTZXJ2ZXJgCiAgLSBgQXN5bmNKc29uYAogIC0gYEFyZHVpbm9Kc29uYAogIC0gYEFyZHVpbm9Mb2dgCiAgLSBgQXN5bmNUQ1BgCiAgLSBgTW9kYnVzVkNQCgojIyBGRUFUVVJFUwoK-IFyZXN0ZnVsIGFwaSBzZXJ2ZXIgd2l0aCBzd2FnZ2VyIGdlbmVyYXRlZCBpbnRlcmZhY2UK-SBpbnRlZ3JhdGVkIHdpdGggTW9kYnVzVAotIHN1cHBvcnQgZm9yIENvaWxzLCBSZWdpc3RlcnMsIGFuZCBMb2dnaW5nIGRhdGEK-CB3ZWIgc29ja2V0IHN1cHBvcnQgZm9yIHJlYWwtdGltZSBjb21tdW5pY2F0aW9uCgotIEZlYXR1cmUgZmxhZ3M6IGBFTkFCTEVfV0VCU09DS0VUCgojIyBUT0RPUwoKLSBbIF0gQWRkIG1vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBmb3IgQVBJIGVuZHBvaW50cwoKLSBbIF0gVGVzdCB3ZWJzb2NrZXQgYnJvYWRjYXN0IGZ1bmN0aW9uYWxpdHkKCiMjIEVYQU1QTEUKCioqRXhhbXBsZSBDb2RlIFNuYXBzaG90KioKCmBgYGMKI2lmZGVmIFBJTl9MRURfRkVFREJBQ0tfMAogIGxlZEZlZWRiYWNrXzAgPSBuZXcgTEVERmVlZGJhY2soCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgLy8gb3duZXIKICAgICAgUElOX0xFRF9GRUVEQkFDS18wLCAgICAvLyBwaW4KICAgICAgTEVEX1BJWEVMX0NPVU5UXzAsICAgICAvLyBwaXhlbENvdW50CiAgICAgIElEX0xFRF9GRUVEQkFDS18wLCAgICAgLy8gaWQKICAgICAgTEVEX0ZFRURCQUNLXzBfTUJfQUREUiAvLyBtb2RidXNBZGRyZXNzCiAgKTsKICBpZiAobGVkRmVlZGJhY2tfMCkKICB7CiAgICBjb21wb25lbnRzLnB1c2hfYmFjayhsZWRGZWVkYmFja18wKTsKICAgIExvZy5pbmZvbG4oRigiTEVERmVlZGJhY2tfMCBpbml0aWFsaXplZC4gUGluOiVkLCBDb3VudDolZCwgSUQ6JWQsIE1COiVkIiksCiAgICAgICAgICAgICAgIFBJTl9MRURfRkVFREJBQ0tfMCwgTEVEX1BJWEVMX0NPVU5UXzAsCiAgICAgICAgICAgICAgIElEX0xFRF9GRUVEQkFDS18wLCBMRURfRkVFREJBQ0tfMF9NQl9BRERSKTsKICB9CiAgZWxzZQogIHsKICAgIExvZy5lcnJvcmxuKEYoIkxFRUZlZWRiYWNrXzAgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpKTsKICB9CiNlbmRpZgpgYGA="
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T14:14:26.064Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/SAKO_VFD.md",
|
||||
"content": "---\ntitle: SAKO_VFD Component\ndescription: Documentation for the SAKO_VFD component used in ESP-32 Platform.io projects with Modbus-485.\nkeywords: ESP-32, Platform.io, C17, Modbus-485, VFD, component\n---\n\n# SAKO_VFD\n\n**Path**: [src/components/SAKO_VFD.h](./../src/components/SAKO_VFD.h)\n\n**Revision History**: initial documentation\n\nThis component provides an interface for controlling and monitoring a SAKO Variable Frequency Drive (VFD) over Modbus-485. It is designed for industrial applications and integrates with the ModbusRTU library for communication.\n\n## REQUIREMENTS\n\n- **Pins**: Requires Modbus-485 communication pins (configured in `config.h`).\n- **Dependencies**:\n - ArduinoLog\n - Component.h\n - ModbusRTU library\n - xstatistics.h\n\n## FEATURES\n\n- Support for Modbus RTU communication.\n- Real-time monitoring of VFD parameters (frequency, speed, current, power, torque, etc.).\n- Control functions for running, stopping, and reversing the VFD.\n- Fault detection and reset capabilities.\n- Retract state machine for automated control sequences.\n- Statistics tracking for operational parameters.\n\n## TODOS\n\n- Add more detailed documentation for internal methods.\n- Extend fault-handling capabilities.\n- Optimize Modbus register updates for performance.\n\n## EXAMPLE\n\nThe component can be initialized and used as follows:\n\n```cpp\n#ifdef ENABLE_RS485\n SAKO_VFD vfd(\n SLAVE_ID_VFD, // Slave ID\n SAKO_VFD_DEFAULT_READ_INTERVAL // Read interval\n );\n if (vfd.setup() == 0) {\n components.push_back(&vfd);\n Log.infoln(F(\"SAKO VFD initialized. Slave ID: %d\"), SLAVE_ID_VFD);\n } else {\n Log.errorln(F(\"SAKO VFD initialization failed.\"));\n }\n#endif\n```"
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T14:15:03.630Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/Sako-Registers.md",
|
||||
"content": "---\ntitle: \"Sako-Registers\"\ndescription: \"Documentation for the Sako-Registers component, which defines Modbus-485 parameters for the Sako drive system.\"\nkeywords: [\"ESP-32\", \"Platform.io\", \"C17\", \"Modbus-485\", \"Sako-Registers\"]\n---\n\n## SAKO-REGISTERS\n\n**Path**: [src/components/Sako-Registers.h](./../src/components/Sako-Registers.h)\n\n**Revision History**: Initial documentation\n\nThis component defines an enumeration of Modbus-485 parameters for the Sako drive system. It includes parameters for motor control, frequency settings, input/output configurations, and system monitoring.\n\n## REQUIREMENTS\n\n- **Pins**: Modbus-485 communication interface (TX, RX, and enable pins).\n- **Dependencies**: \n - Modbus library for Platform.io.\n - No standard library dependencies (avoidance of std).\n\n## FEATURES\n\n- **Motor Control**: Defines parameters for motor control modes (e.g., sensorless, VF-Servo).\n- **Frequency Settings**: Includes parameters for frequency sources, limits, and offset adjustments.\n- **I/O Configuration**: Configures digital and analog input/output terminals.\n- **System Monitoring**: Provides parameters for LED display, fault outputs, and system status.\n\n## TODOS\n\n- Add examples for common parameter configurations.\n- Expand documentation for advanced parameter usage.\n\n## EXAMPLE\n\nBelow is an example of how to use the `E_SAKO_PARAM` enumeration to configure a parameter:\n\n```cpp\n#include \"Sako-Registers.h\"\n\n// Configure the motor control mode to Sensorless\nE_SAKO_PARAM motorControlMode = E_SAKO_PARAM::E_SAKO_PARAM_P00_01_MOTOR_CONTROL_MODE;\n\n// Example Modbus write operation (pseudo-code)\nmodbusWriteRegister(motorControlMode, 0); // Set to Sensorless mode\n```\n\nFor more details, refer to the [Sako drive manual](#) (link to external documentation if available)."
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T14:15:35.334Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/sako-types.md",
|
||||
"content": "IyMgTUVUQURBVEEKdGl0bGU6IFNha28gVHlwZXMKZGVzY3JpcHRpb246IFR5cGUgZGVmaW5pdGlvbnMgYW5kIGVudW1lcmF0aW9ucyBmb3IgU2FrbyBNb2RidXMtNDg1IGNvbXBvbmVudHMgaW4gRVMtUC0zMiBmaXJtd2FyZS4ga2V5d29yZHM6IFNha28sIE1vZGJ1cywgRVMtUC0zMiwgQzE3LCBpbmR1c3RyaWFsIGFwcGxpY2F0aW9uCnJldmlzaW9uX2hpc3Rvcnk6IGluaXRpYWwgZG9jdW1lbnRhdGlvbgotLS0KCiMjIyBTQUtPIFRZUEVTCgogICoqUGF0aCoqOiBbLi4vc3JjL2NvbXBvbmVudHMvU2Frb1R5cGVzLmhdKC4uL3NyYy9jb21wb25lbnRzL1Nha29UeXBlcy5oKQoKICBUaGlzIGNvbXBvbmVudCBwcm92aWRlcyBlbnVtZXJhdGlvbnMgYW5kIHR5cGUgZGVmaW5pdGlvbnMgZm9yIFNha28gTW9kYnVzLTQ4NSBjb21tdW5pY2F0aW9uIGluIGFuIGluZHVzdHJpYWwgc2V0dGluZy4KCiAgIyMjIFJFUVVJUkVNRU5UUwoKICAtIEVTUC0zMiBmaXJtd2FyZQogIC-!VXNlIG9mIE1vZGJ1cy00ODUgcHJvdG9jb2wKICAtIE5vIHN0ZCBkZXBlbmRlbmNpZXMKCiAgIyMjIEZFQVRVUkVTCiAgLSBFbnVtZXJhdGlvbnMgZm9yIFNha28gc3RhdHVzIHZhbHVlcy4KICAtIEVudW1lcmF0aW9uIGZvciBtb25pdG9yaW5nIHJlZ2lzdGVycy4KICAtIEVycm9yIGNvZGVzIGFuZCBkaXJlY3Rpb24gY29udHJvbCBlbnVtZXJhdGlvbnMuCiAgLSBTdXBwb3J0IGZvciB2YXJpb3VzIFNha28gY29tbXVuaWNhdGlvbiBncm91cHMuCgogICMjIyBUT0RPUwogIC0gQWRkIG1vcmUgZG9jdW1lbnRhdGlvbiBvbiB1c2FnZSBzY2VuYXJpb3MuCiAgLSBFeHRlbmQgd2l0aCBleGFtcGxlIGNvZGUgZm9yIGNvbW1vbiB0YXNrcy4KCiAgIyMjIEVYQU1QTEUKCiAgQGZpbGUgYGxpbmUgNCDigJMgYGNvbXBsZXRlIGNvZGUgZXhhbXBsZSBvbiBob3cgdG8gdXNlIHRoZSBgbGVkRmVlZGJhY2tfMGAgaW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50LgogICNEZWZpbmUgYmVzdCBwcmFjdGljZXMgb2YgdXNhZ2Ugd2l0aCBEZXZJdCEKCiAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f"
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T14:16:11.421Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/StatusLight.md",
|
||||
"content": "---\ntitle: StatusLight Component\ndescription: Documentation for the StatusLight component used in ESP-32 industrial applications with Modbus-485 support.\nkeywords: ESP-32, Platform.io, Modbus-485, StatusLight, C17, industrial\n---\n\n## STATUSLIGHT\n\n**Path**: [../src/components/StatusLight.h](../src/components/StatusLight.h)\n\n**Revision History**: Initial documentation\n\nThe `StatusLight` component provides control over status LEDs with support for steady (ON/OFF) and blinking states. It integrates with Modbus for remote monitoring and control.\n\n## REQUIREMENTS\n\n- **Pins**:\n - A GPIO pin configured for output (e.g., `PIN_LED_FEEDBACK_0`).\n- **Dependencies**:\n - Arduino framework.\n - Modbus-485 support (`ModbusTCP.h`).\n - Logging (`ArduinoLog.h`).\n - Component base class (`Component.h`).\n\n## FEATURES\n\n- Supports ON, OFF, and BLINK states.\n- Modbus integration for remote state monitoring and control.\n- Configurable blink intervals.\n- Detailed logging for debugging.\n\n## TODOS\n\n- Add support for custom blink patterns.\n- Implement energy-saving modes.\n- Extend Modbus functionality for advanced configurations.\n\n## EXAMPLE\n\n```cpp\n#ifdef PIN_LED_FEEDBACK_0\n StatusLight statusLight_0 = new StatusLight(\n this, // owner\n PIN_LED_FEEDBACK_0, // pin\n ID_LED_FEEDBACK_0, // key\n LED_FEEDBACK_0_MB_ADDR // modbusAddress\n );\n if (statusLight_0) {\n components.push_back(statusLight_0);\n Log.infoln(F(\"StatusLight_0 initialized. Pin:%d, ID:%d, MB:%d\"),\n PIN_LED_FEEDBACK_0, ID_LED_FEEDBACK_0, LED_FEEDBACK_0_MB_ADDR);\n } else {\n Log.errorln(F(\"StatusLight_0 initialization failed.\"));\n }\n#endif\n```"
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T14:16:44.157Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"file": {
|
||||
"path": "./docs/profiles/component-name.md",
|
||||
"content": "LS0tCnRpdGxlOiBDb21wb25lbnQgTmFtZQpkZXNjcmlwdGlvbjogRG9jdW1lbnRhdGlvbiBmb3IgdGhlIENvbXBvbmVudCBOYW1lIGNvbXBvbmVudC4ga2V5d29yZHM6IFtFU1AtMzIsIFBsYXRmb3JtLmlvLCBDMTcsIE1vZGJ1cy00ODVdCi0tLQoKIyMgQ09NUE9ORU5UIE5BTUUKCiJQYXRoIiA6IFtSZWxhdGl2ZSBwYXRoXSh7cGF0aH0pCgpyZXZpc2lvbiBoaXN0b3J5OiBpbml0aWFsIGRvY3VtZW50YXRpb24KCmEgc2hvcnQgZGVzY3JpcHRpb24gb2YgdGhlIGNvbXBvbmVudC4KCiMjIFJFUVVJUkVNRU5UUwoKLSBQaW5zIHVzZWQKLSBEZXBlbmRlbmNpZXMKCiMjIEZFQVRVUkVTCgpsaXN0IG9mIGZlYXR1cmVzIHByb3ZpZGVkIGJ5IHRoZSBjb21wb25lbnQuCgojIyBUT0RPUwoKLSBTcGVjaWZ5IGFueSBwZW5kaW5nIHRhc2tzIG9yIGltcHJvdmVtZW50cy4KCiMjIEVYQU1QTEUKCmBgYGMoY3BwCiNpZmRlZiBQSU5fTEVEX0ZFRURCQUNLXzAKICBsZWRGZWVkYmFja18wID0gbmV3IExFRGZlZWRiYWNrKAogICAgICB0aGlzLCAgICAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIFBJTl9MRURfRkVFREJBQ0tfMCwgICAgLy8gcGluCiAgICAgIExFRF9QSVhFTF9DT1VOVF8wLCAgICAgLy8gcGl4ZWxDb3VudAogICAgICBJRF9MRURfRkVFREJBQ0tfMCwgICAgIC8vIGlkCiAgICAgIExFRF9GRUVEQkFDS18wX01CX0FERFIgLy8gbW9kYnVzQWRkcmVzcwogICk7CiAgaWYgKGxlZEZlZWRiYWNrXzApCiAgewogICAgY29tcG9uZW50cy5wdXNoX2JhY2sobGVkRmVlZGJhY2tfMCk7CiAgICBMb2cuaW5mbG4oRigiTEVERmVlZGJhY2tfMCBpbml0aWFsaXplZC4gUGluOiVkLCBDb3VudDolZCwgSUQ6JWQsIE1COiVkIiksCiAgICAgICAgICAgICAgIFBJTl9MRURfRkVFREJBQ0tfMCwgTEVEX1BJWEVMX0NPVU5UXzAsCiAgICAgICAgICAgICAgIElEX0xFRF9GRUVEQkFDS18wLCBMRURfRkVFREJBQ0tfMF9NQl9BRERSKTsKICB9CiAgZWxzZQogIHsKICAgIExvZy5lcnJvcmxuKEYoIkxFRGZlZWRiYWNrXzAgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpKTsKICB9CiNlbmRpZgpgYGAK"
|
||||
}
|
||||
},
|
||||
"timestamp": "2025-06-03T14:21:34.463Z",
|
||||
"service": "collector:onFunctionCallResult"
|
||||
}
|
||||
]
|
||||
@ -1344,5 +1344,385 @@
|
||||
},
|
||||
"timestamp": "2025-05-27T07:31:46.779Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/analog-level-switch.md",
|
||||
"content": "IyBBbmFsb2dMZXZlbFN3aXRjaAoKKipQYXRoKiogOiBbYHNyYy9jb21wb25lbnRzL0FuYWxvZ0xldmVsU3dpdGNoLmhgXShzcmMvY29tcG9uZW50cy9BbmFsb2dMZXZlbFN3aXRjaC5oKQoKKipSZXZpc2lvbiBoaXN0b3J5KiogOiBpbml0aWFsIGRvY3VtZW50YXRpb24KCkNvbXBvbmVudCB0byByZWFkIGFuIGFuYWxvZyBpbnB1dCBhcyBhIG11bHRpLXBvc2l0aW9uIHN3aXRjaC4gSW50ZXJwcmV0cyBhbmFsb2cgdm9sdGFnZSBhcyBkaXNjcmV0ZSBwb3NpdGlvbnMgKHNsb3RzKSB1c2luZyB2b2x0YWdlIGRpdmlkZXIgY2lyY3VpdHMuCgojIyBSZXF1aXJlbWVudHMKCiMjIyBQaW5zCi0gT25lIGFuYWxvZyBpbnB1dCBwaW4KCiMjIyBEZXBlbmRlbmNpZXMKLSBgY29uZmlnLmhgIC0gRm9yIGFuYWxvZyBzd2l0Y2ggcmVhZCBpbnRlcnZhbAotIGBjb25maWctbW9kYnVzLmhgIC0gRm9yIE1vZGJ1cyBjb25maWd1cmF0aW9uCi0gYENvbXBvbmVudC5oYCAtIEJhc2UgY29tcG9uZW50IGNsYXNzCi0gYG1vZGJ1cy9Nb2RidXNUQ1AuaGAgLSBNb2RidXMgVENQIGZ1bmN0aW9uYWxpdHkKCiMjIyBIYXJkd2FyZQotIEZpeGVkIHJlc2lzdG9yIChSX2ZpeGVkKSBjb25uZWN0ZWQgZnJvbSBhbmFsb2cgcGluIHRvIEdORAotIFNldCBvZiBzd2l0Y2hlZCByZXNpc3RvcnMgKFJfc3cwLCBSX3N3MSwgLi4uLCBSX3N3Ti0xKSBmb3IgZWFjaCBzbG90CgojIyBGZWF0dXJlcwoKLSBSZWFkcyBhbmFsb2cgdm9sdGFnZSBhbmQgbWFwcyBpdCB0byBkaXNjcmV0ZSBzbG90cwotIENvbmZpZ3VyYWJsZSBudW1iZXIgb2Ygc2xvdHMgKHVwIHRvIDMyKQotIEFkanVzdGFibGUgQURDIHN0ZXAgcGVyIHNsb3QgYW5kIG9mZnNldAotIFNtb290aGluZyBhbGdvcml0aG0gKE1vdmluZyBBdmVyYWdlIC8gRXhwb25lbnRpYWwgTW92aW5nIEF2ZXJhZ2UpCi0gRGVib3VuY2luZyBtZWNoYW5pc20gZm9yIHN0YWJsZSByZWFkaW5ncwotIEh5c3RlcmVzaXMgZm9yIG5vaXNlIHJlc2lzdGFuY2UKLSBNb2RidXMgVENQIGludGVncmF0aW9uCi0gQWN0aXZlIHNsb3QgZGV0ZWN0aW9uIGFuZCByZXBvcnRpbmcKLSBSYXcgYW5kIHNtb290aGVkIEFEQyB2YWx1ZSBhY2Nlc3MKLSBTZXJpYWwgY29tbXVuaWNhdGlvbiBzdXBwb3J0CgojIyBDb25maWd1cmF0aW9uCgojIyMgQ29tcGlsZS10aW1lIERlZmluZXMKLSBgQU5BTE9HX0xWTF9TTE9UU19NQVhgIC0gTWF4aW11bSBudW1iZXIgb2Ygc2xvdHMgKGRlZmF1bHQ6IDMyKQotIGBBTFNfU01PT1RISU5HX1NJWkVgIC0gU2FtcGxlcyBpbiBtb3ZpbmctYXZlcmFnZSBidWZmZXIgKGRlZmF1bHQ6IDgpCi0gYEFMU19ERUJPVU5DRV9DT1VOVGAgLSBJZGVudGljYWwgZGV0ZWN0aW9ucyBiZWZvcmUgY29tbWl0IChkZWZhdWx0OiAzKQotIGBBTFNfSFlTVEVSRVNJU19DT0RFU2AgLSDCsUFEQyBjb2RlcyBndWFyZC1iYW5kIChkZWZhdWx0OiA0KQotIGBBTFNfUkVBRF9JTlRFUlZBTF9NU2AgLSBSZWFkIGludGVydmFsIG92ZXJyaWRlIChkZWZhdWx0OiAyNW1zKQotIGBBTFNfVVNFX0VNQWAgLSBFbmFibGUgRXhwb25lbnRpYWwgTW92aW5nIEF2ZXJhZ2UgKGRlZmF1bHQ6IDAgLSBkaXNhYmxlZCkKCiMjIFRvZG9zCgotIEFkZCBjYWxpYnJhdGlvbiBmdW5jdGlvbmFsaXR5Ci0gSW1wbGVtZW50IGNvbmZpZ3VyYWJsZSBoeXN0ZXJlc2lzIHNldHRpbmdzCi0gQWRkIG91dC1vZi1yYW5nZSBkZXRlY3Rpb24gYW5kIGhhbmRsaW5nCi0gQWRkIGNvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBhbmQgZXJyb3IgaGFuZGxpbmcKLSBJbXBsZW1lbnQgZGlhZ25vc3RpYyBtb2RlIGZvciBjaXJjdWl0IHZhbGlkYXRpb24KCiMjIEV4YW1wbGUKCmBgYGNwcAojZGVmaW5lIFBJTl9BTkFMT0dfU1dJVENIX1AwXzAgMzIKI2RlZmluZSBTTE9UX0NPVU5UXzAgNCAgLy8gNCBwb3NpdGlvbiBzd2l0Y2gKI2RlZmluZSBBRENfU1RFUF9QRVJfU0xPVF8wIDgwMCAvLyBBREMgY291bnRzIGJldHdlZW4gZWFjaCBzbG90CiNkZWZpbmUgQURDX09GRlNFVF8wIDIwMCAgLy8gRmlyc3Qgc2xvdCBzdGFydHMgYXQgQURDIHZhbHVlIDIwMAojZGVmaW5lIElEX0FOQUxPR19TV0lUQ0hfMCAxNAojZGVmaW5lIFAyU19BTkFMT0dfU1dJVENIXzBfTUJfQURIUiAweDAxMDEKCi8vIEluIGluaXRpYWxpemF0aW9uCiNpZmRlZiBQSU5fQU5BTE9HX1NXSUNUX1AwXzAKICBhbmFsb2dTd2l0Y2hfMCA9IG5ldyBBbmFsb2dMZXZlbFN3aXRjaCgKICAgICAgdGhpcywgICAgICAgICAgICAgICAgICAgICAgLy8gb3duZXIKICAgICAgUElOX0FOQUxPR19TV0lUQ0hfUDBfMCwgICAgICAvLyBwaW4KICAgICAgU0xPVF9DT1VOVF8wLCAgICAgICAgICAgICAgICAvLyBudW1MZXZlbHMKICAgICAgQURDX1NURVBfUEVSX1NMT1RfMCwgICAgICAgICAgLy8gbGV2ZWxTdGVwCiAgICAgIEFEQ19PRkZTRVRfMCwgICAgICAgICAgICAgICAgIC8vIGFkY1ZhbHVlT2Zmc2V0CiAgICAgIElEX0FOQUxPR19TV0lUQ0hfMCwgICAgICAgICAgIC8vIGlkCiAgICAgIFAyU19BTkFMT0dfU1dJVENIXzBfTUJfQURIUiAgIC8vIG1vZGJ1c0FkZHJlc3MKICA7CiAgaWYgKGFuYWxvZ1N3aXRjaF8wKQogIHsKICAgIGNvbXBvbmVudHMucHVzaF9iYWNrKGFuYWxvZ1N3aXRjaF8wKTsKICAgIExvZy5pbmZvbG4oRigiQW5hbG9nU3dpdGNoXzAgaW5pdGlhbGl6ZWQuIFBpbjolZCwgU2xvdHM6JWQsIFN0ZXA6JWQsIE9mZnNldDolZCwgSUQ6JWQsIE1COiVkIiksCiAgICAgICAgICAgICAgUElOX0FOQUxPR19TV0lUQ0hfUDBfMCwgU0xPVF9DT1VOVF8wLAogICAgICAgICAgICAgIEFEQ19TVEVQX1BFUl9TTE9UXzAsIEFEQ19PRkZTRVRfMCwKICAgICAgICAgICAgICBJRF9BTkFMT0dfU1dJVENIXzAsIFAyU19BTkFMT0dfU1dJVENIXzBfTUJfQURIUik7CiAgfQogIGVsc2UKICB7CiAgICBMb2cuZXJyb3JsbihGKCJBbmFsb2dTd2l0Y2hfMCBpbml0aWFsaXphdGlvbiBmYWlsZWQuIikpOwogIH0KI2VuZGlmCmBgYA=="
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T13:20:25.039Z",
|
||||
"sessionId": "1748956767507",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T13:20:25.041Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/analog-level-switch.md",
|
||||
"content": "IyBBbmFsb2cgTGV2ZWwgU3dpdGNoCgpgYGB0eXBlc2NyaXB0CnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KYGB0CgoqKlBhdGgqKjogW3NyYy9jb21wb25lbnRzL0FuYWxvZ0xldmVsU3dpdGNoLmhdKC4uL3NyYy9jb21wb25lbnRzL0FuYWxvZ0xldmVsU3dpdGNoLmgpCgpDb21wb25lbnQgdG8gcmVhZCBhbiBhbmFsb2cgaW5wdXQgYXMgYSBtdWx0aS1wb3NpdGlvbiBzd2l0Y2ggd2l0aCB2b2x0YWdlIGRpdmlkZXIgc2V0dXAuCgojIyBSZXF1aXJlbWVudHMKCi0gKipQaW5zKio6IEFuYWxvZyBpbnB1dCBwaW4KLSAqKkRlcGVuZGVuY2llcyoqOgogIC0gQXJkdWluby5oCiAgLSBBcmR1aW5vTG9nLmgKICAtIGNvbmZpZy5oCiAgLSBBcHAuaAogIC0gQ29tcG9uZW50LmgKICAtIG1vZGJ1cy9Nb2RidXNUQ1AuaAogIC0gY29uZmlnLW1vZGJ1cy5oCi0gKipIYXJkd2FyZSoqOiBWb2x0YWdlIGRpdmlkZXIgY2lyY3VpdCB3aXRoIHJlc2lzdG9ycyBmb3IgZWFjaCBzbG90CgojIyBGZWF0dXJlcwoKLSBNdWx0aS1wb3NpdGlvbiBhbmFsb2cgc3dpdGNoIHJlYWRpbmcKLSBDb25maWd1cmFibGUgQURDIG9mZnNldCBhbmQgc3RlcCBzaXplCi0gU21vb3RoaW5nIGZpbHRlciAobW92aW5nIGF2ZXJhZ2Ugb3IgRU1BKQotIERlYm91bmNlIGxvZ2ljIGZvciBzdGFibGUgcmVhZGluZ3MKLSBIeXN0ZXJlc2lzIGZvciByb2J1c3QgbGV2ZWwgZGV0ZWN0aW9uCi0gTW9kYnVzIFRDUCBpbnRlZ3JhdGlvbgotIFJlYWwtdGltZSBBREMgdmFsdWUgZXhwb3N1cmUKLSBDb25maWd1cmFibGUgc2FtcGxpbmcgaW50ZXJ2YWwKCiMjIENvbmZpZ3VyYXRpb24KCmBgYGMKI2RlZmluZSBBTkFMT0dfTFZMX1NMT1RTX01BWCAgICAgIDMyICAgICAgLy8gaGFyZHdhcmUgbGltaXQKI2RlZmluZSBBTFNfU01PT1RISU5HX1NJWkUgICAgICAgIDggICAgICAgLy8gc21vb3RoaW5nIGJ1ZmZlciBzaXplCiNkZWZpbmUgQUxTX0RFTE9VTkNFX0NPVU5UICAgICAgICAzICAgICAgIC8vIGNvbmZpcm1hdGlvbnMKI2RlZmluZSBBTFNfSFlTVEVSRVNJU19DT0RFUyAgICAgIDQgICAgICAgLy8gQURDIGNvZGVzIGd1YXJkZAojZGVmaW5lIEFMU19SRUFEX0lOVEVSVkFMX01TICAgICAgMjUgICAgICAgLy8gcmVhZCBpbnRlcnZhbGwKI2RlZmluZSBBTFNfVVNFX0VNQSAgICAgICAgICAgICAgIDA=CmBgYAoKIyMgVG9kb3MKCi0gRW5oYW5jZSBlcnJvciBoYW5kbGluZyBmb3IgaW52YWxpZCBjb25maWd1cmF0aW9ucwotIEFkZCBhdXRvLWNhbGlicmF0aW9uIGZlYXR1cmUKLSBJbXBsZW1lbnQgZGlhZ25vc3RpY3MgZm9yIG9wZW4vY2xvc2VkIGNpcmN1aXQgZGV0ZWN0aW9uCi0gQWRkIGNvbmZpZ3VyYWJsZSB0b2xlcmFuY2UgZm9yIG5vaXN5IGVudmlyb25tZW50cwoKIyMgRXhhbXBsZQoKYGBgYworLy8gQ29tcG9uZW50IGluaXRpYWxpemF0aW9uIGluIE1haW5BY3Rvcit8fC5jcHAKI2lmZGVmIFBJTl9BTkFMT0dfTEVWRUxfU1dJVENIXzAKICBhbmFsb2dMZXZlbFN3aXRjaF8wID0gbmV3IEFuYWxvZ0xldmVsU3dpdGNoCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIFBJTl9BTkFMT0dfTEVWRUxfU1dJVENIXzAsIC8vIGFuYWxvZyBwaW4KICAgICAgNCwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbnVtIGxldmVscwogICAgICA4MDAsICAgICAgICAgICAgICAgICAgICAgIC8vIGxldmVsIHN0ZXAKICAgICAgMjAwLCAgICAgICAgICAgICAgICAgICAgICAgLy8gQURDIHZhbHVlIG9mZnNldAogICAgICBJRF9BTkFMT0dfTEVWRUxfU1dJVENIXzAsIC8vIGNvbXBvbmVudCBJRAogICAgICBBTkFMT0dfTEVWRUxfU1dJVENIXzBfTUJfQUREUiAvLyBNb2RidXMgYWRkcmVzcwogICk7CiAgaWYgKGFuYWxvZ0xldmVsU3dpdGNoXzApCiAgewogICAgY29tcG9uZW50cy5wdXNoX2JhY2soYW5hbG9nTGV2ZWxTd2l0Y2hfMCk7CiAgICBMb2cuaW5mb2xuKEYoIkFuYWxvZ0xldmVsU3dpdGNoXzAgaW5pdGlhbGl6ZWQuIFBpbjolZCwgTGV2ZWxzOiVkLCBTdGVwOiVkLCBPZmZzZXQ6JWQsIElEOiVkLCBNQjolZCIpLAogICAgICAgICAgICAgICBQSU5fQU5BTE9HX0xFVkVMX1NXSVRDSF8wLCA0LCA4MDAsIDIwMCwKICAgICAgICAgICAgICAgSURfQU5BTE9HX0xFVkVMX1NXSVRDSF8wLCBBTkFMT0dfTEVWRUxfU1dJVENIXzBfTUJfQUREUik7CiAgfQogIGVsc2UKICB7CiAgICBMb2cuZXJyb3JsbihGKCJBbmFsb2dMZXZlbFN3aXRjaF8wIGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKSk7CiAgfQojZW5kaWYKYGBgCgojIyBWb2x0YWdlIERpdmlkZXIgU2V0dXAKCkZvciBhIDUtdm9sdCBzeXN0ZW0gd2l0aCA0IGxldmVsczogClJfcHVsbF9kb3duID0gMTBrIGZyb20gYW5hbG9nIHBpbiB0byBHTkQKCnwgU2xvdCB8IEFORG9WYWx1ZSB8IFJfeFsqXSh2aWEgc3dpdGNoIHRvIDVWKSB8IEl0ZW0gfAp8LS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLXwKfCAwICAgfCA2MjAgICAgICAgfCA1NmsgICAgICAgICAgICAgICAgICAgfCA6VzgxMDozVnw9PiB1c2luZyBBRFNfNFwiNTZrPz4gfAp8IDEgICB8IDEzNjUgICAgICB8IDIwayAgICAgICAgICAgICAgICAgICB8IDIwayBzdGFuZGFyZCBjYXJib24gICAgICAgfAp8IDIgICB8IDIyNTAgICAgICB8IDguMmsgICAgICAgICAgICAgICAgICAgfCA4LjJrIHN0YW5kYXJkIGNhcmJvbiAgICAgICB8CnwgMyAgIHwgMzAxMSAgICAgIHwgMy42ayAgICAgICAgICAgICAgICAgICB8IDMuNmsgc3RhbmRhcmQgY2FyYm9uICAgICAgIHwKClZfb3V0ID0gNVYgKiAoMTBrIC8gKFJfeCArIDEwaykpCg=="
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T13:22:19.955Z",
|
||||
"sessionId": "1748956886469",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T13:22:19.957Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/extruder.md",
|
||||
"content": "LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIEV4dHJ1ZGVyCgoqKlBhdGgqKiA6IFtzcmMvY29tcG9uZW50cy9FeHRydWRlci5oXSguLi9zcmMvY29tcG9uZW50cy9FeHRydWRlci5oKQoKSW5kdXN0cmlhbCBleHRydWRlciBjb250cm9sIGNvbXBvbmVudCBmb3IgbWFuYWdpbmcgVkZELWRyaXZlbiBleHRydXNpb24gb3BlcmF0aW9ucy4gUHJvdmlkZXMgbWFudWFsIGFuZCBhdXRvbWF0aWMgZXh0cnVzaW9uIG1vZGVzIHdpdGggam9zdGljayBjb250cm9sLCBzcGVlZCBhZGp1c3RtZW50LCBhbmQgamFtIGRldGVjdGlvbi4KCiMjIFJlcXVpcmVtZW50cwoKKipEZXBlbmRlbmNpZXMqKjoKLSBTQUtPX1ZGRCBjb21wb25lbnQKLSAzUG9zQW5hbG9nIGNvbXBvbmVudCAob3B0aW9uYWwpCi0gUE9UIGNvbXBvbmVudCAob3B0aW9uYWwpCgojIyBGZWF0dXJlcwoKLSAqKk11bHRpLW1vZGUgT3BlcmF0aW9uKio6IE1hbnVhbCBhbmQgYXV0b21hdGljIGV4dHJ1c2lvbiBtb2RlcwotICoqVmFyaWFibGUgU3BlZWQqKjogQ29uZmlndXJhYmxlIHNwZWVkIHByZXNldHMgYW5kIFBPVC1iYXNlZCBmaW5lIHR1bmluZwogIC0gU0xPVzogMTAuMDBIegogIC0gTUVESVVNOiAyNS4wMEh6CiAgLSBGQVNUOiA1MC4wMEh6IChmb3IgZnV0dXJlIHVzZSkKLSAqKkphbSBEZXRlY3Rpb24qKjogVG9ycXVlLWJhc2VkIGphbW1pbmcgZGV0ZWN0aW9uIHdpdGggYXV0b21hdGljIHN0b3AKLSAqKk92ZXJsb2FkIFByb3RlY3Rpb24qKjogQ29uZmlndXJhYmxlIHRvcnF1ZSB0aHJlc2hvbGRzCi0gKipTYWZldHkgVGltZW91dCo6IE1heGltdW0gcnVudGltZSBwcm90ZWN0aW9uICgxNS4wMHMpCi0gKipNb2RidXMgVENQIEludGVncmF0aW9uKio6IFJlbW90ZSBjb250cm9sIGFuZCBzdGF0dXMgbW9uaXRvcmluZwoKIyMgVG9kb3MKCi0gW10gRXh0cmVuZGVkIGZhdWx0IGhhbmRsaW5nCi0gW10gUmV2ZXJzZSBleHRydXNpb24gZmVhdHVyZQotIFtdIEFkdmFuY2VkIGRpYWdub3N0aWNzIGFuZCBwZXJmb3JtYW5jZSBtZXRyaWNzCi0gW10gSGlzdG9yaWNhbCBvcGVyYXRpb24gbG9nZ2luZwoKIyMgRXhhbXBsZQoKYGBgY3BwCiNpZmRlZiBQSU5fRVhUUlVERVJfVkZEX1NJR05BTAogIHNha29WZmQgPSBuZXcgU0FLT19WRkQoCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgICAvLyBvd25lcgogICAgICBQSU5fRVhUUlVERVJfVkZEX1NJR05BTCwgICAvLyB2ZmRQaW4KICAgICAgSUQfRVhUUlVERVJfVkZELCAgICAgICAgICAgLy8gaWQKICAgICAgRVhUUlVERVJfVkZEX01CX0FERFIgICAgICAgLy8gbW9kYnVzQWRkcmVzcwogICk7CiNlbmRpZgoKI2lmZGVmIFBJTl9FeHRydWRlcl9KeXN0aWNrCiAgZXh0cnVkZXJKb3lzdGljayA9IG5ldyAzUG9zQW5hbG9nKAogICAgICB0aGlzLCAgICAgICAgICAgICAgICAgICAgLy8gb3duZXIKICAgICAgUElOX0V4dHJ1ZGVyX0p5c3RpY2ssICAgICAvLyBhbmFsb2dQaW4KICAgICAgSURfRXh0cnVkZXJfSm95c3RpY2sgICAgICAvLyBpZAogICk7CiNlbmRpZgoKI2lmZGVmIFBJTl9FWFRSVURFUF9TUEVFRApzcGVlZFBvdEV4dHJ1ZGVyID0gbmV3IFBPVF8oCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIFBJTl9FWFRSVURFUF9TUEVFRCwgICAgICAgLy8gYW5hbG9nUGluCiAgICAgIElEX0VYVFJVREVSX1NQRUVEX1BPVCwgICAgIC8vIGlkCiAgICAgIFBPVF9FWFRSVURFX1NQRUVEX01CX0FERFIgIC8vIG1vZGJ1c0FkZHJlc3MKKTsKI2VuZGlmCgojUGlmZGVmIFBJTl9FWFRSVURFX09CU0lMT0FEUG90CiAgb3ZlcmxvYWRQb3RFeHRydWRlciA9IG5ldyBQT1QoCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIFBJTl9FWFRSVURFX09CU0lMT0FEUE90LCAgICAvLyBhbmFsb2dQaW4KICAgICAgSURfRVhUUlVERVJfT1ZFUkxPQURfUE9ULCAgLy8gaWQKICAgICAgUE9UX0VYVFJVREVSX09WRVJMT0FEX01CX0FERFIgLy8gbW9kYnVzQWRkcmVzcwopOwojZW5kaWYKCiNpZmRlZiBQSU5fRVhUUlVERVJfVkZEX1NJR05BTAogIGV4dHJ1ZGVyID0gbmV3IEV4dHJ1ZGVyKAogICAgICB0aGlzLCAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIHNha29WZmQsICAgICAgICAgICAgLy8gdmZkCiAgICAgIGV4dHJ1ZGVyU295cywgICAgICAgLy8gam95c3RpY2sgKG51bGxxaXIpCiAgICAgIHNwZWVkUG90RXh0cnVkZXIsICAgIC8vIHNwZWVkUG90IChvcGUgZm9yIDBvcGVuKQogICAgICBvdmVybG9hZFBvdEV4dHJ1ZGVyIC8vIG92ZXJsb2FkUG90IChvcHRpb25hbCkKICApOjYKICBpZiAoZXh0cnVkZXIpCiAgeqFhJyBDCiMjICAgIGNvbXBvbmVudHMucHVzaF9iYWNrKGV4dHJ1ZGVyKTsKICAgIExvZy5pbmZvbG4oRigiRXh0cnVkZXIgaW5pdGlhbGl6ZWQuIFZGRDolZCwgSW8aTCVkIE1COmRwV61lcgogICAgICAgICAgICAgPC9DgmkKICAgIExvZy5lcnJvcmxuKEYoIkV4dHJ1ZGVyIGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKSk7CiAgfQojZW5kaWYKYGBgCg=="
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T13:23:11.195Z",
|
||||
"sessionId": "1748956946155",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T13:23:11.198Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/extruder.md",
|
||||
"content": "LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIEV4dHJ1ZGVyCgoqKlBhdGgqKiA6IFtzcmMvY29tcG9uZW50cy9FeHRydWRlci5oXSguLi9zcmMvY29tcG9uZW50cy9FeHRydWRlci5oKQoKSW5kdXN0cmlhbCBleHRydWRlciBjb250cm9sIGNvbXBvbmVudCBmb3IgbWFuYWdpbmcgVkZELWRyaXZlbiBleHRydXNpb24gb3BlcmF0aW9ucy4gUHJvdmlkZXMgbWFudWFsIGFuZCBhdXRvbWF0aWMgZXh0cnVzaW9uIG1vZGVzIHdpdGggam9zdGljayBjb250cm9sLCBzcGVlZCBhZGp1c3RtZW50LCBhbmQgamFtIGRldGVjdGlvbi4KCiMjIFJlcXVpcmVtZW50cwoKKipEZXBlbmRlbmNpZXMqKjoKLSBTQUtPX1ZGRCBjb21wb25lbnQKLSAzUG9zQW5hbG9nIGNvbXBvbmVudCAob3B0aW9uYWwpCi0gUE9UIGNvbXBvbmVudCAob3B0aW9uYWwpCgojIyBGZWF0dXJlcwoKLSAqKk11bHRpLW1vZGUgT3BlcmF0aW9uKio6IE1hbnVhbCBhbmQgYXV0b21hdGljIGV4dHJ1c2lvbiBtb2RlcwotICoqVmFyaWFibGUgU3BlZWQqKjogQ29uZmlndXJhYmxlIHNwZWVkIHByZXNldHMgYW5kIFBPVC1iYXNlZCBmaW5lIHR1bmluZwogIC0gU0xPVzogMTAuMDBIegogIC0gTUVESVVNOiAyNS4wMEh6CiAgLSBGQVNUOiA1MC4wMEh6IChmb3IgZnV0dXJlIHVzZSkKLSAqKkphbSBEZXRlY3Rpb24qKjogVG9ycXVlLWJhc2VkIGphbW1pbmcgZGV0ZWN0aW9uIHdpdGggYXV0b21hdGljIHN0b3AKLSAqKk92ZXJsb2FkIFByb3RlY3Rpb24qKjogQ29uZmlndXJhYmxlIHRvcnF1ZSB0aHJlc2hvbGRzCi0gKipTYWZldHkgVGltZW91dCo6IE1heGltdW0gcnVudGltZSBwcm90ZWN0aW9uICgxNS4wMHMpCi0gKipNb2RidXMgVENQIEludGVncmF0aW9uKio6IFJlbW90ZSBjb250cm9sIGFuZCBzdGF0dXMgbW9uaXRvcmluZwoKIyMgVG9kb3MKCi0gW10gRXh0ZW5kZWQgZmF1bHQgaGFuZGxpbmcKLSBbXSBSZXZlcnNlIGV4dHJ1c2lvbiBmZWF0dXJlCi0gW10gQWR2YW5jZWQgZGlhZ25vc3RpY3MgYW5kIHBlcmZvcm1hbmNlIG1ldHJpY3MKLSBbXSBIaXN0b3JpY2FsIG9wZXJhdGlvbiBsb2dnaW5nCgojIyBFeGFtcGxlCgpgYGBjcHAKI2lmZGVmIFBJTl9FWFRSVURFX1ZGRF9TSUdOQUwKICBzYWtvVmZkID0gbmV3IFNBS09fVkZEKAogICAgICB0aGlzLCAgICAgICAgICAgICAgICAgICAgLy8gb3duZXIKICAgICAgUElOX0VYVFJVREVFX1ZGRF9TSUdOQUwsICAgLy8gdmZkUGluCiAgICAgIElEX0VYVFJVREVFX1ZGRCwgICAgICAgICAgIC8vIGlkCiAgICAgIEVYVFJVREVSX1ZGRF9NQl9BRERSICAgICAgIC8vIG1vZGJ1c0FkZHJlc3MKICApOwojZW5kaWYKCiNpZmRlZiBQSU5fRVhUUlVERVJfSk9ZU1RJQ0sKICBleHRydWRlckpveXN0aWNrID0gbmV3IDNQb3NBbmFsb2coCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgICAgLy8gb3duZXIKICAgICAgUElOX0VYVFJVREVSX0pPWVNUSUNLLCAgICAgLy8gYW5hbG9nUGluCiAgICAgIElEX0VYVFJVREVSX0pPWVNUSUNLICAgICAgLy8gaWQKICApOwojZW5kaWYKCiNpZmRlZiBQSU5fRVhUUlVERVJfU1BFRUQKICBzcGVlZFBvdEV4dHJ1ZGVyID0gbmV3IFBPVF8oCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIFBJTl9FWFRSVURFX1NQRUVELCAgICAgICAvLyBhbmFsb2dQaW4KICAgICAgSURfRVhUUlVERVJfU1BFRURfUE9ULCAgICAgLy8gaWQKICAgICAgUE9UX0VYVFJVREVFX1NQRUVEX01CX0FERFIgLy8gbW9kYnVzQWRkcmVzcwogICk7CiNlbmRpZgoKI2lmZGVmIFBJTl9FWFRSVURFX09WRVJMT0FEUEFUCiAgb3ZlcmxvYWRQb3RFeHRydWRlciA9IG5ldyBQT1QoCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIFBJTl9FWFRSVURFX09WRVJMT0FEUEFULCAgICAvLyBhbmFsb2dQaW4KICAgICAgSURfRVhUUlVERVJfT1ZFUkxPQURfUE9ULCAgLy8gaWQKICAgICAgUE9UX0VYVFJVREV7X09WRVJMT0FEX01CX0FERFIgLy8gbW9kYnVzQWRkcmVzcwogICk7CiNlbmRpZgoKI2lmZGVmIFBJTl9FWFRSVURFX1ZGRF9TSUdOQUwKICBleHRydWRlciA9IG5ldyBFeHRydWRlcigKICAgICAgdGhpcywgICAgICAgICAgICAgICAvLyBvd25lcgogICAgICBzYWtvVmZkLCAgICAgICAgICAgICAvLyB2ZmQKICAgICAgZXh0cnVkZXJKb3lzdGljaywgICAgLy8gam95c3RpY2sgKG9wdGlvbmFsKQogICAgICBzcGVlZFBvdEV4dHJ1ZGVyLCAgICAvLyBzcGVlZFBvdCAob3B0aW9uYWwpCiAgICAgIG92ZXJsb2FkUG90RXh0cnVkZXIgIC8vIG92ZXJsb2FkUG90IChvcHRpb25hbCkKICApOwogIGlmIChleHRydWRlcikKICB7CiAgICBjb21wb25lbnRzLnB1c2hfYmFjayhleHRydWRlcik7CiAgICBMb2cuaW5mb2xuKEYoIkV4dHJ1ZGVyIGluaXRpYWxpemVkLiBWRkQ6JWQsIElEOiVkLCBNQjolZCIpLAogICAgICAgICAgICAgSURfRVhUUlVERVJfVkZELCBJRF9FWFRSVURFX0NPTVBPTkVOVCwKICAgICAgICAgICAgIEVYVFJVREVSX01CX0JBU0VfQUREUkVTUyk7CiAgfQogIGVsc2UKICB7CiAgICBMb2cuZXJyb3JsbihGKCJFeHRydWRlciBpbml0aWFsaXphdGlvbiBmYWlsZWQuIikpOwogIH0KI2VuZGlmCmBgYAo="
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T13:23:52.509Z",
|
||||
"sessionId": "1748956946155",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T13:23:52.511Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/mb-gpio.md",
|
||||
"content": "LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIE1CX0dQSU8KCioqUGF0aCoqIDogW3NyYy9jb21wb25lbnRzL0dQSU8uaF0oLi4vc3JjL2NvbXBvbmVudHMvR1BJTy5oKQoKTW9kYnVzLWVuYWJsZWQgR1BJTyBtYW5hZ2VtZW50IGNvbXBvbmVudCBmb3IgRVNQLTMyIGlpbi1kdXN0cmlhbCBhcHBsaWNhdGlvbnMuIE1hbmFnZXMgbXVsdGlwbGUgR1BJTyBwaW5zIHdpdGggY29uZmlndXJhYmxlIG1vZGVzLCB0aHJvdHRsaW5nLCBhbmQgTW9kYnVzLTQ4NSBpbnRlZ3JhdGlvbi4KCiMjIFJlcXVpcmVtZW50cwoKLSBFU1AtMzIgR1BJTyBwaW5zIChzZWUgRV9HUElPX1BpbiBlbnVtKQotIGNzdGRpbnQsIHZlY3RvciwgY2xpbWl0cwotIEFyZHVpbm9Mb2cKLSBDb21wb25lbnQgYmFzZSBjbGFzcwotIEJyaWRnZSBmb3Igc2VyaWFsIGNvbW11bmljYXRpb24KLSBlbnVtcyBmb3IgZXJyb3IgY29kZXMKLSBNb2RidXMgZGVwZW5kZW5jaWVzIChNb2RidXNUeXBlcywgTW9kYnVzVENQKQotIEFyZHVpbm9Kc29uIGZvciBjb25maWd1cmF0aW9uCgojIyBGZWF0dXJlcwoKLSBTdXBwb3J0cyBhbGwgRVNQLTMyIEdQSU8gcGlucyAoMC00OCwgZXhjbHVkaW5nIDIyLTM0KQotIE11bHRpcGxlIHBpbiBtb2RlczogSU5QVVQsIE9VVFBVVCwgSU5QVVRfUFVMTFVQLCBJTlBVVF9QVUxMRE9XTiwgT1VUUFVUX09QRU5fRFJBSU4sIEFOQUxPR19JTlBVVCwgVE9VQ0gKLSBNb2RidXMgaW50ZWdyYXRpb24gd2l0aCBmdWxsIHJlYWQvd3JpdGUgYWNjZXNzIGNvbnRyb2wKLSBPcGVyYXRpb24gdGhyb3R0bGluZyB3aXRoIGNvbmZpZ3VyYWJsZSBpbnRlcnZhbHMKLSBEdXBsaWNhdGUgdmFsdWUgY2FjaGluZyB0byByZWR1Y2UgdW5uZWNlc3NhcnkgSSvCtyBvcGVyYXRpb25zCi0gSlNPTi1iYXNlZCBkeW5hbWljIGNvbmZpZ3VyYXRpb24KLSBDb21wcmVoZW5zaXZlIGVycm9yIGhhbmRsaW5nIGFuZCBsb2dnaW5nCi0gU2VyaWFsIGNvbW1hbmQgaW50ZXJmYWNlIHZpYSBCcmlkZ2UKCiMjIFRvZG9zCgotIEltcGxlbWVudCBJTlBVVF9QVUxMRE9XTiBtb2RlCi0gQWRkIHBpbiBjYXBhYmlsaXR5IHZhbGlkYXRpb24gKGRlZmluZWQgYnV0IG5vdCBhY3RpdmUpCi0gSW1wbGVtZW50IHRvdWNoIHNlbnNvciBmdW5jdGlvbmFsaXR5Ci0gT3B0aW1pemUgbWVtb3J5IHVzYWdlIGZvciBsYXJnZSBwaW4gY29uZmlndXJhdGlvbnMKLSBBZGQgcGluIGNvbmZsaWN0IGRldGVjdGlvbgoKIyMgRXhhbXBsZQoKYGBgY3BwCiNpZmRlZiBQSU5fTEVEX0ZFRURCQUNLXzAKICAjZGVmaW5lIEdQSU9fUElOX0NPVU5UIDMKICAKICAvLyBDb25maWd1cmUgcGlucwogIHN0ZDo6dmVjdG9yPEdQSU9fUGluQ29uZmlnPiBncGlvQ29uZmlncyA9IHsKICAgIC8vIE91dHB1dCBMRUQgY29udHJvbAogICAgR1BJT19QaW5Db25maWcoRV9HUElPXzIsIEVfR1BJT19UWVBFX09VVFBVVCwgNTAwMCwgRl9GTl9DT0RFOjpGTl9XUklURV9TSU5HTEVfQ09JTCwKICAgICAgICAgICAgICAgICAgICAgICBNQl9BQ0NFU1NfV1JJVEVfT05MWSwgMTAwLCAiTEVEX0NvbnRyb2wiKSwKICAgIC8vIElucHV0IGJ1dHRvbgogICAgR1BJT19QaW5Db25maWcoRV9HUElPXzAsIEVfR1BJT19UWVBFX0lOUFVUX1BVTExVUCwgNTAwMSwgRl9GTl9DT0RFOjpGTl9SRUFEX0RJU0NSRVRFLAogICAgICAgICAgICAgICAgICAgICAgIE1CX0FDQ0VTU19SRUFEX09OTFksIDUwLCAiQnV0dG9uX0lucHV0IiksCiAgICAvLyBBbmFsb2cgaW5wdXQKICAgIEdQSU9fUGluQ29uZmlnKEVfR1BJT180LCBFX0dQSU9fVFlQRV9BTkFMT0dfSU5QVVQsIDUwMDIsIEVfRk5fQ09ERTo6Rk5fUkVBRF9JTlBVVF9SRUdJU1RFUiwKICAgICAgICAgICAgICAgICAgICAgICBNQl9BQ0NFU1NfUkVBRF9PTkxZLCAyMDAsICJBbmFsb2dfU2Vuc29yIikKICB9OwogIAogIG1iR1BJT18wID0gbmV3IE1CX0dQSU8oCiAgICAgIHRoaXMsICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIElEX01CX0dQSU9fMCwgICAgICAvLyBpZAogICAgICBncGlvQ29uZmlncyAgICAgICAgLy8gcGluIGNvbmZpZ3VyYXRpb25zCiAgKTsKCiAgaWYgKG1iR1BJT18wKQogIHsKICAgIGNvbXBvbmVudHMucHVzaF9iYWNrKG1iR1BJT18wKTsKICAgIExvZy5pbmZvbG4oRigiTUJfR1BJT18wIGluaXRpYWxpemVkLiBDb3VudDolZCwgSUQ6JWQiKSwKICAgICAgICAgICAgICAgR1BJT19QSU5fQ09VTlQsIElEX01CX0dQSU9fMCk7CiAgfQogIGVsc2UKICB7CiAgICBMb2cuZXJyb3JsbihGKCJNQl9HUElPXzAgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpKTsKICB9CiNlbmRpZgpgYGAKClNhbXBsZSBKU09OIGNvbmZpZ3VyYXRpb246CmBgYGpzb24KewogICJwaW5zIjogWwogICAgewogICAgICAicGluTnVtYmVyIjogMiwKICAgICAgInBpblR5cGUiOiAyCiAgICAgICJtb2RidXNBZGRyZXNzIjogNTAwMCwKICAgICAgIm1vZGJ1c0Z1bmN0aW9uIjogNSwKICAgICAgIm1vZGJ1c0FjY2VzcyI6IDIsCiAgICAgICJvcEludGVydmFsTXMiOiAxMDAsCiAgICAgICJuYW1lIjogIkxFRF9Db250cm9sIgogICAgfQogIF0KfQpgYGA="
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T13:24:48.330Z",
|
||||
"sessionId": "1748957039005",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T13:24:48.332Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/joystick.md",
|
||||
"content": "LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIEpveXN0aWNrCgoqKlBhdGgqKiA6IFtzcmMvY29tcG9uZW50cy9Kb3lzdGljay5oXSguLi9zcmMvY29tcG9uZW50cy9Kb3lzdGljay5oKQoKNC1kaXJlY3Rpb24gam95c3RpY2sgaW5wdXQgY29tcG9uZW50IHdpdGggbG9jYWwvcmVtb3RlIG1vZGUgc3VwcG9ydCBhbmQgTW9kYnVzIGludGVncmF0aW9uLiBQcm92aWRlcyBkZWJvdW5jZWQgaW5wdXQgcmVhZGluZyBhbmQgaG9sZGluZyB0aW1lIHRyYWNraW5nLgoKIyMgUmVxdWlyZW1lbnRzCgotIDQgZGlnaXRhbCBpbnB1dCBwaW5zIChVcCwgRG93biwgTGVmdCwgUmlnaHQpCi0gTW9kYnVzVENQIGRlcGVuZGVuY3kKLSBCcmlkZ2UgY29tcG9uZW50IGZvciBzZXJpYWwgY29tbXVuaWNhdGlvbgotIEFyZHVpbm9Mb2cgZm9yIGRlYnVnZ2luZwoKIyMgRmVhdHVyZXMKCi0gKipQb3NpdGlvbiBEZXRlY3Rpb24qKiA6IFVwLCBEb3duLCBMZWZ0LCBSaWdodCwgQ2VudGVyIHBvc2l0aW9ucwotICoqRGVib3VuY2luZyoqIDogQ29uZmlndXJhYmxlIGRlYm91bmNpbmcgd2l0aCAzLWNvdW50IGNvbmZpcm1hdGlvbgotICoqSG9sZGluZyBUaW1lKiogOiBUcmFja3MgaG93IGxvbmcgYSBwb3NpdGlvbiBpcyBoZWxkCi0gKipPcGVyYXRpbmcgTW9kZXMqKiA6CiAgLSBMT0NBTDogUmVhZHMgZnJvbSBwaHlzaWNhbCBwaW5zCiAgLSBSRU1PVEUgOiBVc2VzIG92ZXJyaWRlIHBvc2l0aW9uIHZpYSBNb2RidXMKLSAqKk1vZGJ1cyBJbnRlZ3JhdGlvbioqIDogVENQIHN1cHBvcnQgZm9yIHJlbW90ZSBjb250cm9sCi0gKipTZXJpYWwgQ29tbXVuaWNhdGlvbioqIDogQnJpZGdlIGludGVncmF0aW9uIGZvciBzZXJpYWwgcHJvdG9jb2xzCgojIyBUb2RvcwoKLSBJbXBsZW1lbnQgYW5hbG9nIGpveXN0aWNrIHN1cHBvcnQKLSBBZGQgY2FsaWJyYXRpb24gZmVhdHVyZXMKLSBPcHRpbWl6ZSBkZWJvdW5jZSBhbGdvcml0aG0gZm9yIGZhc3RlciByZXNwb25zZQotIEFkZCBjdXN0b20gZGVib3VuY2UgaW50ZXJ2YWwgY29uZmlndXJhdGlvbgoKIyMgRXhhbXBsZQoKYGBgY3BwCiNpZmRlZiBQSU5fSk9ZU1RJQ0tfVVAKICBqb3lzdGljayA9IG5ldyBKb3lzdGljayggICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgLy8gb3duZXIKICAgICAgUElOX0pPWVNUSUNLX1VQLCAgICAgICAgLy8gcGluVXAKICAgICAgUElOX0pPWVNUSUNLX0RPV04sICAgICAgLy8gcGluRG93bgogICAgICBQSU5fSk9ZU1RJQ0tfTEVGVCwgICAgICAvLyBwaW5MZWZ0CiAgICAgIFBJTl9KT1lTVElDS19SSUdIVCwgICAgIC8vIHBpblJpZ2h0CiAgICAgIEpPWVNUSUNLX01CX0FERFIgICAgICAgIC8vIG1vZGJ1c0FkZHJlc3MKICApOwogIGlmIChqb3lzdGlja0spCiAgewogICAgY29tcG9uZW50cy5wdXNoX2JhY2soam95c3RpY2spOwogICAgTG9nLmluZm9sbihGKCJKb3lzdGljayBpbml0aWFsaXplZC4gUGlucyBVL0QvTC9SOiVkLyVkLyVkLyVkLCBNQjoiZCIpLAogICAgICAgICAgICAgICBQSU5fSk9ZU1RJQ0tfVVAsIFBJTl9KT1lTVElDS19ET1dOLAogICAgICAgICAgICAgICBQSU5fSk9ZU1RJQ0tfTEVGVCwgUElOX0pPWVNUSUNLX1JJR0hULAogICAgICAgICAgICAgICBKT1lTVElDS19NQl9BRERSKTsKICB9CiAgZWxzZQogIHsKICAgIExvZy5lcnJvcmxuKEYoIkpveXN0aWNrIGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKSk7CiAgfQojZW5kaWYKYGBgCgoqKlVzYWdlIEV4YW1wbGUqKiA6CgpgYGBjcHAKLy8gR2V0IGN1cnJlbnQgam95c3RpY2sgcG9zaXRpb24KSm95c3RpY2s6OkVfUE9TSVRJT04gcG9zID0gam95c3RpY2stPmdldFBvc2l0aW9uKCk7Cgpzd2l0Y2gocG9zKQp7CiAgY2FzZSBKb3lzdGljayI6RV9QT1NJVElPTjo6VVA6CiAgICAvLyBIYW5kbGUgdXAgYWN0aW9uCiAgICBicmVhazsKICBjYXNlIEpveXN0aWNrOjpFX1BPU0lUSU9OOjpET1dOOgogICAgLy8gSGFuZGxlIGRvd24gYWN0aW9uCiAgICBicmVhazsKICAvLyAuLi4KfQoKLy8gU3dpdGNoIHRvIHJlbW90ZSBtb2RlCmpveXN0aWNrLT5zZXRNb2RlKEpveXN0aWNrOjpFX01PREU6OlJFTU9URSk7Cm1veXN0aWNrLT5zZXRPdmVycmlkZVBvc2l0aW9uKEpveXN0aWNrOjpFX1BPU0lUSU9OOjpVUCk7CmBgYA=="
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T13:25:37.032Z",
|
||||
"sessionId": "1748957095546",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T13:25:37.034Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/led-feedback.md",
|
||||
"content": "LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIExFREZlZWRiYWNrCgoqKlBhdGgqKiA6IFtzcmMvY29tcG9uZW50cy9MRURGZWVkYmFjay5oXShzcmMvY29tcG9uZW50cy9MRURGZWVkYmFjay5oKQoKQWRkcmVzc2FibGUgTmVvUGl4ZWwgTEVEIHN0cmlwIGZlZWRiYWNrIGNvbXBvbmVudCBmb3IgaW5kdXN0cmlhbCB2aXN1YWwgaW5kaWNhdGlvbi4gU3VwcG9ydHMgbXVsdGlwbGUgZGlzcGxheSBtb2RlcywgTW9kYnVzLTQ4NSBjb250cm9sLCBhbmQgcmVhbC10aW1lIHN0YXR1cyB2aXN1YWxpemF0aW9uLgoKIyMgUmVxdWlyZW1lbnRzCgojIyMgSGFyZHdhcmUKCi0gKipQaW4qKjogRGlnaXRhbCBvdXRwdXQgcGluIGZvciBOZW9QaXhlbCBkYXRhCi0gKipQb3dlcioqOiA1ViBmb3IgTkVPUElYRUwgc3RyaXAgKGV4dGVybmFsIHBvd2VyIHN1cHBseSByZWNvbW1lbmRlZCBmb3IgbGFyZ2VyIHN0cmlwcykKLSAqKkdyb3VuZCoqOiBDb21tb24gZ3JvdW5kIGJldHdlZW4gRVNQLTMyIGFuZCBOZW9QaXhlbCBzdHJpcAotICoqKERhdGEgTGluZSoqOiAzLjN2IGxvZ2ljIGxldmVsIChORU9QSVhFTCBhdXRvLXJlc2lzdGFudCB0byBsb3dlciB2b2x0YWdlKQoKIyMjIERlcGVuZGVuY2llcwoKLSBgQWRhZnJ1aXRfTmVvUGl4ZWxgCi0gYEFyZHVpbm9Mb2dgCi0gYENvbXBvbmVudGAgKGJhc2UgY2xhc3MpCi0gYG1vZGJ1cy9Nb2RidXNUQ1BgCi0gYGNvbmZpZy5oYCBhbmQgYGNvbmZpZy1tb2RidXMuaGAKCiMjIEZlYXR1cmVzCgojIyMgTEVEIE1vZGVzCgotICoqT0ZGKio6IEFsbCBMRURzIGVzdGluZ3VpZGFzCi0gKipGQURFX1JfQioqOiBGYWRlIGVudHJlIHJvalkgeSBhenVsIChzdWF2ZSB0cmFuc2ljacOzbikKLSAqKlJBTkdFKio6IE5pdmVsIDAtMTAwIGNvbW8gYmFycmEgZGUgcHJvZ3Jlc28KLSAqKlRSSV9DT0xPUl9CTElOSyoqOiBTZWNjaW9uZXMgZGUgdHJlcyBjb2xvcmVzIGNvbiBwYXJwYWRlbwoKIyMjIE1vZGJ1cyBJbnRlcmZhY2UKCi0gSG9sZGluZyByZWdpc3RlciAoUkVBRC9XUklURSkKLSBCYXNlIGFkZHJlc3MgY29uZmlndXJhYmxlCi0gUmVnaXN0ZXIgb2Zmc2V0czoKICAtIGBNT0RFID0gMGAgKExFRE1vZGUgZW51bSkKICAtIGBMRVZFTCA9IDFgIDAtMTAwIGZvciBSQU5HRSBtb2RlCgojIyMgQ29tcG9uZW50IExpZmVjeWNsZQoKLSBOZW9QaXhlbCBpbml0aWFsaXphdGlvbiBpbiBgc2V0dXAoKWAKLSBOb24tYmxvY2tpbmcgbG9vcCB3aXRoIHVwZGF0ZSB0aW1pbmcKLSBTZXJpYWwgYW5kIE1vZGJ1cyByZWdpc3RyYXRpb24gc3VwcG9ydAotIENvbXBvbmVudCBzdGF0ZSBub3RpZmljYXRpb24KCiMjIFRvZG9zCgotIFsgXSBTT0xJRF9DT0xPUiBtb2RlCi0gWyBdIFJBSU5CT1cgbW9kZSAoY3ljbGUgdGhyb3VnaCBzcGVjdHJ1bSkKLSBbIF0gQlJJR0hUTkVTUyBjb250cm9sIChNb2RidXMgcmVnaXN0ZXIpCi0gWyBdIEN1c3RvbWl6YWJsZSBGQURFX1JfQiBjb2xvcnMKLSBbIF0gSGlnaCBzcGVlZCBidWZmZXJlZCBhbmltYXRpb25zCi0gWyBdIEluZGl2aWR1YWwgcGl4ZWwgY29udHJvbCBtb2RlCi0gWyBdIFB1bHNlIGVmZmVjdCBtb2RlcwotIFsgXSBTdGF0dXMsIGVycm9yIGFuZCBoZWFydGJlYXQgbW9kZXMKCiMjIEV4YW1wbGUKCmBgYGMKI2lmZGVmIFBJTl9MRURfRkVFREJBQ0tfMAogIGxlZEZlZWRiYWNrXzAgPSBuZXcgTEVERmVlZGJhY2soCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAvLyBvd25lcgogICAgICBQSU5fTEVEX0ZFRURCQUNLXDA8ICAgIC8vIHBpbgogICAgICBMRURfUElYRUxfQ09VTlRfMCwgICAgIC8vIHBpeGVsQ291bnQKICAgICAgSURfTEVEX0ZFRURCQUNLX18sICAgICAvLyBpZAogICAgICBMRURfRkVFREJBQ0tfMF9NQl9BRERSIC8vIG1vZGJ1c0FkZHJlc3MKICApOwogIGlmIChsZWRGZWVkYmFja18wKQogIHsKICAgIGNvbXBvbmVudHMucHVzaF9iYWNrKGxlZEZlZWRiYWNrXzApOwogICAgTG9nLmluZm9sbihGKCJMRURGZWVkYmFja18wIGluaXRpYWxpemVkLiBQaW46JWQsIENvdW50OiVkLCBJRDolZCwgTUI6JWQiKSwKICAgICAgICAgICAgICAgUElOX0xFRF9GRUVEQkFDS18wLCBMRURfUElYRUxfQ09VTlRfMCwKICAgICAgICAgICAgICAgSURfTEVEX0ZFRURCQUNLX18sIExFRF9GRUVEQkFDS18wX01CX0FERFIpOwogIH0KICBlbHNlCiAgewogICAgTG9nLmVycm9ybG4oRigiTEVERmVlZGJhY2tfMCBpbml0aWFsaXphdGlvbiBmYWlsZWQuIikpOwogIH0KI2VuZGlmCmBgYAoKIyMjIE1vZGJ1cyBDb250cm9sCgpgYGBjCi8vIFNldCBtb2RlIHRvIEZBREVfUl9CCi8vIEFzc3VtZSBiYXNlIGFkZHJlc3MgaXMgMTAwMAptb2RidXNfaG9sZGluZ19yZWdpc3RlcnNbd3JpdGVdKDEwMDAsIDEpOwoKLy8gU2V0IG1vZGUgdG8gUkFOR0Ugd2l0aCA3NSUgbGV2ZWwKbW9kYnVzX2hvbGRpbmdfcmVnaXN0ZXJzW3dyaXRlXSgxMDAwLCAyKTsgLy8gUkFOR0UgbW9kZQptb2RidXNfaG9sZGluZ19yZWdpc3RlcnNbd3JpdGVdKDEwMDEsIDc1KTsgLy8gNzUlIGxldmVsCmBgYAo="
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T13:26:36.165Z",
|
||||
"sessionId": "1748957143095",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T13:26:36.167Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": "<parameter name=\"path\">docs/modbus-logic-engine.md",
|
||||
"content": "LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIE1vZGJ1cyBMb2dpYyBFbmdpbmUKCioqUGF0aCoqOiBbc3JjL2NvbXBvbmVudHMvTW9kYnVzTG9naWNFbmdpbmUuaF0oLi4vc3JjL2NvbXBvbmVudHMvTW9kYnVzTG9naWNFbmdpbmUuaCkKCkEgY29tcG9uZW50IHRoYXQgaW1wbGVtZW50cyBhIHJ1bGUtYmFzZWQgbG9naWMgZW5naW5lIGZvciBhdXRvbWF0aW9uLCBjb25maWd1cmFibGUgdmlhIE1vZGJ1cy00ODUuIEl0IGFsbG93cyBjcmVhdGluZyBjb25kaXRpb25hbCBydWxlcyB0aGF0IGNhbiByZWFkIGZyb20gYW5kIHdyaXRlIHRvIE1vZGJ1cyByZWdpc3RlcnMsIGNvaWxzLCBvciBjYWxsIGNvbXBvbmVudCBtZXRob2RzLgoKIyMgUmVxdWlyZW1lbnRzCgojIyMgRGVwZW5kZW5jaWVzCi0gYEVOQUJMRV9NQl9TQ1JJUFRgIGRlZmluZWQgaW4gY29uZmlnLmgKLSBgQ29tcG9uZW50YCBiYXNlIGNsYXNzCi0gYEFyZHVpbm9Mb2dgIGxpYnJhcnkKLSBgbW9kYnVzL01vZGJ1c1R5cGVzLmhgCi0gQWNjZXNzIHRvIGBQSEFwcGAgaW5zdGFuY2UKCiMjIyBDb25maWd1cmF0aW9uIENvbnN0YW50cwotIGBNQVhfTE9HSUNfUlVMRVNgIC0gTWF4aW11bSBudW1iZXIgb2YgcnVsZXMgKGRlZmF1bHQ6IDgpCi0gYExPR0lDX0VOR0lORV9SRUdJU1RFUlNfUEVSX1JVTEVgIC0gTnVtYmVyIG9mIHJlZ2lzdGVycyBwZXIgcnVsZSAoZGVmYXVsdDogMTMpCi0gYE1PREJVU19MT0dJQ19SVUxFU19TVEFSVGAgLSBTdGFydGluZyBNb2RidXMgYWRkcmVzcyAoZGVmYXVsdDogMTAwMCkKCiMjIEZlYXR1cmVzCgojIyMgUnVsZS1CYXNlZCBMb2dpYwotIDggY29uZmlndXJhYmxlIGxvZ2ljIHJ1bGVzIGJ5IGRlZmF1bHQKLSBFYWNoIHJ1bGUgb2NjdXBpZXMgMTMgY29uc2VjdXRpdmUgTW9kYnVzIHJlZ2lzdGVycwotIENvbmRpdGlvbmFsIGV2YWx1YXRpb24gd2l0aCBhcml0aG1ldGljIG9wZXJhdG9ycwotIDEwMG1zIGV2YWx1YXRpb24gY3ljbGUKCiMjIyBDb25kaXRpb24gRXZhbHVhdGlvbgotIFNvdXJjZSB0eXBlczogSG9sZGluZyByZWdpc3RlcnMsIElucHV0IHJlZ2lzdGVycywgQ29pbHMsIERpc2NyZXRlIGlucHV0cwotIE9wZXJhdG9yczogRXF1YWwsIE5vdCBFcXVhbCwgTGVzcywgTGVzcyBFcXVhbCwgR3JlYXRlciwgR3JlYXRlciBFcXVhbAotIENvbXBhcmlzb24gYWdhaW5zdCBjb25maWd1cmVkIHZhbHVlCgojIyMgQWN0aW9uIFR5cGVzCi0gKipXcml0ZSBDb2lsKio6IFNldCBjb2lsIHN0YXRlICgwLzEpCi0gKipXcml0ZSBIb2xkaW5nIFJlZ2lzdGVyKio6IFNldCByZWdpc3RlciB2YWx1ZQotICoqQ2FsbCBDb21wb25lbnQgTWV0aG9kKio6IEV4ZWN1dGUgcmVnaXN0ZXJlZCBjb21wb25lbnQgZnVuY3Rpb24KCiMjIyBSdWxlIFN0YXR1cyAmIERlYnVnZ2luZwotIExhc3Qgc3RhdHVzIGZvciBkZWJ1Z2dpbmcKLSBUcmlnZ2VyIGNvdW50IGFuZCB0aW1lc3RhbXAKLSBPcHRpb25hbCBkZWJ1ZyBhbmQgcmVjZWlwdCBsb2dnaW5nCi0gUGVyLXJ1bGUgZmxhZyBjb25maWd1cmF0aW9uCgojIyMgTWV0aG9kIFJlZ2lzdHJ5Ci0gUmVnaXN0ZXIgYW5kIGNhbGwgY29tcG9uZW50IG1ldGhvZHMKLSBDb21wb25lbnQgSUQgKyBNZXRob2QgSUQgYmFzZWQgYWRkcmVzc2luZwotIFN1cHBvcnQgZm9yIDIgcGFyYW1ldGVycyB3aXRoIHJldHVybiBjb2RlCgojIyBUb2RvcwotIERvY3VtZW50IHJlZ2lzdGVyIG1hcHBpbmcgZnVsbHkKLSBJbXBsZW1lbnQgcnVsZSBwcmlvcml0aXphdGlvbgotIEFkZCBydWxlIHZhbGlkYXRpb24gYXQgY29uZmlndXJhdGlvbiB0aW1lCi0gSW1wbGVtZW50IHBlcnNpc3RlbnQgY29uZmlndXJhdGlvbiBzdG9yYWdlCi0gQWRkIGNvbmRpdGlvbiBjaGFpbmluZy90aW1pbmcgYWR2YW5jZWQgZmVhdHVyZXMKCiMjIEV4YW1wbGUKCmBgYGNwcAojdGVyaWYgRU5BQkxFX01CX1NDUklQVAogIC8vIEluIGFwcGxpY2F0aW9uIHNldHVwCiAgTW9kYnVzTG9naWNFbmdpbmUqIG1vZGJ1c0xvZ2ljOyAKCiAgbW9kYnVzTG9naWMgPSBuZXcgTW9kYnVzTG9naWNFbmdpbmUodGhpcyk7CiAgaWYgKG1vZGJ1c0xvZ2ljKSoKICB7CiAgICBjb21wb25lbnRzLnB1c2hfYmFjayhtb2RidXNMb2dpYyk7CiAgICBMb2cuaW5mb2xuKEYoIk1vZGJ1c0xvZ2ljRW5naW5lIGluaXRpYWxpemVkLiIpKTsKICAgIAogICAgLy8gUmVnaXN0ZXIgYSBjYWxsYWJsZSBtZXRob2QKICAgIG1vZGJ1c0xvZ2ljLT5yZWdpc3Rlck1ldGhvZCgKICAgICAgSURfTEVEX0ZFRURCQUNLXzAsIC8vIGNvbXBvbmVudCBJRCAgICAgICAgCiAgICAgIDEsICAgICAgICAgICAgICAgICAgLy8gbWV0aG9kIElEIChtZXRob2QgIzEpCiAgICAgIFtdKHNob3J0IHBhcmFtMSwgc2hvcnQgcGFyYW0yKSAtPiBzaG9ydCB7CiAgICAgICAgLy8gRXhhbXBsZTogY2hhbmdlIEZGRkZGRjAwIDw+IFJSUkdHR0JCCiAgICAgICAgcmV0dXJuIDEwMDsgLy8gc3VjY2VzcyBjb2RlCiAgICAgIH0KICAgICk7CiAgfQogIGVsc2UKICB7CiAgICBMb2cuZXJyb3JsbihGKCJNb2RidXNMb2dpY0VuZ2luZSBpbml0aWFsaXphdGlvbiBmYWlsZWQuIikpOwogIH0KI2VuZGlmCmBgYAoKIyMjIFJ1bGUgQ29uZmlndXJhdGlvbiBFeGFtcGxlCgpSZWdpc3RlciBtYXBwaW5nIGZvciBSdWxlIDEgKGFkZHJlc3NlcyAxMDAwLTEwMTIpOgoKfCBPZmZzZXQgfCBBZGRyZXNzIHwgUHVycG9zZSB8IEV4YW1wbGUgVmFsdWUgfCBEZXNjcmlwdGlvbiB8CnwtLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tfAp8IDAgfCAxMDAwIHwgRU5BQkxFRCB8IDEgfCBSdWxlIGVuYWJsZWQgfAp8IDEgfCAxMDAxIHwgQ09ORF9TUkNfVFlQRSB8IDEgfCBIb2xkaW5nIHJlZ2lzdGVyIHwKfCAyIHwgMTAwMiB8IENPTkRfU1JDX0FERFIgfCAyMDAwIHwgTW9uaXRvcmVkIGFkZHJlc3MgfAp8IDMgfCAxMDAzIHwgQ09ORF9PUEVSQVRPUiB8IDQgfCBHcmVhdGVyIHRoYW4gfAp8IDQgfCAxMDA0IHwgQ09ORF9WQUxVRSB8IDEwMCB8IENvbXBhcmlzb24gdmFsdWUgfAp8IDUgfCAxMDA1IHwgQ09NTUFORF9UWVBFIHwgMyB8IFdyaXRlIHJlZ2lzdGVyIHwKfCA2IHwgMTAwNiB8IENPTU1BTkRfVEFSR0VUIHwgMzAwMCB8IFRhcmdldCBhZGRyZXNzIHwKfCA3IHwgMTAwNyB8IENPTU1BTkRfUEFSQU0xIHwgNTAwIHwgVmFsdWUgdG8gd3JpdGUgfAp8IDggfCAxMDA4IHwgQ09NTUFORF9QQVJBTTICICA1IHwgRXh0cmEgcGFyYW1ldGVyIHwKfCA5IHwgMTAwOSB8IEZMQUdTIHwgMyB8IERlYnVnICsgUmVjZWlwdCB8Cnwgd9IBMTACF8TgQ1VBTD1TVEFUVVMNfZo7CogTGFzdIFN0NGF0dXMgfGF8IDExIHwgMTAxMSB8IExBNQ2009UUklHR0VSX1RPICNZ7E9TBAV9vJIDWUcgDAZWVydBBTfZoTBmD2NgcXZlNWZpAqfAiaMkBhBMXBOXXYgCiw1UdkGccJgxSTMRjQ1JhOq7CiBUcmlnZ2VyBGNovW50I4AUKQ0KYXB7"
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T13:27:45.907Z",
|
||||
"sessionId": "1748957202302",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T13:27:45.909Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": "<parameter name=\"path\">docs/modbus-logic-engine.md</parameter><parameter name=\"content\">LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIE1vZGJ1cyBMb2dpYyBFbmdpbmUKCioqUGF0aCoqOiBbc3JjL2NvbXBvbmVudHMvTW9kYnVzTG9naWNFbmdpbmUuaF0oLi4vc3JjL2NvbXBvbmVudHMvTW9kYnVzTG9naWNFbmdpbmUuaCkKCkEgY29tcG9uZW50IHRoYXQgaW1wbGVtZW50cyBhIHJ1bGUtYmFzZWQgbG9naWMgZW5naW5lIGZvciBhdXRvbWF0aW9uLCBjb25maWd1cmFibGUgdmlhIE1vZGJ1cy00ODUuIEl0IGFsbG93cyBjcmVhdGluZyBjb25kaXRpb25hbCBydWxlcyB0aGF0IGNhbiByZWFkIGZyb20gYW5kIHdyaXRlIHRvIE1vZGJ1cyByZWdpc3RlcnMsIGNvaWxzLCBvciBjYWxsIGNvbXBvbmVudCBtZXRob2RzLgoKIyMgUmVxdWlyZW1lbnRzCgojIyMgRGVwZW5kZW5jaWVzCi0gYEVOQUJMRV9NQl9TQ1JJUFRgIGRlZmluZWQgaW4gY29uZmlnLmgKLSBgQ29tcG9uZW50YCBiYXNlIGNsYXNzCi0gYEFyZHVpbm9Mb2dgIGxpYnJhcnkKLSBgbW9kYnVzL01vZGJ1c1R5cGVzLmhgCi0gQWNjZXNzIHRvIGBQSEFwcGAgaW5zdGFuY2UKCiMjIyBDb25maWd1cmF0aW9uIENvbnN0YW50cwotIGBNQVhfTE9HSUNfUlVMRVNgIC0gTWF4aW11bSBudW1iZXIgb2YgcnVsZXMgKGRlZmF1bHQ6IDgpCi0gYExPR0lDX0VOR0lORV9SRUdJU1RFUlNfUEVSX1JVTEVgIC0gTnVtYmVyIG9mIHJlZ2lzdGVycyBwZXIgcnVsZSAoZGVmYXVsdDogMTMpCi0gYE1PREJVU19MT0dJQ19SVUxFU19TVEFSVGAgLSBTdGFydGluZyBNb2RidXMgYWRkcmVzcyAoZGVmYXVsdDogMTAwMCkKCiMjIEZlYXR1cmVzCgojIyMgUnVsZS1CYXNlZCBMb2dpYwotIDggY29uZmlndXJhYmxlIGxvZ2ljIHJ1bGVzIGJ5IGRlZmF1bHQKLSBFYWNoIHJ1bGUgb2NjdXBpZXMgMTMgY29uc2VjdXRpdmUgTW9kYnVzIHJlZ2lzdGVycwotIENvbmRpdGlvbmFsIGV2YWx1YXRpb24gd2l0aCBhcml0aG1ldGljIG9wZXJhdG9ycwotIDEwMG1zIGV2YWx1YXRpb24gY3ljbGUKCiMjIyBDb25kaXRpb24gRXZhbHVhdGlvbgotIFNvdXJjZSB0eXBlczogSG9sZGluZyByZWdpc3RlcnMsIElucHV0IHJlZ2lzdGVycywgQ29pbHMsIERpc2NyZXRlIGlucHV0cwotIE9wZXJhdG9yczogRXF1YWwsIE5vdCBFcXVhbCwgTGVzcywgTGVzcyBFcXVhbCwgR3JlYXRlciwgR3JlYXRlciBFcXVhbAotIENvbXBhcmlzb24gYWdhaW5zdCBjb25maWd1cmVkIHZhbHVlCgojIyMgQWN0aW9uIFR5cGVzCi0gKipXcml0ZSBDb2lsKio6IFNldCBjb2lsIHN0YXRlICgwLzEpCi0gKipXcml0ZSBIb2xkaW5nIFJlZ2lzdGVyKio6IFNldCByZWdpc3RlciB2YWx1ZQotICoqQ2FsbCBDb21wb25lbnQgTWV0aG9kKio6IEV4ZWN1dGUgcmVnaXN0ZXJlZCBjb21wb25lbnQgZnVuY3Rpb24KCiMjIyBSdWxlIFN0YXR1cyAmIERlYnVnZ2luZwotIExhc3Qgc3RhdHVzIGZvciBkZWJ1Z2dpbmcKLSBUcmlnZ2VyIGNvdW50IGFuZCB0aW1lc3RhbXAKLSBPcHRpb25hbCBkZWJ1ZyBhbmQgcmVjZWlwdCBsb2dnaW5nCi0gUGVyLXJ1bGUgZmxhZyBjb25maWd1cmF0aW9uCgojIyMgTWV0aG9kIFJlZ2lzdHJ5Ci0gUmVnaXN0ZXIgYW5kIGNhbGwgY29tcG9uZW50IG1ldGhvZHMKLSBDb21wb25lbnQgSUQgKyBNZXRob2QgSUQgYmFzZWQgYWRkcmVzc2luZwotIFN1cHBvcnQgZm9yIDIgcGFyYW1ldGVycyB3aXRoIHJldHVybiBjb2RlCgojIyBUb2RvcwotIERvY3VtZW50IHJlZ2lzdGVyIG1hcHBpbmcgZnVsbHkKLSBJbXBsZW1lbnQgcnVsZSBwcmlvcml0aXphdGlvbgotIEFkZCBydWxlIHZhbGlkYXRpb24gYXQgY29uZmlndXJhdGlvbiB0aW1lCi0gSW1wbGVtZW50IHBlcnNpc3RlbnQgY29uZmlndXJhdGlvbiBzdG9yYWdlCi0gQWRkIGNvbmRpdGlvbiBjaGFpbmluZy90aW1pbmcgYWR2YW5jZWQgZmVhdHVyZXMKCiMjIEV4YW1wbGUKCmBgYGNwcAojaWZkZWYgRU5BQkxFX01CX1NDUklQVAogIC8vIEluIGFwcGxpY2F0aW9uIHNldHVwCiAgTW9kYnVzTG9naWNFbmdpbmUqIG1vZGJ1c0xvZ2ljOwogIAogIG1vZGJ1c0xvZ2ljID0gbmV3IE1vZGJ1c0xvZ2ljRW5naW5lKHRoaXMpOwogIGlmIChtb2RidXNMb2dpYykKICB7CiAgICBjb21wb25lbnRzLnB1c2hfYmFjayhtb2RidXNMb2dpYyk7CiAgICBMb2cuaW5mb2xuKEYoIk1vZGJ1c0xvZ2ljRW5naW5lIGluaXRpYWxpemVkLiIpKTsKICAgIAogICAgLy8gUmVnaXN0ZXIgYSBjYWxsYWJsZSBtZXRob2QKICAgIG1vZGJ1c0xvZ2ljLT5yZWdpc3Rlck1ldGhvZCgKICAgICAgSURfTEVEX0ZFRURCQUNLXzAsIC8vIGNvbXBvbmVudCBJRAogICAgICAxLCAgICAgICAgICAgICAgICAgIC8vIG1ldGhvZCBJRCAobWV0aG9kICMxKQogICAgICBbXShzaG9ydCBwYXJhbTEsIHNob3J0IHBhcmFtMikgLT4gc2hvcnQgewogICAgICAgIC8vIEV4YW1wbGU6IGNoYW5nZSBGRkZGRkYwMCA8PiBSUlJHR0dCQgogICAgICAgIHJldHVybiAxMDA7IC8vIHN1Y2Nlc3MgY29kZQogICAgICB9CiAgICApOwogIH0KICBlbHNlCiAgewogICAgTG9nLmVycm9ybG4oRigiTW9kYnVzTG9naWNFbmdpbmUgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpKTsKICB9CiNlbmRpZgpgYGAKCiMjIyBSdWxlIENvbmZpZ3VyYXRpb24gRXhhbXBsZQoKUmVnaXN0ZXIgbWFwcGluZyBmb3IgUnVsZSAxIChhZGRyZXNzZXMgMTAwMC0xMDEyKToKCnwgT2Zmc2V0IHwgQWRkcmVzcyB8IFB1cnBvc2UgfCBFeGFtcGxlIFZhbHVlIHwgRGVzY3JpcHRpb24gfAp8LS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwKfCAwIHwgMTAwMCB8IEVOQUJMRUQgfCAxIHwgUnVsZSBlbmFibGVkIHwKfCAxIHwgMTAwMSB8IENPTkRfU1JDX1RZUEUgfCAxIHwgSG9sZGluZyByZWdpc3RlciB8CnwgMiB8IDEwMDIgfCBDT05EX1NSQ19BRERSIHW\n\n\nAgMDAwIHwgTW9uaXRvcmVkIGFkZHJlc3MgfAp8IDMgfCAxMDAzIHwgQ09ORF9PUEVSQVRPUiB8IDQgfCBHcmVhdGVyIHRoYW4gfAp8IDQgfCAxMDA0IHwgQ09ORF9WQUxVRSB8IDEwMCB8IENvbXBhcmlzb24gdmFsdWUgfAp8IDUgfCAxMDA1IHwgQ09NTUFORF9UWVBFIHwgMyB8IFdyaXRlIHJlZ2lzdGVyIHwKfCA2IHwgMTAwNiB8IENPTU1BTkRfVEFSR0VUIHwgMzAwMCB8IFRhcmdldCBhZGRyZXNzIHwKfCA3IHwgMTAwNyB8IENPTU1BTkRfUEFSQU0xIHwgNTAwIHwgVmFsdWUgdG8gd3JpdGUgfAp8IDggfCAxMDA4IHwgQ09NTUFORF9QQVJBTTICCA1IHwgRXh0cmEgcGFyYW1ldGVyIHwKfCA5IHwgMTAwOSB8IEZMQUdTIHwgMyB8IERlYnVnICsgUmVjZWlwdCB8Cnwga3HDHwgxMDEwIHwgTEFTVF9TVEFUVVMgfCAwIHwgTGFzdCBzdGF0dXMgfAp8IDExIHwgMTAxMSB8IExBU1RfVFJJR0dFUl9UUyB8IDEyMzQ1IHwgVHJpZ2dlciB0aW1lc3RhbXAgfAp8IDEyIHwgMTAxMiB8IFRSSUDHR0VSX0NPVU5UIHwgNSB8IFRyaWdnZXIgY291bnQgfAo="
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T13:28:49.035Z",
|
||||
"sessionId": "1748957202302",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T13:28:49.038Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "remove_file",
|
||||
"arguments": {
|
||||
"path": "docs/modbus-logic-engine.md"
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T13:28:53.020Z",
|
||||
"sessionId": "1748957202302",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T13:28:53.022Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": "<parameter name=\"path\">docs/modbus-logic-engine.md</parameter><parameter name=\"content\">LS0tCnJldmlzaW9uOiBpbml0aWFsIGRvY3VtZW50YXRpb24KLS0tCgojIE1vZGJ1cyBMb2dpYyBFbmdpbmUKCioqUGF0aCoqOiBbc3JjL2NvbXBvbmVudHMvTW9kYnVzTG9naWNFbmdpbmUuaF0oLi4vc3JjL2NvbXBvbmVudHMvTW9kYnVzTG9naWNFbmdpbmUuaCkKCkEgY29tcG9uZW50IHRoYXQgaW1wbGVtZW50cyBhIHJ1bGUtYmFzZWQgbG9naWMgZW5naW5lIGZvciBhdXRvbWF0aW9uLCBjb25maWd1cmFibGUgdmlhIE1vZGJ1cy00ODUuIEl0IGFsbG93cyBjcmVhdGluZyBjb25kaXRpb25hbCBydWxlcyB0aGF0IGNhbiByZWFkIGZyb20gYW5kIHdyaXRlIHRvIE1vZGJ1cyByZWdpc3RlcnMsIGNvaWxzLCBvciBjYWxsIGNvbXBvbmVudCBtZXRob2RzLgoKIyMgUmVxdWlyZW1lbnRzCgojIyMgRGVwZW5kZW5jaWVzCgotIGBFTkFCTEVfTUJfU0NSSVBUYCBkZWZpbmVkIGluIGNvbmZpZy5oCi0gYENvbXBvbmVudGAgYmFzZSBjbGFzcwotIGBBcmR1aW5vTG9nYCBsaWJyYXJ5Ci0gYG1vZGJ1cy9Nb2RidXNUeXBlcy5oYAotIEFjY2VzcyB0byBgUEhBcHBgIGluc3RhbmNlCgojIyMgQ29uZmlndXJhdGlvbiBDb25zdGFudHMKCi0gYE1BWF9MT0dJQ19SVUxFU2AgLSBNYXhpbXVtIG51bWJlciBvZiBydWxlcyAoZGVmYXVsdDogOCkKLSBgTE9HSUNfRU5HSU5FX1JFR0lTVEVSU19QRVJfUlVMRWAgLSBOdW1iZXIgb2YgcmVnaXN0ZXJzIHBlciBydWxlIChkZWZhdWx0OiAxMykKLSBgTU9EQlVTX0xPR0lDX1JVTEVTX1NUQVJUYCAtIFN0YXJ0aW5nIE1vZGJ1cyBhZGRyZXNzIChkZWZhdWx0OiAxMDAwKQoKIyMgRmVhdHVyZXMKCiMjIyBSdWxlLUJhc2VkIExvZ2ljCgotIDggY29uZmlndXJhYmxlIGxvZ2ljIHJ1bGVzIGJ5IGRlZmF1bHQKLSBFYWNoIHJ1bGUgb2NjdXBpZXMgMTMgY29uc2VjdXRpdmUgTW9kYnVzIHJlZ2lzdGVycwotIENvbmRpdGlvbmFsIGV2YWx1YXRpb24gd2l0aCBhcml0aG1ldGljIG9wZXJhdG9ycwotIDEwMG1zIGV2YWx1YXRpb24gY3ljbGUKCiMjIyBDb25kaXRpb24gRXZhbHVhdGlvbgoKLSBTb3VyY2UgdHlwZXM6IEhvbGRpbmcgcmVnaXN0ZXJzLCBJbnB1dCByZWdpc3RlcnMsIENvaWxzLCBEaXNjcmV0ZSBpbnB1dHMKLSBPcGVyYXRvcnM6IEVxdWFsLCBOb3QgRXF1YWwsIExlc3MsIExlc3MgRXF1YWwsIEdyZWF0ZXIsIEdyZWF0ZXIgRXF1YWYKLSBDB21wYXJpc29uIGFnYWluc3QgY29uZmlndXJlZCB2YWx1ZQoKIyMjIEFjdGlvbiBUeXBlcwoKLSAqKldyaXRlIENvaWwqKjogU2V0IGNvaWwgc3RhdGUgKDAvMSkKLSAiKldyaXRlIEhvbGRpbmcgUmVnaXN0ZXIqKjogU2V0IHJlZ2lzdGVyIHZhbHVlCi0gKipDYWxsIENvbXBvbmVudCBNZXRob2QqKjogRXhlY3V0ZSByZWdpc3RlcmVkIGNvbXBvbmVudCBmdW5jdGlvbgoKIyMjIFJ1bGUgU3RhdHVzICYgRGVidWdnaW5nCgotIExhc3Qgc3RhdHVzIGZvciBkZWJ1Z2dpbmcKLSBUcmlnZ2VyIGNvdW50IGFuZCB0aW1lc3RhbXAKLSBPcHRpb25hbCBkZWJ1ZyBhbmQgcmVjZWlwdCBsb2dnaW5nCi0gUGVyLXJ1bGUgZmxhZyBjb25maWd1cmF0aW9uCgojIyMgTWV0aG9kIFJlZ2lzdHJ5CgotIFJlZ2lzdGVyIGFuZCBjYWxsIGNvbXBvbmVudCBtZXRob2RzCi0gQ29tcG9uZW50IElEICsgTWV0aG9kIElEIGJhc2VkIGFkZHJlc3NpbmcKLSBTdXBwb3J0IGZvciAyIHBhcmFtZXRlcnMgd2l0aCByZXR1cm4gY29kZQoKIyMgVG9kb3MKCi0gRG9jdW1lbnQgcmVnaXN0ZXIgbWFwcGluZyBmdWxseQotIEltcGxlbWVudCBydWxlIHByaW9yaXRpemF0aW9uCi0gQWRkIHJ1bGUgdmFsaWRhdGlvbiBhdCBjb25maWd1cmF0aW9uIHRpbWUKLSBJbXBsZW1lbnQgcGVyc2lzdGVudCBjb25maWd1cmF0aW9uIHN0b3JhZ2UKLSBBZGQgY29uZGl0aW9uIGNoYWluaW5nL3RpbWluZyBhZHZhbmNlZCBmZWF0dXJlcwoKIyMgRXhhbXBsZQoKYGBgY3BwCiNpZmRlZiBFTkFCTEVfTUJfU0NSSVBUCiAgLy8gSW4gYXBwbGljYXRpb24gc2V0dXAKICBNb2RidXNMb2dpY0VuZ2luZSogbW9kYnVzTG9naWM7CiAgCiAgbW9kYnVzTG9naWMgPSBuZXcgTW9kYnVzTG9naWNFbmdpbmUodGhpcyk7CiAgaWYgKG1vZGJ1c0xvZ2ljKQogIHsKICAgIGNvbXBvbmVudHMucHVzaF9iYWNrKG1vZGJ1c0xvZ2ljKTsKICAgIExvZy5pbmZvbG4oRighIk1vZGJ1c0xvZ2ljRW5naW5lIGluaXRpYWxpemVkLiIpKTsKICAgIAogICAgLy8gUmVnaXN0ZXIgYSBjYWxsYWJsZSBtZXRob2QKICAgIG1vZGJ1c0xvZ2ljLT5yZWdpc3Rlck1ldGhvZCgKICAgICAgSURfTEVEX0ZFRURCQUNLXzAsIC8vIGNvbXBvbmVudCBJRAogICAgICAxLCAgICAgICAgICAgICAgICAgIC8vIG1ldGhvZCBJRCAobWV0aG9kICMxKQogICAgICBbXShzaG9ydCBwYXJhbTEsIHNob3J0IHBhcmFtMikgLT4gc2hvcnQgewogICAgICAgIC8vIEV4YW1wbGU6IGNoYW5nZSBGRkZGRkYwMCA8PiBSUlJHR0dCQgogICAgICAgIHJldHVybiAxMDA7IC8vIHN1Y2Nlc3MgY29kZQogICAgICB9CiAgICApOwogIH0KICBlbHNlCiAge, KICAgIExvZy5lcnJvcmxuKEYhIk1vZGJ1c0xvZ2ljRW5naW5lIGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKSk7CiAgfQojZW5kaWYKYGBgCgojIyMgUnVsZSBDb25maWd1cmF0aW9uIEV4YW1wbGUKClJlZ2lzdGVyIG1hcHBpbmcgZm9yIFJ1bGUe1MQIUiGFkZHJlc3NlcyAxMDAwLTEwMTIpOgoKfCBPZmZzZXQgfCBBZGRyZXNzIHwgUHVycG9zZSB8IEV4YWaA1bGUgVmFsdWUgfCBEZXNjcmlwdGlvbiB8Cnx8LS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tC3wgMCB8IDEwMDAgfCBFTkFCTEVEIHwgMSB8IFJ1bGUgZW5hYmxlZCB8CnwgMSB8IDEwMDEgfCBDT05EX1NSQ19UWVBFIHwgMSB8IEhvbEBpbmcgcmVnaXN0ZXIgfAp8IDIgfCAxMDAyIHwgQ09ORF9TKEMfQUREUiB8IDIwMDAgfCBNb25pdG9yZWQgYWRkcmVzcCB8CnwgzMzAHwgxMDAzIHwgQ09ORF9PUEVSQVRPUiB8IDQgfCBHcmVhdGVyFBhYW4gfAp8IDQgfCAxMDA0IHwgQ09ORF9WQUxVRSB8IDEwMCB8IENvbXBhcmlzb24gdmFsdWUgfAp8IDUh+LxMDZwAINWExdZCBDT01NQOiDqMEVfRSIIZaEHwNgwWApzaAcQdzCkZyB08Z7MxKCMtEXJlZ2lzdGVyIHwKfMAAGcRg10GTZwKfCBDT01NQU5EGcF0RCtFVOSd80QMzZAHwgFJoaXN0ZXIgfApJCTGFkZHJlc3MgfAp8IDcgfCAxMDA3IHwgQ09NTUFORF9QQVJBTTICQ1MQGVsA1Io7CIVZhbHVlIHRvIHdyaXRlIHwKfCA4IHWAAEMDiGZjzAQQkNPTU1BTkRfUEFSQU0yIHcUQAGY1wgRXh0cmEgcGFyYW1ldGVyIHwGfCA5IHwgMTo4QTl9QMHYYQCAG1TRwFV8Mw3J6XFIRGl7H1DIA1MIEZlY2VpcHQgfAp8MYEqwDkQgA8QFSiwgBgaOaEYHSO7I1VfU1RBVFxeU|TrEcAgYIBZYQ3EFHQTzRDQ/FU9kYXR1cyB8CnwgMTEgfCAxMDExIHwgX0VEHgATFMRfVFJJR0xdRT7cP1SGNYhYzMjM0NSAV9HIFRyaQdnasZXIgdGltZXN0YW1yWmWfAqhTEACaBMn9ODfKHMDRFRZGSRW9zzANpTZNUlQGZEJGT2Y1TP1VOEIQNH7Ew1vgKKHUQ2ZyH8rApnZ2VyYyBUNa3VOBR5="
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T13:30:02.510Z",
|
||||
"sessionId": "1748957202302",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T13:30:02.513Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/GPIO.md",
|
||||
"content": "LS0tCnRpdGxlOiBHUElPIENvbXBvbmVudApkZXNjcmlwdGlvbjogRG9jdW1lbnRhdGlvbiBmb3IgdGhlIE1CX0dQSU8gY29tcG9uZW50LCB3aGljaCBtYW5hZ2VzIGEgZ3JvdXAgb2YgR1BJTyBwaW5zIHdpdGggTW9kYnVzIGludGVyZmFjZQprZXl3b3JkczogRVNQLTMyLCBHUElPLCBNb2RidXMsIGluZHVzdHJpYWwsIGVtYmVkZGVkLCBDKysKLS0tCgojIyBHUElPCgoqKnBhdGgqKjogW3NyYy9jb21wb25lbnRzL0dQSU8uaF0oLi4vLi4vc3JjL2NvbXBvbmVudHMvR1BJTy5oKQoKKipyZXZpc2lvbiBoaXN0b3J5Kio6IGluaXRpYWwgZG9jdW1lbnRhdGlvbgoKVGhlIE1CX0dQSU8gY29tcG9uZW50IHByb3ZpZGVzIGNlbnRyYWxpemVkIG1hbmFnZW1lbnQgb2YgR1BJTyBwaW5zIHdpdGggTW9kYnVzIGludGVyZmFjZSBzdXBwb3J0LiBJdCBhbGxvd3MgY29uZmlndXJhdGlvbiBvZiBtdWx0aXBsZSBwaW5zIHdpdGggZGlmZmVyZW50IG1vZGVzIChpbnB1dCwgb3V0cHV0LCBhbmFsb2csIGV0Yy4pIGFuZCBtYXBzIHRoZW0gdG8gTW9kYnVzIHJlZ2lzdGVycyBmb3IgcmVtb3RlIGFjY2Vzcy4KCiMjIFJFUVVJUkVNRU5UUwoKLSBFU1AzMiBtaWNyb2NvbnRyb2xsZXIKLSBQbGF0Zm9ybUlPIGVudmlyb25tZW50Ci0gQXJkdWlubyBmcmFtZXdvcmsgKGZvciBHUElPIGZ1bmN0aW9ucykKLSBNb2RidXMtNDg1IGludGVyZmFjZQotIExvZ2dpbmcgbGlicmFyeSAoQXJkdWlub0xvZy5oKQotIE1vZGJ1cyBsaWJyYXJ5IChNb2RidXNUQ1AuaCkKLSBDb21wb25lbnQgc3lzdGVtIGRlcGVuZGVuY2llcwoKIyMgRkVBVFVSRVMKCi0gQ29uZmlndXJhYmxlIEdQSU8gcGlucyB3aXRoIG11bHRpcGxlIG1vZGVzOgogIC0gSW5wdXQKICAtIE91dHB1dAogIC0gSW5wdXQgd2l0aCBwdWxsdXAvcHVsbGRvd24KICAtIE91dHB1dCBvcGVuLWRyYWluCiAgLSBBbmFsb2cgaW5wdXQKICAtIFRvdWNoIGlucHV0Ci0gTW9kYnVzIGludGVyZmFjZSBzdXBwb3J0CiAgLSBSZWFkL1dyaXRlIG9wZXJhdGlvbnMKICAtIEFjY2VzcyBjb250cm9sIHBlciBwaW4KICAtIFRocm90dGxpbmcgdG8gcHJldmVudCBleGNlc3NpdmUgb3BlcmF0aW9ucwotIFJ1bnRpbWUgY29uZmlndXJhdGlvbiB2aWEgSlNPTgotIFBpbiBzdGF0ZSBjYWNoaW5nIHRvIGF2b2lkIHVubmVjZXNzYXJ5IG9wZXJhdGlvbnMKLSBCdWlsdC1pbiBsb2dnaW5nIGFuZCBkZWJ1Z2dpbmcKCiMjIFRPRE9TCgotIEFkZCBzdXBwb3J0IGZvciBpbnB1dCBwdWxsZG93biBtb2RlCi0gSW1wbGVtZW50IHRvdWNoIGlucHV0IGZ1bmN0aW9uYWxpdHkKLSBBZGQgbW9yZSBjb21wcmVoZW5zaXZlIGVycm9yIGhhbmRsaW5nCi0gSW1wbGVtZW50IGNhcGFiaWxpdHkgY2hlY2tzIGJhc2VkIG9uIEVTUDMyIHBpbiBjYXBhYmlsaXRpZXMKCiMjIEVYQU1QTEUKCiMjIyBHUElPIGNvbmZpZ3VyYXRpb24gZXhhbXBsZQoKYGBgY3BwCiNpZmRlZiBQSU5fTEVEX0ZFRURCQUNLXzAKICBsZWRGZWVkYmFja18wID0gbmV3IExFRGZlZWRiYWNrKAogICAgICB0aGlzLCAgICAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIFBJTl9MRURfRkVFREJBQ0tfMCwgICAgLy8gcGluCiAgICAgIExFRF9QSVhFTF9DT1VOVF8wLCAgICAgLy8gcGl4ZWxDb3VudAogICAgICBJRF9MRURfRkVFREJBQ0tfMCwgICAgIC8vIGlkCiAgICAgIExFRF9GRUVEQkFDS18wX01CX0FERFJTIC8vIG1vZGJ1c0FkZHJlc3MKICApOwogIGlmIChsZWRGZWVkYmFja18wKQogIHsKICAgIGNvbXBvbmVudHMucHVzaF9iYWNrKGxlZEZlZWRiYWNrXzApOwogICAgTG9nLmluZm9sbihGKExFRGZlZWRiYWNrXzAgaW5pdGlhbGl6ZWQuIFBpbjolZCwgQ291bnQ6JWQsIElEOiVkLCBNQjolZCIpLAogICAgICAgICAgICAgICBQSU5fTEVEX0ZFRURCQUNLXzAsIExFRF9QSVhFTF9DT1VOVF8wLAogICAgICAgICAgICAgICBJRF9MRURfRkVFREJBQ0tfMCwgTEVEX0ZFRURCQUNLXzBfTUJfQUREUik7CiAgfQogIGVsc2UKICB7CiAgICBMb2cuZXJyb3JsbihGKExFRGZlZWRiYWNrXzAgaW5pdGlhbGl6YXRpb24gZmFpbGVkLikpOwogIH0KI2VuZGlmCmBgYAo="
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T14:07:25.471Z",
|
||||
"sessionId": "1748959593899",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T14:07:25.474Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/LEDFeedback.md",
|
||||
"content": "---\ntitle: LEDFeedback Component\ndescription: Documentation for the LEDFeedback component used in ESP-32, Platform.io, C17 for industrial applications with Modbus-485.\nkeywords: ESP-32, Platform.io, C17, Modbus-485, LEDFeedback, NeoPixel\n---\n\n## LEDFEEDBACK\n\n**Path**: [../src/components/LEDFeedback.h](../src/components/LEDFeedback.h)\n\n**Revision History**: Initial documentation\n\nThis component controls an LED strip (NeoPixel) with various modes like fade, range display, and tri-color blink. It integrates with Modbus for industrial control.\n\n## REQUIREMENTS\n\n- **Pins**: Data pin for NeoPixel (configurable via `PIN_LED_FEEDBACK`).\n- **Dependencies**:\n - `Adafruit_NeoPixel` library for LED control.\n - ModbusTCP library for communication.\n - `config.h` and `config-modbus.h` for configurations.\n\n## FEATURES\n\n- Multiple LED modes (OFF, Fade Red-Blue, Range display, Tri-Color Blink).\n- Modbus integration for remote control and monitoring.\n- Configurable LED strip parameters (pin, pixel count, Modbus address).\n\n## TODOS\n\n- Add more LED modes (e.g., SOLID_COLOR, RAINBOW).\n- Implement brightness control via Modbus.\n- Enhance error handling in Modbus communication.\n\n## EXAMPLE\n\n```cpp\n#ifdef PIN_LED_FEEDBACK_0\n ledFeedback_0 = new LEDFeedback(\n this, // owner\n PIN_LED_FEEDBACK_0, // pin\n LED_PIXEL_COUNT_0, // pixelCount\n ID_LED_FEEDBACK_0, // id\n LED_FEEDBACK_0_MB_ADDR // modbusAddress\n );\n if (ledFeedback_0)\n {\n components.push_back(ledFeedback_0);\n Log.infoln(F(\"LEDFeedback_0 initialized. Pin:%d, Count:%d, ID:%d, MB:%d\"),\n PIN_LED_FEEDBACK_0, LED_PIXEL_COUNT_0,\n ID_LED_FEEDBACK_0, LED_FEEDBACK_0_MB_ADDR);\n }\n else\n {\n Log.errorln(F(\"LEDFeedback_0 initialization failed.\"));\n }\n#endif\n```"
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T14:08:05.532Z",
|
||||
"sessionId": "1748959668966",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T14:08:05.535Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/component-name.md",
|
||||
"content": "---\ntitle: \"Component Name\"\ndescription: \"Documentation for the OmronE5 component used in an ESP-32, Platform.io, C17 industrial application with Modbus-485.\"\nkeywords: [\"ESP-32\", \"Platform.io\", \"C17\", \"Modbus-485\", \"OmronE5\", \"industrial\"]\n---\n\n## OMROM E5\n\n**Path**: [../../src/components/OmronE5.h](../../src/components/OmronE5.h)\n\n**Revision History**: Initial documentation\n\nThis component is designed for interfacing with the Omron E5 temperature controller via Modbus-RTU (RS-485). It provides functionalities for reading and writing registers, managing heating and cooling states, and tracking statistics when enabled.\n\n## REQUIREMENTS\n\n- **Pins**: Requires RS-485 communication pins (configured in `config.h`).\n- **Dependencies**:\n - ArduinoLog\n - ModbusRTU library\n - Component base class\n\n## FEATURES\n\n- Modbus-RTU communication support.\n- Configurable read intervals for Modbus blocks.\n- Support for conditional compilation (e.g., `ENABLE_TRUTH_COLLECTOR`, `ENABLE_COOLING`).\n- Getters and setters for process values (PV), setpoints (SP), and status registers.\n- Statistics tracking (e.g., mean error, heat rate) when enabled.\n\n## TODOS\n\n- Add detailed examples for Modbus-RTU configuration.\n- Implement unit tests for Modbus communication.\n- Validate cooling functionality when `ENABLE_COOLING` is active.\n\n## EXAMPLE\n\nBelow is an example of how to initialize and use the `OmronE5` component:\n\n```cpp\n#include \"components/OmronE5.h\"\n\n#ifdef ENABLE_RS485\nOmronE5 tempController(\n this, // owner\n 1, // slaveId\n 300 // readInterval (ms)\n);\n\nshort result = tempController.setup();\nif (result != 0) {\n Log.errorln(F(\"Failed to setup OmronE5\"));\n}\n\n// In the main loop:\ntempController.loop();\n\nuint16_t pv;\nif (tempController.getPV(pv)) {\n Log.infoln(F(\"Current PV: %d\"), pv);\n}\n#endif\n```\n"
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T14:09:07.566Z",
|
||||
"sessionId": "1748959704039",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T14:09:07.568Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": "{\"file\":{\"path\":\"./docs/omron-e5-types.md\",\"content\":\"LS0tCnRpdGxlOiAiT21yb24gRTUgVHlwZXMiCmRlc2NyaXB0aW9uOiAiRG9jdW1lbnRhdGlvbiBmb3IgT21yb24gRTUgTW9kYnVzIHJlZ2lzdGVycyBhbmQgdHlwZXMgdXNlZCBpbiB0aGUgZmlybXdhcmUuIgprZXl3b3JkczogWyJNb2RidXMiLCAiT21yb24gRTUiLCAiRVNQLTMyIiwgIkluZHVzdHJpYWwiLCAiQzE3Il0KLS0tCgojIyBPTVJPTiBFNSBUWVBFUwoK**wYXRoIjogWy4uLy4uL3NyYy9jb21wb25lbnRzL09tcm9uRTdUeXBlcy5oXShbLi4vLi4vc3JjL2NvbXBvbmVudHMvT21yb25FN1R5cGVzLmhdKQoKKipSZXYgaXNpb24gSGlzdG9yeSoqPyBJbml0aWFsIGRvY3VtZW50YXRpb24KCkl0IGZpbmFsREVEIGRlZXBseSBudSAgdGhlIE1vZGJ1cyByZWdzdGVycywgc3RhdHVzIGJpdHMsIGNtbWFuZHMswmFuZCBlcnJvciBjb2RlcyBBVCBARW9SnSBpbmR1c3RyaWFsIGNvbnRyb2xsZXIuICBTbW9yYXRvcnMgYW5kIGVudW1zIGFyZSBwcm92aWRlZCBmb3JIEU5URVJBR1QnHCB3aWxBIGRldmljZSdzIE1vZGJ1cyBpbnRlcmZhY2UuCgojIyBSRVFVSVJFTUVOVFMKLSBI7TIdCB3YXJFOkVTUC0zqG81IGNvYXT0YmxlKGlkdXN0cmlhbCBuY29ZHJvbGVyLgogICoqSxBWGUgY2llc25gZXMqKjQKICAgIC0gTW9kYnVzLTQ4NSBjb21tYR5pY2F0aW9uIGxpYnJhcnkuCiAgICAtIFBsYXRmb9229pb8gKEMxNyBjb21wbGlhbmNlKS4KLSBQa",
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T14:10:07.732Z",
|
||||
"sessionId": "1748959772821",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T14:10:07.734Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/Plunger.md",
|
||||
"content": "LS0tCnRpdGxlOiBQbHVuZ2VyIENvbXBvbmVudApkZXNjcmlwdGlvbjogQSBjb21wb25lbnQgZm9yIGNvbnRyb2xsaW5nIHBsdW5nZXIgbW90aW9uIHVzaW5nIE1vZGJ1cy00ODUsIFNBS08gVkZEcywgYW5kIGpveXN0aWNrIGlucHV0cy4ga2V5d29yZHM6IFBsdW5nZXIsIEVTVC0zMiwgUGxhdGZvcm0uaW8sIE1vZGJ1cy00ODUsIFNBS08gVkZELCBJbmR1c3RyaWFsIFNvZnR3YXJlCi0tLQoKIyBQTFVOR0VSCgogICAgCn5+fgptYXJrZG93bgogICAgCUhlYWRlciBpbmZvcm1hdGlvbiBmcm9tICoqUEJfQ09NSVQqKgogICAgClJldmlzaW9uIEhpc3Rvcnk6IGluaXRpYWwgZG9jdW1lbnRhdGlvbgp7e3sgL3NyYy9jb21wb25lbnRzL1BsdW5nZXIuaCB9fX0Kfn5+CiAKT3ZlcnZpZXc6IFRoZSBQbHVuZ2VyIGNvbXBvbmVudCBwcm92aWRlcyBjb250cm9sIG9mIHBsdW5nZXIgbW90aW9uIHVzaW5nIGEgU0FLTyBWRkQsIGpveXN0aWNrLCBhbmQgc3BlZWQvdG9ycXVlIHBvdGVudGlvbWV0ZXJzLiBJdCBzdXBwb3J0cyBtYW51YWwgYW5kIGF1dG9tYXRlZCBvcGVyYXRpb25zLCBqYW0gZGV0ZWN0aW9uLCBhbmQgTW9kYnVzIFRDUC9SU0Q0ODUgY29tbXVuaWNhdGlvbi4KCiMjIFJFUVVJUkVNRU5UUwoKLSBQaW5zOgogIC0gQ29ubmVjdGVkIHRvIGEgU0FLTyBWRkQgKFNlcmlhbCBvciBNb2RidXMpCiAgLSBKb3lzdGljayBpbnB1dCAoQUREIGNoYW5uZWxzKQogIC0gU3BlZWQgYW5kIFRvcnF1ZSBQb3RlbnRpb21ldGVycwogIC0gT3B0aW9uYWw6IExFRCBmZWVkYmFjayBmb3IgdmlzdWFsIHN0YXR1cwogIAotIERlcGVuZGVuY2llczoKICAtIGBgYENvbXBvbmVudC5oYGBgCiAgLSBgYGBNb2RidXMvTW9kYnVzVENQLmhgYAogIC0gYGAgU0FLT19WRkQuaGBgCiAgLSBgYCBKb3lzdGljay5oYGBgCiAgLSBgYCBQT1QuaGBgCiAgLSBgYCBQbHVuZ2VyU2V0dGluZ3MuaGBgCiAgLSBgYCBUaWNrZXIuaGBgCiAgLSBgYCA8QXJkdWlub0xvZy5oPmBgYAogIC0gYGAgPEFyZHVpbm9Kc29uLmg+YGBgCgojIyBGZWF0dXJlcwoKLSBTdXBwb3J0cyBtYW51YWwgYW5kIGF1dG9tYXRlZCBwbHVuZ2luZy9ob21pbmcKLSBTcGVlZCBhZGp1c3RtZW50IHZpYSBwb3RlbnRpb21ldGVyCi0gVG9ycXVlLWJhc2VkIGphbSBkZXRlY3Rpb24KLSBNb2RidXMgVENQL1JTRDQ4NSBpbnRlcmZhY2UgZm9yIHJlbW90ZSBjb250cm9sCi0gRW5hYmxlL2Rpc2FibGUgYXV0byBtb2RlCi0gUmVjb3JkL1JlcGxheSBmdW5jdGlvbmFsaXR5Ci0gRmlsbGluZyBtb2RlIGZvciBzeXN0ZW0gb3BlcmF0aW9ucwoKIyMgVE9ET1MKCi0gQWRkIG1vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBmb3IgZW51bXMgYW5kIHN0YXRlcwotIFZhbGlkYXRlIE1vZGJ1cyBUQ1AvUlNENDg1IG1hcHBpbmcKLSBUZXN0IHJlY29yZC9yZXBsYXkgZnVuY3Rpb25hbGl0eQotIEFkZCBleGFtcGxlIHVzYWdlIGNvZGUgZm9yIGJlZC4KCiMjIEVYQU1QTEUKCgpgYGAgYysrsP+/vyBQSVNfTkVHQVRJVkVfQlVUVE9OX0hPTERfRFVSQVRJT05fTVMgMjAwMCAvLyBUaW1lIGZvciBsaW9uIHRvIGJlIGhlbGQgZm9yIGF1dG8gbW9kZQojZGVmaW5lIFBJTl9Kb3lzdGlja19GRUVEQkFDS18wIDEyCiAKIApQTFVOR0VSIGNvbXBvbmVudCA9IG5ldyBQbHVuZ2VyKAogICAgdGhpcywgICAgICAgICAgICAgICAgICAvLyBvd25lcgogICAgU0FLT1dGRCwgICAgICAgICAgICAvLyBWbnNmCiAgICBKb3lzdGljaywgICAgICAgICAvLyBKb3lzdGljawogICAgU0BLTyBWRksgLSAgICAgIC8vIE92ZXJyaWRpbmcgUG90CiAgICBGSU5BTl9TVVJGRQogICAgKTsKICAgaWYgKGR1bmdlbikKICAgIHsKICAgICAgICBjb21wb25lbnRzLnB1c2hfYmFjayhEdW5nZW4pOwogICAgICAgIExvZy5pbmZvbG4oRigiRHVuZ2VuX3RvIGluaXRpYWxpemVkLiBQaW58JWR8JGQlZCxJRCRkLCBNQiRkIiksCiAgICAgICAgICAgICAgICBKSksgUERQLCBGKSBNRCwgSBxKLCAhIT8gKG5ldy4uLi4pOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIExvZy5lcnJvcmxuKEYoIkR1bmdlbl9kbyBpbml0aWFsaXphdGlvbiBmYWlsZWQuIikpOwogICAgfQogICAgCiNgYGA="
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T14:11:23.692Z",
|
||||
"sessionId": "1748959836115",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T14:11:23.695Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/rest-server.md",
|
||||
"content": "IyMgUkVTVF9TRVJWRVIKCiogKipQYXRoKiogOiBbLi9zcmMvY29tcG9uZW50cy9SZXN0U2VydmVyLmhdKC4vc3JjL2NvbXBvbmVudHMvUmVzdFNlcnZlci5oKQoqICoqUmV2aXNpb24gaGlzdG9yeSoqIDogaW5pdGlhbCBkb2N1bWVudGF0aW9uCgpUaGlzIGNvbXBvbmVudCBpbXBsZW1lbnRzIGEgUkVTVGZ1bCBBUEkgc2VydmVyIHRoYXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBNb2RidXMgc3lzdGVtIGZvciBpbmR1c3RyaWFsIGFwcGxpY2F0aW9ucy4gSXQgc3VwcG9ydHMgd2ViIHNvY2tldCBjb21tdW5pY2F0aW9uIGZvciByZWFsLXRpbWUgdXBkYXRlcy4KCiMjIFJFUVVJUkVNRU5UUwoKLSBQaW5zOiBOb3QgYXBwbGljYWJsZSAobmV0d29yay1iYXNlZCkKLSBEZXBlbmRlbmNpZXM6CiAgLSBgRVNQQXN5bmNXZWJTZXJ2ZXJgCiAgLSBgQXN5bmNKc29uYAogIC0gYEFyZHVpbm9Kc29uYAogIC0gYEFyZHVpbm9Mb2dgCiAgLSBgQXN5bmNUQ1BgCiAgLSBgTW9kYnVzVkNQCgojIyBGRUFUVVJFUwoK-IFyZXN0ZnVsIGFwaSBzZXJ2ZXIgd2l0aCBzd2FnZ2VyIGdlbmVyYXRlZCBpbnRlcmZhY2UK-SBpbnRlZ3JhdGVkIHdpdGggTW9kYnVzVAotIHN1cHBvcnQgZm9yIENvaWxzLCBSZWdpc3RlcnMsIGFuZCBMb2dnaW5nIGRhdGEK-CB3ZWIgc29ja2V0IHN1cHBvcnQgZm9yIHJlYWwtdGltZSBjb21tdW5pY2F0aW9uCgotIEZlYXR1cmUgZmxhZ3M6IGBFTkFCTEVfV0VCU09DS0VUCgojIyBUT0RPUwoKLSBbIF0gQWRkIG1vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBmb3IgQVBJIGVuZHBvaW50cwoKLSBbIF0gVGVzdCB3ZWJzb2NrZXQgYnJvYWRjYXN0IGZ1bmN0aW9uYWxpdHkKCiMjIEVYQU1QTEUKCioqRXhhbXBsZSBDb2RlIFNuYXBzaG90KioKCmBgYGMKI2lmZGVmIFBJTl9MRURfRkVFREJBQ0tfMAogIGxlZEZlZWRiYWNrXzAgPSBuZXcgTEVERmVlZGJhY2soCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgLy8gb3duZXIKICAgICAgUElOX0xFRF9GRUVEQkFDS18wLCAgICAvLyBwaW4KICAgICAgTEVEX1BJWEVMX0NPVU5UXzAsICAgICAvLyBwaXhlbENvdW50CiAgICAgIElEX0xFRF9GRUVEQkFDS18wLCAgICAgLy8gaWQKICAgICAgTEVEX0ZFRURCQUNLXzBfTUJfQUREUiAvLyBtb2RidXNBZGRyZXNzCiAgKTsKICBpZiAobGVkRmVlZGJhY2tfMCkKICB7CiAgICBjb21wb25lbnRzLnB1c2hfYmFjayhsZWRGZWVkYmFja18wKTsKICAgIExvZy5pbmZvbG4oRigiTEVERmVlZGJhY2tfMCBpbml0aWFsaXplZC4gUGluOiVkLCBDb3VudDolZCwgSUQ6JWQsIE1COiVkIiksCiAgICAgICAgICAgICAgIFBJTl9MRURfRkVFREJBQ0tfMCwgTEVEX1BJWEVMX0NPVU5UXzAsCiAgICAgICAgICAgICAgIElEX0xFRF9GRUVEQkFDS18wLCBMRURfRkVFREJBQ0tfMF9NQl9BRERSKTsKICB9CiAgZWxzZQogIHsKICAgIExvZy5lcnJvcmxuKEYoIkxFRUZlZWRiYWNrXzAgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpKTsKICB9CiNlbmRpZgpgYGA="
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T14:14:26.046Z",
|
||||
"sessionId": "1748960036298",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T14:14:26.048Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/SAKO_VFD.md",
|
||||
"content": "---\ntitle: SAKO_VFD Component\ndescription: Documentation for the SAKO_VFD component used in ESP-32 Platform.io projects with Modbus-485.\nkeywords: ESP-32, Platform.io, C17, Modbus-485, VFD, component\n---\n\n# SAKO_VFD\n\n**Path**: [src/components/SAKO_VFD.h](./../src/components/SAKO_VFD.h)\n\n**Revision History**: initial documentation\n\nThis component provides an interface for controlling and monitoring a SAKO Variable Frequency Drive (VFD) over Modbus-485. It is designed for industrial applications and integrates with the ModbusRTU library for communication.\n\n## REQUIREMENTS\n\n- **Pins**: Requires Modbus-485 communication pins (configured in `config.h`).\n- **Dependencies**:\n - ArduinoLog\n - Component.h\n - ModbusRTU library\n - xstatistics.h\n\n## FEATURES\n\n- Support for Modbus RTU communication.\n- Real-time monitoring of VFD parameters (frequency, speed, current, power, torque, etc.).\n- Control functions for running, stopping, and reversing the VFD.\n- Fault detection and reset capabilities.\n- Retract state machine for automated control sequences.\n- Statistics tracking for operational parameters.\n\n## TODOS\n\n- Add more detailed documentation for internal methods.\n- Extend fault-handling capabilities.\n- Optimize Modbus register updates for performance.\n\n## EXAMPLE\n\nThe component can be initialized and used as follows:\n\n```cpp\n#ifdef ENABLE_RS485\n SAKO_VFD vfd(\n SLAVE_ID_VFD, // Slave ID\n SAKO_VFD_DEFAULT_READ_INTERVAL // Read interval\n );\n if (vfd.setup() == 0) {\n components.push_back(&vfd);\n Log.infoln(F(\"SAKO VFD initialized. Slave ID: %d\"), SLAVE_ID_VFD);\n } else {\n Log.errorln(F(\"SAKO VFD initialization failed.\"));\n }\n#endif\n```"
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T14:15:03.598Z",
|
||||
"sessionId": "1748960085013",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T14:15:03.600Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/Sako-Registers.md",
|
||||
"content": "---\ntitle: \"Sako-Registers\"\ndescription: \"Documentation for the Sako-Registers component, which defines Modbus-485 parameters for the Sako drive system.\"\nkeywords: [\"ESP-32\", \"Platform.io\", \"C17\", \"Modbus-485\", \"Sako-Registers\"]\n---\n\n## SAKO-REGISTERS\n\n**Path**: [src/components/Sako-Registers.h](./../src/components/Sako-Registers.h)\n\n**Revision History**: Initial documentation\n\nThis component defines an enumeration of Modbus-485 parameters for the Sako drive system. It includes parameters for motor control, frequency settings, input/output configurations, and system monitoring.\n\n## REQUIREMENTS\n\n- **Pins**: Modbus-485 communication interface (TX, RX, and enable pins).\n- **Dependencies**: \n - Modbus library for Platform.io.\n - No standard library dependencies (avoidance of std).\n\n## FEATURES\n\n- **Motor Control**: Defines parameters for motor control modes (e.g., sensorless, VF-Servo).\n- **Frequency Settings**: Includes parameters for frequency sources, limits, and offset adjustments.\n- **I/O Configuration**: Configures digital and analog input/output terminals.\n- **System Monitoring**: Provides parameters for LED display, fault outputs, and system status.\n\n## TODOS\n\n- Add examples for common parameter configurations.\n- Expand documentation for advanced parameter usage.\n\n## EXAMPLE\n\nBelow is an example of how to use the `E_SAKO_PARAM` enumeration to configure a parameter:\n\n```cpp\n#include \"Sako-Registers.h\"\n\n// Configure the motor control mode to Sensorless\nE_SAKO_PARAM motorControlMode = E_SAKO_PARAM::E_SAKO_PARAM_P00_01_MOTOR_CONTROL_MODE;\n\n// Example Modbus write operation (pseudo-code)\nmodbusWriteRegister(motorControlMode, 0); // Set to Sensorless mode\n```\n\nFor more details, refer to the [Sako drive manual](#) (link to external documentation if available)."
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T14:15:35.304Z",
|
||||
"sessionId": "1748960108638",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T14:15:35.306Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/sako-types.md",
|
||||
"content": "IyMgTUVUQURBVEEKdGl0bGU6IFNha28gVHlwZXMKZGVzY3JpcHRpb246IFR5cGUgZGVmaW5pdGlvbnMgYW5kIGVudW1lcmF0aW9ucyBmb3IgU2FrbyBNb2RidXMtNDg1IGNvbXBvbmVudHMgaW4gRVMtUC0zMiBmaXJtd2FyZS4ga2V5d29yZHM6IFNha28sIE1vZGJ1cywgRVMtUC0zMiwgQzE3LCBpbmR1c3RyaWFsIGFwcGxpY2F0aW9uCnJldmlzaW9uX2hpc3Rvcnk6IGluaXRpYWwgZG9jdW1lbnRhdGlvbgotLS0KCiMjIyBTQUtPIFRZUEVTCgogICoqUGF0aCoqOiBbLi4vc3JjL2NvbXBvbmVudHMvU2Frb1R5cGVzLmhdKC4uL3NyYy9jb21wb25lbnRzL1Nha29UeXBlcy5oKQoKICBUaGlzIGNvbXBvbmVudCBwcm92aWRlcyBlbnVtZXJhdGlvbnMgYW5kIHR5cGUgZGVmaW5pdGlvbnMgZm9yIFNha28gTW9kYnVzLTQ4NSBjb21tdW5pY2F0aW9uIGluIGFuIGluZHVzdHJpYWwgc2V0dGluZy4KCiAgIyMjIFJFUVVJUkVNRU5UUwoKICAtIEVTUC0zMiBmaXJtd2FyZQogIC-!VXNlIG9mIE1vZGJ1cy00ODUgcHJvdG9jb2wKICAtIE5vIHN0ZCBkZXBlbmRlbmNpZXMKCiAgIyMjIEZFQVRVUkVTCiAgLSBFbnVtZXJhdGlvbnMgZm9yIFNha28gc3RhdHVzIHZhbHVlcy4KICAtIEVudW1lcmF0aW9uIGZvciBtb25pdG9yaW5nIHJlZ2lzdGVycy4KICAtIEVycm9yIGNvZGVzIGFuZCBkaXJlY3Rpb24gY29udHJvbCBlbnVtZXJhdGlvbnMuCiAgLSBTdXBwb3J0IGZvciB2YXJpb3VzIFNha28gY29tbXVuaWNhdGlvbiBncm91cHMuCgogICMjIyBUT0RPUwogIC0gQWRkIG1vcmUgZG9jdW1lbnRhdGlvbiBvbiB1c2FnZSBzY2VuYXJpb3MuCiAgLSBFeHRlbmQgd2l0aCBleGFtcGxlIGNvZGUgZm9yIGNvbW1vbiB0YXNrcy4KCiAgIyMjIEVYQU1QTEUKCiAgQGZpbGUgYGxpbmUgNCDigJMgYGNvbXBsZXRlIGNvZGUgZXhhbXBsZSBvbiBob3cgdG8gdXNlIHRoZSBgbGVkRmVlZGJhY2tfMGAgaW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50LgogICNEZWZpbmUgYmVzdCBwcmFjdGljZXMgb2YgdXNhZ2Ugd2l0aCBEZXZJdCEKCiAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f"
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T14:16:11.400Z",
|
||||
"sessionId": "1748960142390",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T14:16:11.402Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/StatusLight.md",
|
||||
"content": "---\ntitle: StatusLight Component\ndescription: Documentation for the StatusLight component used in ESP-32 industrial applications with Modbus-485 support.\nkeywords: ESP-32, Platform.io, Modbus-485, StatusLight, C17, industrial\n---\n\n## STATUSLIGHT\n\n**Path**: [../src/components/StatusLight.h](../src/components/StatusLight.h)\n\n**Revision History**: Initial documentation\n\nThe `StatusLight` component provides control over status LEDs with support for steady (ON/OFF) and blinking states. It integrates with Modbus for remote monitoring and control.\n\n## REQUIREMENTS\n\n- **Pins**:\n - A GPIO pin configured for output (e.g., `PIN_LED_FEEDBACK_0`).\n- **Dependencies**:\n - Arduino framework.\n - Modbus-485 support (`ModbusTCP.h`).\n - Logging (`ArduinoLog.h`).\n - Component base class (`Component.h`).\n\n## FEATURES\n\n- Supports ON, OFF, and BLINK states.\n- Modbus integration for remote state monitoring and control.\n- Configurable blink intervals.\n- Detailed logging for debugging.\n\n## TODOS\n\n- Add support for custom blink patterns.\n- Implement energy-saving modes.\n- Extend Modbus functionality for advanced configurations.\n\n## EXAMPLE\n\n```cpp\n#ifdef PIN_LED_FEEDBACK_0\n StatusLight statusLight_0 = new StatusLight(\n this, // owner\n PIN_LED_FEEDBACK_0, // pin\n ID_LED_FEEDBACK_0, // key\n LED_FEEDBACK_0_MB_ADDR // modbusAddress\n );\n if (statusLight_0) {\n components.push_back(statusLight_0);\n Log.infoln(F(\"StatusLight_0 initialized. Pin:%d, ID:%d, MB:%d\"),\n PIN_LED_FEEDBACK_0, ID_LED_FEEDBACK_0, LED_FEEDBACK_0_MB_ADDR);\n } else {\n Log.errorln(F(\"StatusLight_0 initialization failed.\"));\n }\n#endif\n```"
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T14:16:44.124Z",
|
||||
"sessionId": "1748960185890",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T14:16:44.126Z",
|
||||
"service": "collector:onToolCall"
|
||||
},
|
||||
{
|
||||
"level": "debug",
|
||||
"message": {
|
||||
"name": "write_file",
|
||||
"arguments": {
|
||||
"file": {
|
||||
"path": "./docs/profiles/component-name.md",
|
||||
"content": "LS0tCnRpdGxlOiBDb21wb25lbnQgTmFtZQpkZXNjcmlwdGlvbjogRG9jdW1lbnRhdGlvbiBmb3IgdGhlIENvbXBvbmVudCBOYW1lIGNvbXBvbmVudC4ga2V5d29yZHM6IFtFU1AtMzIsIFBsYXRmb3JtLmlvLCBDMTcsIE1vZGJ1cy00ODVdCi0tLQoKIyMgQ09NUE9ORU5UIE5BTUUKCiJQYXRoIiA6IFtSZWxhdGl2ZSBwYXRoXSh7cGF0aH0pCgpyZXZpc2lvbiBoaXN0b3J5OiBpbml0aWFsIGRvY3VtZW50YXRpb24KCmEgc2hvcnQgZGVzY3JpcHRpb24gb2YgdGhlIGNvbXBvbmVudC4KCiMjIFJFUVVJUkVNRU5UUwoKLSBQaW5zIHVzZWQKLSBEZXBlbmRlbmNpZXMKCiMjIEZFQVRVUkVTCgpsaXN0IG9mIGZlYXR1cmVzIHByb3ZpZGVkIGJ5IHRoZSBjb21wb25lbnQuCgojIyBUT0RPUwoKLSBTcGVjaWZ5IGFueSBwZW5kaW5nIHRhc2tzIG9yIGltcHJvdmVtZW50cy4KCiMjIEVYQU1QTEUKCmBgYGMoY3BwCiNpZmRlZiBQSU5fTEVEX0ZFRURCQUNLXzAKICBsZWRGZWVkYmFja18wID0gbmV3IExFRGZlZWRiYWNrKAogICAgICB0aGlzLCAgICAgICAgICAgICAgICAgIC8vIG93bmVyCiAgICAgIFBJTl9MRURfRkVFREJBQ0tfMCwgICAgLy8gcGluCiAgICAgIExFRF9QSVhFTF9DT1VOVF8wLCAgICAgLy8gcGl4ZWxDb3VudAogICAgICBJRF9MRURfRkVFREJBQ0tfMCwgICAgIC8vIGlkCiAgICAgIExFRF9GRUVEQkFDS18wX01CX0FERFIgLy8gbW9kYnVzQWRkcmVzcwogICk7CiAgaWYgKGxlZEZlZWRiYWNrXzApCiAgewogICAgY29tcG9uZW50cy5wdXNoX2JhY2sobGVkRmVlZGJhY2tfMCk7CiAgICBMb2cuaW5mbG4oRigiTEVERmVlZGJhY2tfMCBpbml0aWFsaXplZC4gUGluOiVkLCBDb3VudDolZCwgSUQ6JWQsIE1COiVkIiksCiAgICAgICAgICAgICAgIFBJTl9MRURfRkVFREJBQ0tfMCwgTEVEX1BJWEVMX0NPVU5UXzAsCiAgICAgICAgICAgICAgIElEX0xFRF9GRUVEQkFDS18wLCBMRURfRkVFREJBQ0tfMF9NQl9BRERSKTsKICB9CiAgZWxzZQogIHsKICAgIExvZy5lcnJvcmxuKEYoIkxFRGZlZWRiYWNrXzAgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpKTsKICB9CiNlbmRpZgpgYGAK"
|
||||
}
|
||||
},
|
||||
"parsed_arguments": null,
|
||||
"timestamp": "2025-06-03T14:21:34.441Z",
|
||||
"sessionId": "1748960471575",
|
||||
"prompt": "./scripts/docs.md"
|
||||
},
|
||||
"timestamp": "2025-06-03T14:21:34.443Z",
|
||||
"service": "collector:onToolCall"
|
||||
}
|
||||
]
|
||||
@ -1,55 +0,0 @@
|
||||
# Analog Level Switch
|
||||
|
||||
**Revision History**: initial documentation
|
||||
|
||||
A component that reads an analog input and interprets it as a multi-position switch. It converts various ADC readings into discrete slot positions based on configured thresholds.
|
||||
|
||||
## REQUIREMENTS
|
||||
|
||||
- An analog IO pin on the ESP-32 platform
|
||||
- A voltage divider circuit for generating multiple discrete voltage levels: typically a pull-down resistor to ground and multiple value resistors to VCC
|
||||
- Modbus register and configuration parameters for number of levels, ADC step size, and offset
|
||||
|
||||
## FEATURES
|
||||
|
||||
- Supports multiple level detection in a single analog input (default maximum of 32 slots)
|
||||
- Built-in signal smoothing with configurable moving-average filter
|
||||
- Debounce mechanism to ensure stable position detection
|
||||
- Hysteresis for preventing flickering between adjacent levels
|
||||
- Modbus integration for reading slot states and raw ADC values
|
||||
- Configurable ADC thresholds: offset and step size per slot
|
||||
|
||||
## TODOS
|
||||
|
||||
- Add support for calibration routine
|
||||
- Implement configurable smoothing parameters through Modbus
|
||||
- Add feature to expose the detection thresholds through Modbus
|
||||
- Improve documentation for resistor value calculation in the divider circuit
|
||||
|
||||
## EXAMPLE
|
||||
|
||||
```cpp
|
||||
#hifdef PIN_ANALOG_LEVEL_SWITCH_0
|
||||
analogLevelSwitch_0 = new AnalogLevelSwitch(
|
||||
this, // owner
|
||||
PIN_ANALOG_LEVEL_SWITCH_0, // analogPin
|
||||
ALS_0_NUM_LEVELS, // numLevels
|
||||
ALS_0_ADC_STEP, // levelStep
|
||||
ALS_0_ADC_OFFSET, // adcValueOffset
|
||||
ID_ANALOG_LEVEL_SWITCH_0, // id
|
||||
ALS_0_MB_ADDR // modbusAddress
|
||||
);
|
||||
if (analogLevelSwitch_0)
|
||||
{
|
||||
components.push_back(analogLevelSwitch_0);
|
||||
Log.infoln(F("AnalogLevelSwitch_0 initialized. Pin:%d, Levels:%d, Step:%d, Offset:%d, ID:%d, MB:%d"),
|
||||
PIN_ANALOG_LEVEL_SWITCH_0, ALS_0_NUM_LEVELS,
|
||||
ALS_0_ADC_STEP, ALS_0_ADC_OFFSET,
|
||||
ID_ANALOG_LEVEL_SWITCH_0, ALS_0_MB_ADDR);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.errorln(F("AnalogLevelSwitch_0 initialization failed."));
|
||||
}
|
||||
#endif
|
||||
```
|
||||
74
docs/components/GPIO.md
Normal file
74
docs/components/GPIO.md
Normal file
@ -0,0 +1,74 @@
|
||||
---
|
||||
title: GPIO Component
|
||||
description: Documentation for the MB_GPIO component, which manages a group of GPIO pins with Modbus interface
|
||||
keywords: ESP-32, GPIO, Modbus, industrial, embedded, C++
|
||||
---
|
||||
|
||||
## GPIO
|
||||
|
||||
**path**: [src/components/GPIO.h](../../src/components/GPIO.h)
|
||||
|
||||
**revision history**: initial documentation
|
||||
|
||||
The MB_GPIO component provides centralized management of GPIO pins with Modbus interface support. It allows configuration of multiple pins with different modes (input, output, analog, etc.) and maps them to Modbus registers for remote access.
|
||||
|
||||
## REQUIREMENTS
|
||||
|
||||
- ESP32 microcontroller
|
||||
- PlatformIO environment
|
||||
- Arduino framework (for GPIO functions)
|
||||
- Modbus-485 interface
|
||||
- Logging library (ArduinoLog.h)
|
||||
- Modbus library (ModbusTCP.h)
|
||||
- Component system dependencies
|
||||
|
||||
## FEATURES
|
||||
|
||||
- Configurable GPIO pins with multiple modes:
|
||||
- Input
|
||||
- Output
|
||||
- Input with pullup/pulldown
|
||||
- Output open-drain
|
||||
- Analog input
|
||||
- Touch input
|
||||
- Modbus interface support
|
||||
- Read/Write operations
|
||||
- Access control per pin
|
||||
- Throttling to prevent excessive operations
|
||||
- Runtime configuration via JSON
|
||||
- Pin state caching to avoid unnecessary operations
|
||||
- Built-in logging and debugging
|
||||
|
||||
## TODOS
|
||||
|
||||
- Add support for input pulldown mode
|
||||
- Implement touch input functionality
|
||||
- Add more comprehensive error handling
|
||||
- Implement capability checks based on ESP32 pin capabilities
|
||||
|
||||
## EXAMPLE
|
||||
|
||||
### GPIO configuration example
|
||||
|
||||
```cpp
|
||||
#ifdef PIN_LED_FEEDBACK_0
|
||||
ledFeedback_0 = new LEDfeedback(
|
||||
this, // owner
|
||||
PIN_LED_FEEDBACK_0, // pin
|
||||
LED_PIXEL_COUNT_0, // pixelCount
|
||||
ID_LED_FEEDBACK_0, // id
|
||||
LED_FEEDBACK_0_MB_ADDRS // modbusAddress
|
||||
);
|
||||
if (ledFeedback_0)
|
||||
{
|
||||
components.push_back(ledFeedback_0);
|
||||
Log.infoln(F(LEDfeedback_0 initialized. Pin:%d, Count:%d, ID:%d, MB:%d"),
|
||||
PIN_LED_FEEDBACK_0, LED_PIXEL_COUNT_0,
|
||||
ID_LED_FEEDBACK_0, LED_FEEDBACK_0_MB_ADDR);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.errorln(F(LEDfeedback_0 initialization failed.));
|
||||
}
|
||||
#endif
|
||||
```
|
||||
58
docs/components/LEDFeedback.md
Normal file
58
docs/components/LEDFeedback.md
Normal file
@ -0,0 +1,58 @@
|
||||
---
|
||||
title: LEDFeedback Component
|
||||
description: Documentation for the LEDFeedback component used in ESP-32, Platform.io, C17 for industrial applications with Modbus-485.
|
||||
keywords: ESP-32, Platform.io, C17, Modbus-485, LEDFeedback, NeoPixel
|
||||
---
|
||||
|
||||
## LEDFEEDBACK
|
||||
|
||||
**Path**: [../src/components/LEDFeedback.h](../src/components/LEDFeedback.h)
|
||||
|
||||
**Revision History**: Initial documentation
|
||||
|
||||
This component controls an LED strip (NeoPixel) with various modes like fade, range display, and tri-color blink. It integrates with Modbus for industrial control.
|
||||
|
||||
## REQUIREMENTS
|
||||
|
||||
- **Pins**: Data pin for NeoPixel (configurable via `PIN_LED_FEEDBACK`).
|
||||
- **Dependencies**:
|
||||
- `Adafruit_NeoPixel` library for LED control.
|
||||
- ModbusTCP library for communication.
|
||||
- `config.h` and `config-modbus.h` for configurations.
|
||||
|
||||
## FEATURES
|
||||
|
||||
- Multiple LED modes (OFF, Fade Red-Blue, Range display, Tri-Color Blink).
|
||||
- Modbus integration for remote control and monitoring.
|
||||
- Configurable LED strip parameters (pin, pixel count, Modbus address).
|
||||
|
||||
## TODOS
|
||||
|
||||
- Add more LED modes (e.g., SOLID_COLOR, RAINBOW).
|
||||
- Implement brightness control via Modbus.
|
||||
- Enhance error handling in Modbus communication.
|
||||
|
||||
## EXAMPLE
|
||||
|
||||
```cpp
|
||||
#ifdef PIN_LED_FEEDBACK_0
|
||||
ledFeedback_0 = new LEDFeedback(
|
||||
this, // owner
|
||||
PIN_LED_FEEDBACK_0, // pin
|
||||
LED_PIXEL_COUNT_0, // pixelCount
|
||||
ID_LED_FEEDBACK_0, // id
|
||||
LED_FEEDBACK_0_MB_ADDR // modbusAddress
|
||||
);
|
||||
if (ledFeedback_0)
|
||||
{
|
||||
components.push_back(ledFeedback_0);
|
||||
Log.infoln(F("LEDFeedback_0 initialized. Pin:%d, Count:%d, ID:%d, MB:%d"),
|
||||
PIN_LED_FEEDBACK_0, LED_PIXEL_COUNT_0,
|
||||
ID_LED_FEEDBACK_0, LED_FEEDBACK_0_MB_ADDR);
|
||||
}
|
||||
z[
|
||||
{
|
||||
Log.errorln(F("LEDFeedback_0 initialization failed."));
|
||||
}
|
||||
#endif
|
||||
```
|
||||
1
docs/components/Plunger.md
Normal file
1
docs/components/Plunger.md
Normal file
@ -0,0 +1 @@
|
||||
LS0tCnRpdGxlOiBQbHVuZ2VyIENvbXBvbmVudApkZXNjcmlwdGlvbjogQSBjb21wb25lbnQgZm9yIGNvbnRyb2xsaW5nIHBsdW5nZXIgbW90aW9uIHVzaW5nIE1vZGJ1cy00ODUsIFNBS08gVkZEcywgYW5kIGpveXN0aWNrIGlucHV0cy4ga2V5d29yZHM6IFBsdW5nZXIsIEVTVC0zMiwgUGxhdGZvcm0uaW8sIE1vZGJ1cy00ODUsIFNBS08gVkZELCBJbmR1c3RyaWFsIFNvZnR3YXJlCi0tLQoKIyBQTFVOR0VSCgogICAgCn5+fgptYXJrZG93bgogICAgCUhlYWRlciBpbmZvcm1hdGlvbiBmcm9tICoqUEJfQ09NSVQqKgogICAgClJldmlzaW9uIEhpc3Rvcnk6IGluaXRpYWwgZG9jdW1lbnRhdGlvbgp7e3sgL3NyYy9jb21wb25lbnRzL1BsdW5nZXIuaCB9fX0Kfn5+CiAKT3ZlcnZpZXc6IFRoZSBQbHVuZ2VyIGNvbXBvbmVudCBwcm92aWRlcyBjb250cm9sIG9mIHBsdW5nZXIgbW90aW9uIHVzaW5nIGEgU0FLTyBWRkQsIGpveXN0aWNrLCBhbmQgc3BlZWQvdG9ycXVlIHBvdGVudGlvbWV0ZXJzLiBJdCBzdXBwb3J0cyBtYW51YWwgYW5kIGF1dG9tYXRlZCBvcGVyYXRpb25zLCBqYW0gZGV0ZWN0aW9uLCBhbmQgTW9kYnVzIFRDUC9SU0Q0ODUgY29tbXVuaWNhdGlvbi4KCiMjIFJFUVVJUkVNRU5UUwoKLSBQaW5zOgogIC0gQ29ubmVjdGVkIHRvIGEgU0FLTyBWRkQgKFNlcmlhbCBvciBNb2RidXMpCiAgLSBKb3lzdGljayBpbnB1dCAoQUREIGNoYW5uZWxzKQogIC0gU3BlZWQgYW5kIFRvcnF1ZSBQb3RlbnRpb21ldGVycwogIC0gT3B0aW9uYWw6IExFRCBmZWVkYmFjayBmb3IgdmlzdWFsIHN0YXR1cwogIAotIERlcGVuZGVuY2llczoKICAtIGBgYENvbXBvbmVudC5oYGBgCiAgLSBgYGBNb2RidXMvTW9kYnVzVENQLmhgYAogIC0gYGAgU0FLT19WRkQuaGBgCiAgLSBgYCBKb3lzdGljay5oYGBgCiAgLSBgYCBQT1QuaGBgCiAgLSBgYCBQbHVuZ2VyU2V0dGluZ3MuaGBgCiAgLSBgYCBUaWNrZXIuaGBgCiAgLSBgYCA8QXJkdWlub0xvZy5oPmBgYAogIC0gYGAgPEFyZHVpbm9Kc29uLmg+YGBgCgojIyBGZWF0dXJlcwoKLSBTdXBwb3J0cyBtYW51YWwgYW5kIGF1dG9tYXRlZCBwbHVuZ2luZy9ob21pbmcKLSBTcGVlZCBhZGp1c3RtZW50IHZpYSBwb3RlbnRpb21ldGVyCi0gVG9ycXVlLWJhc2VkIGphbSBkZXRlY3Rpb24KLSBNb2RidXMgVENQL1JTRDQ4NSBpbnRlcmZhY2UgZm9yIHJlbW90ZSBjb250cm9sCi0gRW5hYmxlL2Rpc2FibGUgYXV0byBtb2RlCi0gUmVjb3JkL1JlcGxheSBmdW5jdGlvbmFsaXR5Ci0gRmlsbGluZyBtb2RlIGZvciBzeXN0ZW0gb3BlcmF0aW9ucwoKIyMgVE9ET1MKCi0gQWRkIG1vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBmb3IgZW51bXMgYW5kIHN0YXRlcwotIFZhbGlkYXRlIE1vZGJ1cyBUQ1AvUlNENDg1IG1hcHBpbmcKLSBUZXN0IHJlY29yZC9yZXBsYXkgZnVuY3Rpb25hbGl0eQotIEFkZCBleGFtcGxlIHVzYWdlIGNvZGUgZm9yIGJlZC4KCiMjIEVYQU1QTEUKCgpgYGAgYysrsP+/vyBQSVNfTkVHQVRJVkVfQlVUVE9OX0hPTERfRFVSQVRJT05fTVMgMjAwMCAvLyBUaW1lIGZvciBsaW9uIHRvIGJlIGhlbGQgZm9yIGF1dG8gbW9kZQojZGVmaW5lIFBJTl9Kb3lzdGlja19GRUVEQkFDS18wIDEyCiAKIApQTFVOR0VSIGNvbXBvbmVudCA9IG5ldyBQbHVuZ2VyKAogICAgdGhpcywgICAgICAgICAgICAgICAgICAvLyBvd25lcgogICAgU0FLT1dGRCwgICAgICAgICAgICAvLyBWbnNmCiAgICBKb3lzdGljaywgICAgICAgICAvLyBKb3lzdGljawogICAgU0BLTyBWRksgLSAgICAgIC8vIE92ZXJyaWRpbmcgUG90CiAgICBGSU5BTl9TVVJGRQogICAgKTsKICAgaWYgKGR1bmdlbikKICAgIHsKICAgICAgICBjb21wb25lbnRzLnB1c2hfYmFjayhEdW5nZW4pOwogICAgICAgIExvZy5pbmZvbG4oRigiRHVuZ2VuX3RvIGluaXRpYWxpemVkLiBQaW58JWR8JGQlZCxJRCRkLCBNQiRkIiksCiAgICAgICAgICAgICAgICBKSksgUERQLCBGKSBNRCwgSBxKLCAhIT8gKG5ldy4uLi4pOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIExvZy5lcnJvcmxuKEYoIkR1bmdlbl9kbyBpbml0aWFsaXphdGlvbiBmYWlsZWQuIikpOwogICAgfQogICAgCiNgYGA=
|
||||
56
docs/components/SAKO_VFD.md
Normal file
56
docs/components/SAKO_VFD.md
Normal file
@ -0,0 +1,56 @@
|
||||
---
|
||||
title: SAKO_VFD Component
|
||||
description: Documentation for the SAKO_VFD component used in ESP-32 Platform.io projects with Modbus-485.
|
||||
keywords: ESP-32, Platform.io, C17, Modbus-485, VFD, component
|
||||
---
|
||||
|
||||
# SAKO_VFD
|
||||
|
||||
**Path**: [src/components/SAKO_VFD.h](./../src/components/SAKO_VFD.h)
|
||||
|
||||
**Revision History**: initial documentation
|
||||
|
||||
This component provides an interface for controlling and monitoring a SAKO Variable Frequency Drive (VFD) over Modbus-485. It is designed for industrial applications and integrates with the ModbusRTU library for communication.
|
||||
|
||||
## REQUIREMENTS
|
||||
|
||||
- **Pins**: Requires Modbus-485 communication pins (configured in `config.h`).
|
||||
- **Dependencies**:
|
||||
- ArduinoLog
|
||||
- Component.h
|
||||
- ModbusRTU library
|
||||
- xstatistics.h
|
||||
|
||||
## FEATURES
|
||||
|
||||
- Support for Modbus RTU communication.
|
||||
- Real-time monitoring of VFD parameters (frequency, speed, current, power, torque, etc.).
|
||||
- Control functions for running, stopping, and reversing the VFD.
|
||||
- Fault detection and reset capabilities.
|
||||
- Retract state machine for automated control sequences.
|
||||
- Statistics tracking for operational parameters.
|
||||
|
||||
## TODOS
|
||||
|
||||
- Add more detailed documentation for internal methods.
|
||||
- Extend fault-handling capabilities.
|
||||
- Optimize Modbus register updates for performance.
|
||||
|
||||
## EXAMPLE
|
||||
|
||||
The component can be initialized and used as follows:
|
||||
|
||||
```cpp
|
||||
#ifdef ENABLE_RS485
|
||||
SAKO_VFD vfd(
|
||||
SLAVE_ID_VFD, // Slave ID
|
||||
SAKO_VFD_DEFAULT_READ_INTERVAL // Read interval
|
||||
);
|
||||
if (vfd.setup() == 0) {
|
||||
components.push_back(&vfd);
|
||||
Log.infoln(F("SAKO VFD initialized. Slave ID: %d"), SLAVE_ID_VFD);
|
||||
} else {
|
||||
Log.errorln(F("SAKO VFD initialization failed."));
|
||||
}
|
||||
#endif
|
||||
```
|
||||
48
docs/components/Sako-Registers.md
Normal file
48
docs/components/Sako-Registers.md
Normal file
@ -0,0 +1,48 @@
|
||||
---
|
||||
title: "Sako-Registers"
|
||||
description: "Documentation for the Sako-Registers component, which defines Modbus-485 parameters for the Sako drive system."
|
||||
keywords: ["ESP-32", "Platform.io", "C17", "Modbus-485", "Sako-Registers"]
|
||||
---
|
||||
|
||||
## SAKO-REGISTERS
|
||||
|
||||
**Path**: [src/components/Sako-Registers.h](./../src/components/Sako-Registers.h)
|
||||
|
||||
**Revision History**: Initial documentation
|
||||
|
||||
This component defines an enumeration of Modbus-485 parameters for the Sako drive system. It includes parameters for motor control, frequency settings, input/output configurations, and system monitoring.
|
||||
|
||||
## REQUIREMENTS
|
||||
|
||||
- **Pins**: Modbus-485 communication interface (TX, RX, and enable pins).
|
||||
- **Dependencies**:
|
||||
- Modbus library for Platform.io.
|
||||
- No standard library dependencies (avoidance of std).
|
||||
|
||||
## FEATURES
|
||||
|
||||
- **Motor Control**: Defines parameters for motor control modes (e.g., sensorless, VF-Servo).
|
||||
- **Frequency Settings**: Includes parameters for frequency sources, limits, and offset adjustments.
|
||||
- **I/O Configuration**: Configures digital and analog input/output terminals.
|
||||
- **System Monitoring**: Provides parameters for LED display, fault outputs, and system status.
|
||||
|
||||
## TODOS
|
||||
|
||||
- Add examples for common parameter configurations.
|
||||
- Expand documentation for advanced parameter usage.
|
||||
|
||||
## EXAMPLE
|
||||
|
||||
Below is an example of how to use the `E_SAKO_PARAM` enumeration to configure a parameter:
|
||||
|
||||
```cpp
|
||||
#include "Sako-Registers.h"
|
||||
|
||||
// Configure the motor control mode to Sensorless
|
||||
E_SAKO_PARAM motorControlMode = E_SAKO_PARAM::E_SAKO_PARAM_P00_01_MOTOR_CONTROL_MODE;
|
||||
|
||||
// Example Modbus write operation (pseudo-code)
|
||||
modbusWriteRegister(motorControlMode, 0); // Set to Sensorless mode
|
||||
```
|
||||
|
||||
For more details, refer to the [Sako drive manual](#) (link to external documentation if available).
|
||||
56
docs/components/StatusLight.md
Normal file
56
docs/components/StatusLight.md
Normal file
@ -0,0 +1,56 @@
|
||||
---
|
||||
title: StatusLight Component
|
||||
description: Documentation for the StatusLight component used in ESP-32 industrial applications with Modbus-485 support.
|
||||
keywords: ESP-32, Platform.io, Modbus-485, StatusLight, C17, industrial
|
||||
---
|
||||
|
||||
## STATUSLIGHT
|
||||
|
||||
**Path**: [../src/components/StatusLight.h](../src/components/StatusLight.h)
|
||||
|
||||
**Revision History**: Initial documentation
|
||||
|
||||
The `StatusLight` component provides control over status LEDs with support for steady (ON/OFF) and blinking states. It integrates with Modbus for remote monitoring and control.
|
||||
|
||||
## REQUIREMENTS
|
||||
|
||||
- **Pins**:
|
||||
- A GPIO pin configured for output (e.g., `PIN_LED_FEEDBACK_0`).
|
||||
- **Dependencies**:
|
||||
- Arduino framework.
|
||||
- Modbus-485 support (`ModbusTCP.h`).
|
||||
- Logging (`ArduinoLog.h`).
|
||||
- Component base class (`Component.h`).
|
||||
|
||||
## FEATURES
|
||||
|
||||
- Supports ON, OFF, and BLINK states.
|
||||
- Modbus integration for remote state monitoring and control.
|
||||
- Configurable blink intervals.
|
||||
- Detailed logging for debugging.
|
||||
|
||||
## TODOS
|
||||
|
||||
- Add support for custom blink patterns.
|
||||
- Implement energy-saving modes.
|
||||
- Extend Modbus functionality for advanced configurations.
|
||||
|
||||
## EXAMPLE
|
||||
|
||||
```cpp
|
||||
#ifdef PIN_LED_FEEDBACK_0
|
||||
StatusLight statusLight_0 = new StatusLight(
|
||||
this, // owner
|
||||
PIN_LED_FEEDBACK_0, // pin
|
||||
ID_LED_FEEDBACK_0, // key
|
||||
LED_FEEDBACK_0_MB_ADDR // modbusAddress
|
||||
);
|
||||
if (statusLight_0) {
|
||||
components.push_back(statusLight_0);
|
||||
Log.infoln(F("StatusLight_0 initialized. Pin:%d, ID:%d, MB:%d"),
|
||||
PIN_LED_FEEDBACK_0, ID_LED_FEEDBACK_0, LED_FEEDBACK_0_MB_ADDR);
|
||||
} else {
|
||||
Log.errorln(F("StatusLight_0 initialization failed."));
|
||||
}
|
||||
#endif
|
||||
```
|
||||
83
docs/components/joystick.md
Normal file
83
docs/components/joystick.md
Normal file
@ -0,0 +1,83 @@
|
||||
---
|
||||
revision: initial documentation
|
||||
---
|
||||
|
||||
# Joystick
|
||||
|
||||
**Path** : [src/components/Joystick.h](../src/components/Joystick.h)
|
||||
|
||||
4-direction joystick input component with local/remote mode support and Modbus integration. Provides debounced input reading and holding time tracking.
|
||||
|
||||
## Requirements
|
||||
|
||||
- 4 digital input pins (Up, Down, Left, Right)
|
||||
- ModbusTCP dependency
|
||||
- Bridge component for serial communication
|
||||
- ArduinoLog for debugging
|
||||
|
||||
## Features
|
||||
|
||||
- **Position Detection** : Up, Down, Left, Right, Center positions
|
||||
- **Debouncing** : Configurable debouncing with 3-count confirmation
|
||||
- **Holding Time** : Tracks how long a position is held
|
||||
- **Operating Modes** :
|
||||
- LOCAL: Reads from physical pins
|
||||
- REMOTE : Uses override position via Modbus
|
||||
- **Modbus Integration** : TCP support for remote control
|
||||
- **Serial Communication** : Bridge integration for serial protocols
|
||||
|
||||
## Todos
|
||||
|
||||
- Implement analog joystick support
|
||||
- Add calibration features
|
||||
- Optimize debounce algorithm for faster response
|
||||
- Add custom debounce interval configuration
|
||||
|
||||
## Example
|
||||
|
||||
```cpp
|
||||
#ifdef PIN_JOYSTICK_UP
|
||||
joystick = new Joystick(
|
||||
this, // owner
|
||||
PIN_JOYSTICK_UP, // pinUp
|
||||
PIN_JOYSTICK_DOWN, // pinDown
|
||||
PIN_JOYSTICK_LEFT, // pinLeft
|
||||
PIN_JOYSTICK_RIGHT, // pinRight
|
||||
JOYSTICK_MB_ADDR // modbusAddress
|
||||
);
|
||||
if (joystickK)
|
||||
{
|
||||
components.push_back(joystick);
|
||||
Log.infoln(F("Joystick initialized. Pins U/D/L/R:%d/%d/%d/%d, MB:"d"),
|
||||
PIN_JOYSTICK_UP, PIN_JOYSTICK_DOWN,
|
||||
PIN_JOYSTICK_LEFT, PIN_JOYSTICK_RIGHT,
|
||||
JOYSTICK_MB_ADDR);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.errorln(F("Joystick initialization failed."));
|
||||
}
|
||||
#endif
|
||||
```
|
||||
|
||||
**Usage Example** :
|
||||
|
||||
```cpp
|
||||
// Get current joystick position
|
||||
Joystick::E_POSITION pos = joystick->getPosition();
|
||||
|
||||
switch(pos)
|
||||
{
|
||||
case Joystick":E_POSITION::UP:
|
||||
// Handle up action
|
||||
break;
|
||||
case Joystick::E_POSITION::DOWN:
|
||||
// Handle down action
|
||||
break;
|
||||
// ...
|
||||
}
|
||||
|
||||
// Switch to remote mode
|
||||
joystick->setMode(Joystick::E_MODE::REMOTE);
|
||||
moystick->setOverridePosition(Joystick::E_POSITION::UP);
|
||||
```
|
||||
98
docs/components/led-feedback.md
Normal file
98
docs/components/led-feedback.md
Normal file
@ -0,0 +1,98 @@
|
||||
---
|
||||
revision: initial documentation
|
||||
---
|
||||
|
||||
# LEDFeedback
|
||||
|
||||
**Path** : [src/components/LEDFeedback.h](src/components/LEDFeedback.h)
|
||||
|
||||
Addressable NeoPixel LED strip feedback component for industrial visual indication. Supports multiple display modes, Modbus-485 control, and real-time status visualization.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Hardware
|
||||
|
||||
- **Pin**: Digital output pin for NeoPixel data
|
||||
- **Power**: 5V for NEOPIXEL strip (external power supply recommended for larger strips)
|
||||
- **Ground**: Common ground between ESP-32 and NeoPixel strip
|
||||
- **(Data Line**: 3.3v logic level (NEOPIXEL auto-resistant to lower voltage)
|
||||
|
||||
### Dependencies
|
||||
|
||||
- `Adafruit_NeoPixel`
|
||||
- `ArduinoLog`
|
||||
- `Component` (base class)
|
||||
- `modbus/ModbusTCP`
|
||||
- `config.h` and `config-modbus.h`
|
||||
|
||||
## Features
|
||||
|
||||
### LED Modes
|
||||
|
||||
- **OFF**: All LEDs estinguidas
|
||||
- **FADE_R_B**: Fade entre rojY y azul (suave transición)
|
||||
- **RANGE**: Nivel 0-100 como barra de progreso
|
||||
- **TRI_COLOR_BLINK**: Secciones de tres colores con parpadeo
|
||||
|
||||
### Modbus Interface
|
||||
|
||||
- Holding register (READ/WRITE)
|
||||
- Base address configurable
|
||||
- Register offsets:
|
||||
- `MODE = 0` (LEDMode enum)
|
||||
- `LEVEL = 1` 0-100 for RANGE mode
|
||||
|
||||
### Component Lifecycle
|
||||
|
||||
- NeoPixel initialization in `setup()`
|
||||
- Non-blocking loop with update timing
|
||||
- Serial and Modbus registration support
|
||||
- Component state notification
|
||||
|
||||
## Todos
|
||||
|
||||
- [ ] SOLID_COLOR mode
|
||||
- [ ] RAINBOW mode (cycle through spectrum)
|
||||
- [ ] BRIGHTNESS control (Modbus register)
|
||||
- [ ] Customizable FADE_R_B colors
|
||||
- [ ] High speed buffered animations
|
||||
- [ ] Individual pixel control mode
|
||||
- [ ] Pulse effect modes
|
||||
- [ ] Status, error and heartbeat modes
|
||||
|
||||
## Example
|
||||
|
||||
```c
|
||||
#ifdef PIN_LED_FEEDBACK_0
|
||||
ledFeedback_0 = new LEDFeedback(
|
||||
this, // owner
|
||||
PIN_LED_FEEDBACK\0< // pin
|
||||
LED_PIXEL_COUNT_0, // pixelCount
|
||||
ID_LED_FEEDBACK__, // id
|
||||
LED_FEEDBACK_0_MB_ADDR // modbusAddress
|
||||
);
|
||||
if (ledFeedback_0)
|
||||
{
|
||||
components.push_back(ledFeedback_0);
|
||||
Log.infoln(F("LEDFeedback_0 initialized. Pin:%d, Count:%d, ID:%d, MB:%d"),
|
||||
PIN_LED_FEEDBACK_0, LED_PIXEL_COUNT_0,
|
||||
ID_LED_FEEDBACK__, LED_FEEDBACK_0_MB_ADDR);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.errorln(F("LEDFeedback_0 initialization failed."));
|
||||
}
|
||||
#endif
|
||||
```
|
||||
|
||||
### Modbus Control
|
||||
|
||||
```c
|
||||
// Set mode to FADE_R_B
|
||||
// Assume base address is 1000
|
||||
modbus_holding_registers[write](1000, 1);
|
||||
|
||||
// Set mode to RANGE with 75% level
|
||||
modbus_holding_registers[write](1000, 2); // RANGE mode
|
||||
modbus_holding_registers[write](1001, 75); // 75% level
|
||||
```
|
||||
94
docs/components/mb-gpio.md
Normal file
94
docs/components/mb-gpio.md
Normal file
@ -0,0 +1,94 @@
|
||||
---
|
||||
revision: initial documentation
|
||||
---
|
||||
|
||||
# MB_GPIO
|
||||
|
||||
**Path** : [src/components/GPIO.h](../src/components/GPIO.h)
|
||||
|
||||
Modbus-enabled GPIO management component for ESP-32 iin-dustrial applications. Manages multiple GPIO pins with configurable modes, throttling, and Modbus-485 integration.
|
||||
|
||||
## Requirements
|
||||
|
||||
- ESP-32 GPIO pins (see E_GPIO_Pin enum)
|
||||
- cstdint, vector, climits
|
||||
- ArduinoLog
|
||||
- Component base class
|
||||
- Bridge for serial communication
|
||||
- enums for error codes
|
||||
- Modbus dependencies (ModbusTypes, ModbusTCP)
|
||||
- ArduinoJson for configuration
|
||||
|
||||
## Features
|
||||
|
||||
- Supports all ESP-32 GPIO pins (0-48, excluding 22-34)
|
||||
- Multiple pin modes: INPUT, OUTPUT, INPUT_PULLUP, INPUT_PULLDOWN, OUTPUT_OPEN_DRAIN, ANALOG_INPUT, TOUCH
|
||||
- Modbus integration with full read/write access control
|
||||
- Operation throttling with configurable intervals
|
||||
- Duplicate value caching to reduce unnecessary I+· operations
|
||||
- JSON-based dynamic configuration
|
||||
- Comprehensive error handling and logging
|
||||
- Serial command interface via Bridge
|
||||
|
||||
## Todos
|
||||
|
||||
- Implement INPUT_PULLDOWN mode
|
||||
- Add pin capability validation (defined but not active)
|
||||
- Implement touch sensor functionality
|
||||
- Optimize memory usage for large pin configurations
|
||||
- Add pin conflict detection
|
||||
|
||||
## Example
|
||||
|
||||
```cpp
|
||||
#ifdef PIN_LED_FEEDBACK_0
|
||||
#define GPIO_PIN_COUNT 3
|
||||
|
||||
// Configure pins
|
||||
std::vector<GPIO_PinConfig> gpioConfigs = {
|
||||
// Output LED control
|
||||
GPIO_PinConfig(E_GPIO_2, E_GPIO_TYPE_OUTPUT, 5000, F_FN_CODE::FN_WRITE_SINGLE_COIL,
|
||||
MB_ACCESS_WRITE_ONLY, 100, "LED_Control"),
|
||||
// Input button
|
||||
GPIO_PinConfig(E_GPIO_0, E_GPIO_TYPE_INPUT_PULLUP, 5001, F_FN_CODE::FN_READ_DISCRETE,
|
||||
MB_ACCESS_READ_ONLY, 50, "Button_Input"),
|
||||
// Analog input
|
||||
GPIO_PinConfig(E_GPIO_4, E_GPIO_TYPE_ANALOG_INPUT, 5002, E_FN_CODE::FN_READ_INPUT_REGISTER,
|
||||
MB_ACCESS_READ_ONLY, 200, "Analog_Sensor")
|
||||
};
|
||||
|
||||
mbGPIO_0 = new MB_GPIO(
|
||||
this, // owner
|
||||
ID_MB_GPIO_0, // id
|
||||
gpioConfigs // pin configurations
|
||||
);
|
||||
|
||||
if (mbGPIO_0)
|
||||
{
|
||||
components.push_back(mbGPIO_0);
|
||||
Log.infoln(F("MB_GPIO_0 initialized. Count:%d, ID:%d"),
|
||||
GPIO_PIN_COUNT, ID_MB_GPIO_0);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.errorln(F("MB_GPIO_0 initialization failed."));
|
||||
}
|
||||
#endif
|
||||
```
|
||||
|
||||
Sample JSON configuration:
|
||||
```json
|
||||
{
|
||||
"pins": [
|
||||
{
|
||||
"pinNumber": 2,
|
||||
"pinType": 2
|
||||
"modbusAddress": 5000,
|
||||
"modbusFunction": 5,
|
||||
"modbusAccess": 2,
|
||||
"opIntervalMs": 100,
|
||||
"name": "LED_Control"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
1
docs/components/rest-server.md
Normal file
1
docs/components/rest-server.md
Normal file
@ -0,0 +1 @@
|
||||
IyMgUkVTVF9TRVJWRVIKCiogKipQYXRoKiogOiBbLi9zcmMvY29tcG9uZW50cy9SZXN0U2VydmVyLmhdKC4vc3JjL2NvbXBvbmVudHMvUmVzdFNlcnZlci5oKQoqICoqUmV2aXNpb24gaGlzdG9yeSoqIDogaW5pdGlhbCBkb2N1bWVudGF0aW9uCgpUaGlzIGNvbXBvbmVudCBpbXBsZW1lbnRzIGEgUkVTVGZ1bCBBUEkgc2VydmVyIHRoYXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBNb2RidXMgc3lzdGVtIGZvciBpbmR1c3RyaWFsIGFwcGxpY2F0aW9ucy4gSXQgc3VwcG9ydHMgd2ViIHNvY2tldCBjb21tdW5pY2F0aW9uIGZvciByZWFsLXRpbWUgdXBkYXRlcy4KCiMjIFJFUVVJUkVNRU5UUwoKLSBQaW5zOiBOb3QgYXBwbGljYWJsZSAobmV0d29yay1iYXNlZCkKLSBEZXBlbmRlbmNpZXM6CiAgLSBgRVNQQXN5bmNXZWJTZXJ2ZXJgCiAgLSBgQXN5bmNKc29uYAogIC0gYEFyZHVpbm9Kc29uYAogIC0gYEFyZHVpbm9Mb2dgCiAgLSBgQXN5bmNUQ1BgCiAgLSBgTW9kYnVzVkNQCgojIyBGRUFUVVJFUwoK-IFyZXN0ZnVsIGFwaSBzZXJ2ZXIgd2l0aCBzd2FnZ2VyIGdlbmVyYXRlZCBpbnRlcmZhY2UK-SBpbnRlZ3JhdGVkIHdpdGggTW9kYnVzVAotIHN1cHBvcnQgZm9yIENvaWxzLCBSZWdpc3RlcnMsIGFuZCBMb2dnaW5nIGRhdGEK-CB3ZWIgc29ja2V0IHN1cHBvcnQgZm9yIHJlYWwtdGltZSBjb21tdW5pY2F0aW9uCgotIEZlYXR1cmUgZmxhZ3M6IGBFTkFCTEVfV0VCU09DS0VUCgojIyBUT0RPUwoKLSBbIF0gQWRkIG1vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBmb3IgQVBJIGVuZHBvaW50cwoKLSBbIF0gVGVzdCB3ZWJzb2NrZXQgYnJvYWRjYXN0IGZ1bmN0aW9uYWxpdHkKCiMjIEVYQU1QTEUKCioqRXhhbXBsZSBDb2RlIFNuYXBzaG90KioKCmBgYGMKI2lmZGVmIFBJTl9MRURfRkVFREJBQ0tfMAogIGxlZEZlZWRiYWNrXzAgPSBuZXcgTEVERmVlZGJhY2soCiAgICAgIHRoaXMsICAgICAgICAgICAgICAgICAgLy8gb3duZXIKICAgICAgUElOX0xFRF9GRUVEQkFDS18wLCAgICAvLyBwaW4KICAgICAgTEVEX1BJWEVMX0NPVU5UXzAsICAgICAvLyBwaXhlbENvdW50CiAgICAgIElEX0xFRF9GRUVEQkFDS18wLCAgICAgLy8gaWQKICAgICAgTEVEX0ZFRURCQUNLXzBfTUJfQUREUiAvLyBtb2RidXNBZGRyZXNzCiAgKTsKICBpZiAobGVkRmVlZGJhY2tfMCkKICB7CiAgICBjb21wb25lbnRzLnB1c2hfYmFjayhsZWRGZWVkYmFja18wKTsKICAgIExvZy5pbmZvbG4oRigiTEVERmVlZGJhY2tfMCBpbml0aWFsaXplZC4gUGluOiVkLCBDb3VudDolZCwgSUQ6JWQsIE1COiVkIiksCiAgICAgICAgICAgICAgIFBJTl9MRURfRkVFREJBQ0tfMCwgTEVEX1BJWEVMX0NPVU5UXzAsCiAgICAgICAgICAgICAgIElEX0xFRF9GRUVEQkFDS18wLCBMRURfRkVFREJBQ0tfMF9NQl9BRERSKTsKICB9CiAgZWxzZQogIHsKICAgIExvZy5lcnJvcmxuKEYoIkxFRUZlZWRiYWNrXzAgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpKTsKICB9CiNlbmRpZgpgYGA=
|
||||
1
docs/components/sako-types.md
Normal file
1
docs/components/sako-types.md
Normal file
@ -0,0 +1 @@
|
||||
IyMgTUVUQURBVEEKdGl0bGU6IFNha28gVHlwZXMKZGVzY3JpcHRpb246IFR5cGUgZGVmaW5pdGlvbnMgYW5kIGVudW1lcmF0aW9ucyBmb3IgU2FrbyBNb2RidXMtNDg1IGNvbXBvbmVudHMgaW4gRVMtUC0zMiBmaXJtd2FyZS4ga2V5d29yZHM6IFNha28sIE1vZGJ1cywgRVMtUC0zMiwgQzE3LCBpbmR1c3RyaWFsIGFwcGxpY2F0aW9uCnJldmlzaW9uX2hpc3Rvcnk6IGluaXRpYWwgZG9jdW1lbnRhdGlvbgotLS0KCiMjIyBTQUtPIFRZUEVTCgogICoqUGF0aCoqOiBbLi4vc3JjL2NvbXBvbmVudHMvU2Frb1R5cGVzLmhdKC4uL3NyYy9jb21wb25lbnRzL1Nha29UeXBlcy5oKQoKICBUaGlzIGNvbXBvbmVudCBwcm92aWRlcyBlbnVtZXJhdGlvbnMgYW5kIHR5cGUgZGVmaW5pdGlvbnMgZm9yIFNha28gTW9kYnVzLTQ4NSBjb21tdW5pY2F0aW9uIGluIGFuIGluZHVzdHJpYWwgc2V0dGluZy4KCiAgIyMjIFJFUVVJUkVNRU5UUwoKICAtIEVTUC0zMiBmaXJtd2FyZQogIC-!VXNlIG9mIE1vZGJ1cy00ODUgcHJvdG9jb2wKICAtIE5vIHN0ZCBkZXBlbmRlbmNpZXMKCiAgIyMjIEZFQVRVUkVTCiAgLSBFbnVtZXJhdGlvbnMgZm9yIFNha28gc3RhdHVzIHZhbHVlcy4KICAtIEVudW1lcmF0aW9uIGZvciBtb25pdG9yaW5nIHJlZ2lzdGVycy4KICAtIEVycm9yIGNvZGVzIGFuZCBkaXJlY3Rpb24gY29udHJvbCBlbnVtZXJhdGlvbnMuCiAgLSBTdXBwb3J0IGZvciB2YXJpb3VzIFNha28gY29tbXVuaWNhdGlvbiBncm91cHMuCgogICMjIyBUT0RPUwogIC0gQWRkIG1vcmUgZG9jdW1lbnRhdGlvbiBvbiB1c2FnZSBzY2VuYXJpb3MuCiAgLSBFeHRlbmQgd2l0aCBleGFtcGxlIGNvZGUgZm9yIGNvbW1vbiB0YXNrcy4KCiAgIyMjIEVYQU1QTEUKCiAgQGZpbGUgYGxpbmUgNCDigJMgYGNvbXBsZXRlIGNvZGUgZXhhbXBsZSBvbiBob3cgdG8gdXNlIHRoZSBgbGVkRmVlZGJhY2tfMGAgaW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50LgogICNEZWZpbmUgYmVzdCBwcmFjdGljZXMgb2YgdXNhZ2Ugd2l0aCBEZXZJdCEKCiAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
|
||||
@ -1,69 +0,0 @@
|
||||
# Joystick
|
||||
|
||||
_`Revision History: initial documentation`_
|
||||
|
||||
A component that interfaces with a 4 directional joystick and provides debounced readings. The joystick supports local input and remote control via Modbus.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Pins
|
||||
|
||||
- `4 GPIO pins` for UP, DOWN, LEFT, and RIGHT directions
|
||||
- Default pins on ESP32:
|
||||
- PIN_JOYSTICK_UP = 47
|
||||
- PIN_JOYSTICK_DOWN = 48
|
||||
- PIN_JOYSTICK_LEFT = 40
|
||||
- PIN_JOYSTICK_RIGHT = 39
|
||||
|
||||
### Dependencies
|
||||
|
||||
- ArduinoLog library
|
||||
- ModbusTCP support in the framework
|
||||
- Enabled in config.h (`ENABLE_JOYSTICK`)
|
||||
|
||||
## Features
|
||||
|
||||
- Detects 5 positions: CENTER, UP DOWN, LEFT, RIGHT
|
||||
- Built-in debouncing logic (confirms position changes through multiple readings)
|
||||
- Tracks how long a position has been held
|
||||
- Supports two modes of operation:
|
||||
- LOCAL: Direct readings from physical joystick
|
||||
- REMOTE: Position set remotely via Modbus
|
||||
- Full Modbus integration with the following registers:
|
||||
- POSITION: Current position (0 = CENTER, 1 = UP, 2 = DOWN, 3 = LEFT, 4 = RIGHT)
|
||||
- MODE: Current operation mode (0 = LOCAL, 1 = REMOTE)
|
||||
- OVERRIDE: Position used when in REMOTE mode
|
||||
|
||||
## Todos
|
||||
|
||||
- Consider adding diagonal position detection
|
||||
- Implement configurable debounce timings via Modbus
|
||||
|
||||
## Example
|
||||
|
||||
```cpp
|
||||
#ifdef ENABLE_JOYSTICK
|
||||
#ifdef PIN_JOYSTICK_UP
|
||||
joystick = new Joystick(
|
||||
this, // owner
|
||||
PIN_JOYSTICK_UP, // up pin
|
||||
PIN_JOYSTICK_DOWN, // down pin
|
||||
PIN_JOYSTICK_LEFT, // left pin
|
||||
PIN_JOYSTICK_RIGHT, // right pin
|
||||
100 // Modbus register address
|
||||
);
|
||||
|
||||
if (joystick)
|
||||
{
|
||||
components.push_back(joystick);
|
||||
Log.infoln(F("Joystick initialized. Pins: UP%dDOWN%d:LEFT%d:RIGHT%d, MB%d"),
|
||||
PIN_JOYSTICK_UP, PIN_JOYSTICK_DOWN,
|
||||
PIN_JOYSTICK_LEFT, PIN_JOYSTICK_RIGHT, 100);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.errorln(F("Joystick initialization failed."));
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
```
|
||||
@ -1,64 +0,0 @@
|
||||
# LED Feedback Component
|
||||
|
||||
`Revision: 1.0 - Initial documentation`
|
||||
|
||||
The LED Feedback component is designed to provide optical feedback using NeoPixel (WS2812) LEDs in an industrial application. It can be controlled via Modbus RS-485 and integrated into the component system.
|
||||
|
||||
## REQUIREMENTS
|
||||
|
||||
- **Pins**: A digital output pin for the NeoPixel data line (defined as `PIN_LED_FEEDBACK_X` in config.h).
|
||||
- **Dependencies**: Adafruit_NeoPixel or a compatible library.
|
||||
- **Configuration**: Requires `config.h` definitions for pins, pixel count, component ID, and Modbus address.
|
||||
|
||||
## FEATURES
|
||||
|
||||
- Control of one or more NeoPixel LEDs from a single data pin
|
||||
- Individually addressable LEDs with RGB or xRH: patterns
|
||||
[*tbc, based on implementation*]
|
||||
- Modbus RS-485 control integration
|
||||
- Integration into the PolyMech component system
|
||||
- Regular update interval for smooth animations (default 20ms)
|
||||
|
||||
## TODOS
|
||||
|
||||
- Implement pattern support for different status indications (idle, warning, error, etc.).
|
||||
- Add Modbus register documentation for control parameters.
|
||||
- Implement power management (dimming) functionality for long-term use in industrial settings.
|
||||
|
||||
## EXAMPLE
|
||||
|
||||
The LED Feedback component is initialized in the main application as follows:
|
||||
|
||||
```cpp
|
||||
@ifdef PIN_LED_FEEDBACK_0
|
||||
ledFeedback_0 = new LEDFeedback(
|
||||
this, // owner
|
||||
PIN_LED_FEEDBACK_H, // pin
|
||||
LED_PIXEL_COUNT_0, // pixelCount
|
||||
ID_LED_FEEDBACK_@, // id
|
||||
LED_FEEDBACK_0_MB_ADDR // modbusAddress
|
||||
);
|
||||
if (ledFeedback_0)
|
||||
{
|
||||
components.push_back(ledFeedback_0);
|
||||
Log.infoln(F("LEDFeedback_0 initialized. Pin:%d, Count:%d, ID:%d, MB:%d"),
|
||||
PIN_LED_FEEDBACK_0, LED_PIXEL_COUNT_0,
|
||||
ID_LED_FEEDBACK_0, LED_FEEDBACK_0_MB_ADDR);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.errorln(F("LEDFeedback_0 initialization failed."));
|
||||
}
|
||||
#endif
|
||||
```
|
||||
|
||||
Configuration in `config.h`:
|
||||
|
||||
```cpp
|
||||
// LED Feedback configuration
|
||||
#define PIN_LED_FEEDBACK_0 1 // NeoPixel data pin
|
||||
#define LED_PIXEL_COUNT_0 1 // Number of LEDs in the strip/ring
|
||||
#define ID_LED_FEEDBACK_I 210 // Component ID
|
||||
#define LED_FEEDBACK_@_MB_ADDR 70 // Base Modbus address for this component
|
||||
// #define LED_UPDATE_INTERVAL_MS 20 // Optional update interval (default 20ms)
|
||||
```
|
||||
@ -4,7 +4,7 @@
|
||||
- avoidance of std
|
||||
- industrial application, using Modbus-485
|
||||
|
||||
Create a brief documentation, in ./docs/component-name.md,
|
||||
Create a brief documentation, in ./docs/profiles/component-name.md, for Astro (static site generator), add frontmatter, for title, description, keywords
|
||||
|
||||
Layout / Content :
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
kbot-d --router2=openai --model=anthropic/claude-3.7-sonnet:th \
|
||||
kbot-d --router2=openai --model=deepseek/deepseek-chat-v3-0324:free \
|
||||
--prompt=./scripts/docs.md \
|
||||
--each=./src/components/*.h \
|
||||
--each=./src/*.h \
|
||||
--include=../../src/config.h \
|
||||
--wrap=meta \
|
||||
--mode=tools --preferences=none \
|
||||
|
||||
Loading…
Reference in New Issue
Block a user