Last active
September 21, 2025 14:56
-
-
Save standarddeviant/b06f9e7b49c62941a70544b52a8395e7 to your computer and use it in GitHub Desktop.
mksrc_report_hooks.ps1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| sd -f m ` | |
| 'void (.*)(_dispatch_event\()(.+), (.+)\)(\s*)\{' ` | |
| 'void $1$2($4, $4)$5{\n handle_zbus_err(zbus_chan_pub(&g_zbus_report_chan,\n (const void *)&((inj_rep_t)\n {.mtype=MTYPE_EVENT, .smid=SM_ID_SysButtonSm, .value=event_id}), K_NOWAIT);' ` | |
| sm/SysButtonSm.c | |
| sd -f m ` | |
| '\n(\s*)sm->state_id =(.*)\;' ` | |
| '\n$1 sm->state_id =$2; \n$1 handle_zbus_err(zbus_chan_pub(&g_zbus_report_chan, \n$1 (const void *)&((inj_rep_t) \n$1 {.mtype=MTYPE_STATE, .smid=SM_ID_SysButtonSm, .value=$2}), K_NOWAIT);' ` | |
| sm/SysButtonSm.c |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This script will perform (2) sd operations per state-machine source file | |
| # WARN: THIS SCRIPT MODIFIES THE CONTENTS OF MULTIPLED AUTO GENERATED STATE MACHINE C SOURCE FILES | |
| # WARN: this is NOT idempotent!!!!! | |
| # INFO: The (2) operations per file effectively inject zbus-based reporting for | |
| # 1. all dispatched events via XYZ_event_dispatch(...) | |
| # 2. all state changes via sm->state_id = XYZ; | |
| $smList = "Test1Sm", "Test2Sm", "Test3Sm" | |
| foreach ($smName in $smList) { | |
| Write-Host "Adding report hooks to: $smName.c" | |
| # operation 1-of-2 : (1) event-dispatch | |
| $find_str = 'void (.*)(_dispatch_event\()(.+), (.+)\)(\s*)\{' | |
| $rep_str_1 = 'void $1$2($3, $4)$5{\n handle_zbus_err(zbus_chan_pub(&g_zbus_report_chan,\n (const void *)&((inj_rep_t)\n {.mtype=MTYPE_EVENT,' | |
| $rep_str_2 = ".smid=SM_ID_$smName, .value=event_id}), K_NOWAIT));" | |
| $rep_str = "$rep_str_1$rep_str_2" | |
| sd -f m ` | |
| $find_str ` | |
| $rep_str ` | |
| "sm/$smName.c" | |
| # operation 2-of-2 : (2) state-change | |
| $find_str = '\n(\s*)sm->state_id =(.*)\;' | |
| $rep_str_1 = '\n$1 sm->state_id =$2; \n$1 handle_zbus_err(zbus_chan_pub(&g_zbus_report_chan, \n$1 (const void *)&((inj_rep_t) \n$1 ' | |
| $rep_str_2 = "{.mtype=MTYPE_STATE, .smid=SM_ID_$smName, " | |
| $rep_str_3 = '.value=$2}), K_NOWAIT));' | |
| $rep_str = "$rep_str_1$rep_str_2$rep_str_3" | |
| sd -f m ` | |
| $find_str ` | |
| $rep_str ` | |
| "sm/$smName.c" | |
| } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment