Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generate fed templates #208

Merged
merged 24 commits into from
Feb 10, 2025
Merged

Generate fed templates #208

merged 24 commits into from
Feb 10, 2025

Conversation

erlingrj
Copy link
Collaborator

@erlingrj erlingrj commented Jan 31, 2025

Based on our discussions #203 I have started this draft PR.

By calling lfc --gen-fed-templates src/Hello.LF we generate project templates for each federate based on the platform. A platform is either inferred from the top-level target property (platform: Native) or from an attribute, currently:

@platform_riot
f1 = new Fed()

@platform_zephyr
f2 = new Fed()

Currently still a draft. @LasseRosenow, could you help me out a little with the RIOT makefile? Check out the file UcFederateTemplateProjectGenerator.kt, currently it is an extremely simple generator for the different files. We can make a nicer design if this gets more complicated

@erlingrj erlingrj marked this pull request as draft January 31, 2025 11:06
Copy link
Contributor

github-actions bot commented Jan 31, 2025

Memory usage after merging this PR will be:

Memory Report

action_empty_test_c

from to increase (%)
text 60863 60860 -0.00
data 752 752 0.00
bss 11360 11360 0.00
total 72975 72972 -0.00

action_microstep_test_c

from to increase (%)
text 61734 61731 -0.00
data 760 760 0.00
bss 11424 11424 0.00
total 73918 73915 -0.00

action_overwrite_test_c

from to increase (%)
text 61571 61568 -0.00
data 752 752 0.00
bss 11424 11424 0.00
total 73747 73744 -0.00

action_test_c

from to increase (%)
text 61475 61472 -0.00
data 760 760 0.00
bss 11424 11424 0.00
total 73659 73656 -0.00

deadline_test_c

from to increase (%)
text 57105 57102 -0.01
data 768 768 0.00
bss 10784 10784 0.00
total 68657 68654 -0.00

delayed_conn_test_c

from to increase (%)
text 62467 62464 -0.00
data 752 752 0.00
bss 10272 10272 0.00
total 73491 73488 -0.00

event_payload_pool_test_c

from to increase (%)
text 18331 18331 0.00
data 624 624 0.00
bss 320 320 0.00
total 19275 19275 0.00

event_queue_test_c

from to increase (%)
text 27616 27616 0.00
data 736 736 0.00
bss 480 480 0.00
total 28832 28832 0.00

nanopb_test_c

from to increase (%)
text 42886 42884 -0.00
data 904 904 0.00
bss 320 320 0.00
total 44110 44108 -0.00

port_test_c

from to increase (%)
text 62415 62412 -0.00
data 752 752 0.00
bss 10272 10272 0.00
total 73439 73436 -0.00

reaction_queue_test_c

from to increase (%)
text 27448 27448 0.00
data 736 736 0.00
bss 480 480 0.00
total 28664 28664 0.00

request_shutdown_test_c

from to increase (%)
text 61706 61703 -0.00
data 752 752 0.00
bss 11424 11424 0.00
total 73882 73879 -0.00

startup_test_c

from to increase (%)
text 56804 56801 -0.01
data 760 760 0.00
bss 10784 10784 0.00
total 68348 68345 -0.00

tcp_channel_test_c

from to increase (%)
text 96885 96880 -0.01
data 1256 1256 0.00
bss 21408 21408 0.00
total 119549 119544 -0.00

timer_test_c

from to increase (%)
text 56695 56692 -0.01
data 752 752 0.00
bss 10784 10784 0.00
total 68231 68228 -0.00

Copy link
Contributor

github-actions bot commented Jan 31, 2025

Benchmark results after merging this PR:

Benchmark results

Performance:

PingPongUc:
Best Time: 133.905 msec
Worst Time: 140.662 msec
Median Time: 134.503 msec

PingPongC:
Best Time: 170.009 msec
Worst Time: 176.110 msec
Median Time: 170.570 msec

ReactionLatencyUc:
Best latency: 24230 nsec
Median latency: 59841 nsec
Worst latency: 99344 nsec

ReactionLatencyC:
Best latency: 23923 nsec
Median latency: 59921 nsec
Worst latency: 91958 nsec

Memory usage:

PingPongUc:
text data bss dec hex filename
40932 760 7440 49132 bfec bin/PingPongUc

PingPongC:
text data bss dec hex filename
45826 880 360 47066 b7da bin/PingPongC

ReactionLatencyUc:
text data bss dec hex filename
30737 744 2080 33561 8319 bin/ReactionLatencyUc

ReactionLatencyC:
text data bss dec hex filename
41536 848 360 42744 a6f8 bin/ReactionLatencyC

@LasseRosenow
Copy link
Collaborator

Nice, I will have a look when I have time later

LasseRosenow and others added 6 commits February 4, 2025 13:37
* Implement LFC templates for RIOT

* Remove makefile from coap-federated example

* Refactor string formatting a little

* Fix RIOT makefile generation

---------

Co-authored-by: erlingrj <[email protected]>
* Generate generate.sh files to invoke lfc from a federate

* Spotless

---------

Co-authored-by: erlingrj <[email protected]>
@erlingrj erlingrj marked this pull request as ready for review February 6, 2025 11:55
Copy link
Contributor

Coverage after merging generate-fed-templates into main will be

70.57%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   action.c77.69%65.63%100%81.18%134–135, 24, 42–45, 48, 50–51, 54–56, 62–63, 70–72, 72, 72–75, 81–82, 93–94
   builtin_triggers.c90.91%70%100%96.77%14, 18, 40, 43
   connection.c77.33%51.16%100%86.73%10, 104, 11, 110, 123–124, 136–137, 14, 14, 143, 145–146, 148, 16–17, 21–22, 22, 22–23, 25, 27–28, 33, 48, 48, 48–49, 55, 60–62, 97
   environment.c82.18%60%92.31%86.76%12–13, 18, 20–21, 31, 35–36, 42–43, 59–60, 64–65, 97–99
   event.c95.35%92.86%100%96.15%14–15
   federated.c5.23%2.73%7.69%6.33%10, 100, 102, 104, 104, 104–105, 109, 11, 112–113, 113, 113–114, 116–117, 119, 123–124, 126–128, 13, 131, 133–138, 140–142, 145–147, 147, 147–148, 148, 148–149, 15, 15, 15, 150, 152, 155–156, 158–159, 16, 160–162, 164–169, 17, 171, 171, 171–174, 176, 176, 176–178, 178, 178–179, 18, 183–184, 184, 184, 187–188, 19, 19, 19, 192–194, 196, 196, 196, 198–202, 205, 205, 205–208, 211–212, 212, 212–213, 215–216, 219, 22, 220, 225–226, 226, 226–227, 229, 23, 231, 231, 231–234, 234, 234, 234, 234, 234–239, 24, 24, 24, 240–243, 243, 243–244, 246, 248–249, 25, 250–256, 26, 26, 26, 260, 263, 263, 263–265, 269, 27, 272–273, 273, 273, 273–279, 28, 280–281, 283, 289, 29, 29, 29, 290–291, 30, 30, 30, 30, 30, 303–304, 307–309, 31, 310, 312, 312, 312–313, 317–318, 318, 318, 320, 322–323, 323, 323–324, 324, 324–325, 325, 325–326, 326, 326–327, 327, 327–328, 328, 328–329, 329, 329, 33, 331, 331, 331–332, 332, 332–333, 333, 333–334, 334, 334–335, 335, 335, 337, 36, 36, 36, 36, 36–37, 41–42, 46–47, 49–52, 54, 54, 54–55, 55, 55, 57, 57, 57–59, 59, 59–61, 65–66, 70–71, 73–76, 78, 80, 80, 80–81, 81, 81–82, 82, 82–83, 83, 83, 86–87, 89–92, 94, 94, 94–97, 97, 97–98
   logging.c88.52%83.33%100%89.36%25, 38–40, 47, 60–61
   network_channel.c69.23%62.50%100%70.59%42, 42, 42, 47–50, 59
   port.c78.08%45.83%100%93.33%10, 10, 10, 16, 20, 25, 25–27, 27, 27–28, 39, 39, 39–40
   queues.c89.94%80.36%100%94.06%108, 113, 119, 21–23, 47–48, 60–61, 84–88, 91–92
   reaction.c71.19%54.55%100%79.71%15, 17, 21, 28–31, 31, 31–32, 42, 45, 47, 52–53, 53, 53–55, 55, 55–56, 73, 89–91, 91, 91–94, 94, 94–95
   reactor.c69.33%51.52%100%82.28%10, 101–102, 14–19, 22, 28, 30, 32–37, 37, 37–38, 38, 38, 43, 55, 58–59, 59, 59–60, 60, 60–61, 63, 77–78, 81–82, 82, 82–83, 83, 83–84, 86, 91
   serialization.c37.50%25%50%40%16–17, 26–27, 33–34, 34, 34–35, 37–38, 41–42, 42, 42–43, 45–46
   tag.c40.19%31.48%60%47.92%14, 14–15, 17, 17–18, 23–24, 24, 24, 24, 24–25, 27, 27, 27, 27, 27–28, 30, 30, 30–31, 33–34, 34, 34–35, 37, 37, 37, 37, 37–38, 40, 40, 40, 40, 40–41, 43, 53–54, 63, 63–64, 83–85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85–87, 89
   timer.c95%66.67%100%100%14, 25
   trigger.c100%100%100%100%
   util.c41.67%33.33%33.33%46.67%12–13, 13, 13–16, 18–20, 4–5
src/platform/posix
   posix.c54.95%35%66.67%57.89%100–101, 101, 101–103, 107, 16, 18, 20–21, 35–37, 39–41, 49–50, 55–60, 60, 60–63, 63, 63–65, 68, 79, 82, 93–95, 95, 95–97, 99
   tcp_ip_channel.c65.16%51.42%94.12%74.44%100, 103–104, 104, 104–105, 119–120, 122, 124, 128–129, 137, 140–141, 141, 141–142, 147–148, 148, 148–149, 155–156, 156, 156–158, 172, 175, 179, 179, 179, 179, 179–180, 180, 180–181, 181, 181–182, 184, 186, 186, 186–187, 196, 203–204, 208–209, 213, 213, 213–215, 215, 215–216, 218, 218, 218–219, 219, 219, 221, 223–224, 228, 228, 228–229, 249, 262–263, 263, 263–264, 270, 275–276, 276, 276–277,

@erlingrj erlingrj merged commit ba884f6 into main Feb 10, 2025
12 checks passed
@erlingrj erlingrj deleted the generate-fed-templates branch February 10, 2025 09:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants