[Ovmsdev] Refactoring MODEM/SIMCOM for v3.3
Mark Webb-Johnson
mark at webb-johnson.net
Mon Aug 31 14:48:39 HKT 2020
Following on from this, I’ve now brought across my previously uncommitted changes for ovms_script / ovms_command to the for-3.3 branch. This is a big set, affecting a bunch of modules.
The issues here were:
Duktape object and function resolution was in ovms_script, which loads quite late. After events and config, for example - so the extensions for those had to be put in ovms_script rather than their own files - ugly.
The ovms_script was dependent on ovms_command, which was dependent on ovms_script. Horrible.
The solution I implemented is to move duktape to ovms_duktape, and load that very early for duktape object and function registration. That avoids all the inter-dependency issues and allows anything to register duktape extensions.
The ovms_duktape / ovms_script code was also massive (> 3,000 lines), so I moved the non-code stuff out to their own files. Probably more can be done here, but at least now it is manageable at around 1,300 lines.
With that done, I should be able to finally get the javascript command extensions implemented (the main justification for this work). This will allow javascript modules to register ovms command handlers and extend the command line.
Regards, Mark.
> On 30 Aug 2020, at 3:20 PM, Mark Webb-Johnson <mark at webb-johnson.net> wrote:
>
>
> The initial implementation of this work is in branch for-v3.3, in GitHub. That branch can be used for the upcoming 3.3 release, including potentially breaking changes.
>
> I’d appreciate any feedback. For the SIM5360, the behaviour should be unchanged from the current implementation (except some improvements to edge cases and control logic). The major user visible change is from ’simcom’ to ‘modem’ for the console commands.
>
> Regards, Mark.
>
>> On 20 Aug 2020, at 9:35 PM, Mark Webb-Johnson <mark at webb-johnson.net <mailto:mark at webb-johnson.net>> wrote:
>>
>>
>> I have started the work on refactoring the modem driver to support virtual driver implementations (SIMCOM 5360 being just one of them). This is a major refactoring that will take some time to complete. It is likely that the following components/files will be affected:
>>
>> Component simcom (major changes)
>> New component ovms_modem introduced
>> ovms_webserver/dev/commands.htm
>> ovms_webserver/src/web_cfg_init.cpp
>> ovms_webserver/src/web_cfg.cpp
>> Component powermgmt
>> And several other components mentioning Simcom, but only very minor changes
>>
>> I would appreciate it if no major changes were made to those components in the next week or two, as that may make merging difficult.
>>
>> Once I’ve got the modem code refactored, and a compatible SIMCOM 5360 driver working, I’ll publish to the for-v3.3 branch for wider testing. I can then add the other modem drivers I have been working on.
>>
>> Regards, Mark.
>>
>> P.S. Pretty obvious that this work is to abstract out the modem type specific code, to make it easier to add support for other modem types in OVMS. This is a long-term project, and not something happening anytime soon, but I am working on it.
>>
>> _______________________________________________
>> OvmsDev mailing list
>> OvmsDev at lists.openvehicles.com <mailto:OvmsDev at lists.openvehicles.com>
>> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
>
> _______________________________________________
> OvmsDev mailing list
> OvmsDev at lists.openvehicles.com
> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20200831/53fad6b1/attachment.htm>
More information about the OvmsDev
mailing list