-
Notifications
You must be signed in to change notification settings - Fork 72
cfe2cos, the mega-merge #333
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
base: ppos
Are you sure you want to change the base?
Changes from 131 commits
9388ff3
a5a4420
8214daa
01b1f19
5132ac3
4362aa2
545f25d
454243b
4087a1d
a06dab4
efcf1de
b365e98
0b80327
786ba2b
fdc75ab
449b2d6
1fce2f5
9a51c19
7ee5df4
b43d2ef
9258b1a
6077404
77bab05
69b4266
a532cec
e9b0183
ba48792
af7d350
313afb1
0884f59
12251d6
9690464
b75a93a
bc402ea
14552bd
60042be
ad69a1a
939e44e
62655e3
2ea12ed
323c382
3642436
1cc24c6
027e727
d8cdca3
2552fc0
a34e6d5
3d8a74b
bf8bd5d
8e15b2c
69938ee
30ea6b6
fa71ced
0d5c45e
a6f3148
f352952
f9f0c75
b9a0c8e
298660c
8ac36a6
75e0315
ba87ec9
6afe189
b3f3e78
9491cba
bfedf77
0a16241
5f3ae27
aef5c63
aa092ee
170a02f
8648c1d
9eb4bcc
32326a4
758dfdb
beab83b
40a9bb9
effa171
5a533f5
7146b84
5fc4f0f
4d650bc
6852394
0f5be70
205956c
cf43ad8
30bb538
01a70ef
381ab1a
232627d
437088d
f330c26
d91ab81
bea3a91
25c5e4a
742b4a3
5a5ba6e
7dd5112
6caddb5
06b7f8f
db97cdd
497f0eb
a5d45cb
9a366d8
3c91590
75af8e6
d2b1a6f
b34d539
993190f
4392a50
cf3f3a8
4c557d6
e743543
dcdddf1
a60b702
610cec6
12b3926
4b5be40
9993fdc
3a5920b
dbff2f5
71a8d17
9db1fba
02293f9
284585f
8e24b16
cb3b1ac
8622869
cd45f00
453b680
6fe1bb7
0aa12f3
aa50fd7
6bb6eb5
480e92c
badba1a
99dba05
edcdb78
bb134b1
16896bd
1fecd4a
1067a29
67fb31e
fc1095b
6869ec4
1913e01
939705b
80e6639
419497e
3b183d1
5df1cda
51051c8
6d5c47f
caf490c
acd7422
176901c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,6 @@ | ||
| [submodule "src/components/lib/ps"] | ||
| path = src/components/lib/ps | ||
| url = https://github.com/gwsystems/ps.git | ||
| [submodule "src/extern/cFE"] | ||
| path = src/extern/cFE | ||
| url = https://github.com/Others/cFE.git | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,9 +1,27 @@ | ||
| MAKEFLAGS=--no-print-directory --section-alignment 0x1000 -I$(PWD) | ||
| #$(info Make flags $(MAKEFLAGS)) | ||
|
|
||
| .PHONY: default all extern comps plat init_extern | ||
| default: | all cp | ||
|
|
||
| all: comps plat | ||
| all: | extern comps plat | ||
|
|
||
| extern: | ||
| $(info ) | ||
| $(info ***********************************************) | ||
| $(info *********** Building External Libs ************) | ||
| $(info ***********************************************) | ||
| $(info ) | ||
| $(shell cd extern && python make.py >&2) | ||
|
|
||
| init_extern: | ||
| $(info ) | ||
| $(info ***********************************************) | ||
| $(info ********** Setting up External Libs ***********) | ||
| $(info ***********************************************) | ||
| $(info ) | ||
| bash -c 'cd extern/cFE/; source setvars.sh; cd ../..; make -C extern/cFE/build/cpu1 config' | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We can hide all the python specific stuff inside a |
||
| $(shell cd extern && python make.py -p >&2) | ||
|
|
||
| comps: | ||
| $(info ) | ||
|
|
@@ -36,8 +54,12 @@ distclean: clean | |
| $(MAKE) $(MAKEFLAGS) -C components distclean | ||
| @rm -f `pwd`/../transfer/* | ||
|
|
||
| init: | ||
| init: | ensure_config init_extern init_composite | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Never used
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It sequences the dependencies |
||
|
|
||
| ensure_config: | ||
| test -f PLATFORM_ID || $(MAKE) $(MAKEFLAGS) config | ||
|
|
||
| init_composite: | ||
| $(MAKE) $(MAKEFLAGS) -C components init | ||
| $(MAKE) $(MAKEFLAGS) PLATFORM=$(shell cat PLATFORM_ID) -C platform init | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,7 +4,8 @@ IMPLDIR=$(CDIR)/implementation/ | |
| INTERDIR=$(CDIR)/interface/ | ||
| LIBDIR=$(CDIR)/lib/ | ||
| MANDITORY_LIB=cos_manditory.o | ||
| CINC=-I./ -I$(CDIR)/include/ -I$(SHAREDINC) -I$(CDIR)/lib/ck/include -I$(CDIR)/lib/ps/ -I$(CDIR)/lib/libcxx/include | ||
| # FIXME: Point the cFE includes at the actual cFE | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does this need to be done? |
||
| CINC=-I./ -I$(CDIR)/include/ -I$(SHAREDINC) -I$(CDIR)/lib/ck/include -I$(CDIR)/lib/ps/ -I$(CDIR)/lib/libcxx/include -I$(CDIR)/implementation/no_interface/cFE_booter/gen | ||
|
|
||
| MUSLDIR=$(CDIR)/lib/musl-1.1.11 | ||
| MUSLBIN=$(MUSLDIR)/bin | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| gen | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why another .gitignore in the same git repo?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's more flexible. We don't need super long paths in the top level
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I see. I'm not sure how this works, does git ignore files from both local .gitignore and the global repository .gitignore? |
||
| test | ||
| *.d.[0-9]* | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| # C_OBJS=cFE_entrypoint.o cFE_stub.o osapi.o osfiles.o osloader.o osqueue.o ostask.o ostimer.o osnetwork.o psp.o scheddev/sl.c scheddev/sl_mod_fprr.c | ||
| ASM_OBJS= | ||
| COMPONENT=cFE_booter.o | ||
| INTERFACES=cFE | ||
| DEPENDENCIES=capmgr | ||
| IF_LIB:=./composite_cFE.o ./cFE_fs.o $(wildcard test/*.o) | ||
| ADDITIONAL_LIBS=-lcobj_format -lcos_kernel_api -lcos_defkernel_api -lsl_capmgr -lsl_sched -lheap -lsl_lock | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I've added a macro for
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Awesome! That's very convenient
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Also wonder how it's working without |
||
|
|
||
| include ../../Makefile.subsubdir | ||
| CFLAGS += -I./gen -I ./test/shared $(CPPFLAGS) | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. don't think there's supposed to be a space between |
||
|
|
||
| MANDITORY_LIB=simple_stklib.o | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,117 @@ | ||
| #include <stdio.h> | ||
|
|
||
| #include <cos_component.h> | ||
| #include <cos_debug.h> | ||
| #include <cos_types.h> | ||
|
|
||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You said you want feedback on style so: no spaces between many of these.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We follow the std => cos => interface => cFE => internal header convention. Otherwise it becomes very confusing where each header is coming from. Especially since we have 5 header sources. Is this something the cos style guide takes a strong stance on? |
||
| #include <memmgr.h> | ||
|
|
||
| #include <cfe_error.h> | ||
|
|
||
| #include <cFE_emu.h> | ||
|
|
||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Too many blank lines in header inclusion.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We follow the std => cos => interface => cFE => internal header convention
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It would be better to have that as comments, so it's followed by others who change these files. These undocumented groupings may not be followed otherwise.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's just a convention we follow. Plus, that's like 4 comments on headers per file. That seems pretty extra, since most of composite groups headers similarly without comments. |
||
| union shared_region *shared_regions[16]; | ||
|
|
||
| int | ||
| emu_backend_request_memory(spdid_t client) | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. should it be
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We're already in the |
||
| { | ||
| vaddr_t our_addr = 0; | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. empty line after definitions |
||
| int id = memmgr_shared_page_alloc(&our_addr); | ||
| assert(our_addr); | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. style, separation of declarations | body | return. |
||
| shared_regions[client] = (void *)our_addr; | ||
| return id; | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. blank line before final return. |
||
| } | ||
|
|
||
| int32 | ||
| emu_CFE_EVS_Register(spdid_t client) | ||
| { | ||
| union shared_region *s = shared_regions[client]; | ||
| return CFE_EVS_Register(s->cfe_evs_register.filters, s->cfe_evs_register.NumEventFilters, | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same thing about blank line after definitions. Won't repeat too many times, to keep the comment # down. |
||
| s->cfe_evs_register.FilterScheme); | ||
| } | ||
|
|
||
| int32 | ||
| emu_CFE_SB_CreatePipe(spdid_t client) | ||
| { | ||
| union shared_region *s = shared_regions[client]; | ||
| return CFE_SB_CreatePipe(&s->cfe_sb_createPipe.PipeId, s->cfe_sb_createPipe.Depth, | ||
| s->cfe_sb_createPipe.PipeName); | ||
| } | ||
|
|
||
| void | ||
| emu_CFE_SB_InitMsg(spdid_t client) | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Are the shared regions shared with each application? (i.e. all shared regions are shared with all applications?)
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No. I didn't think they should be? |
||
| { | ||
| union shared_region *s = shared_regions[client]; | ||
| CFE_SB_InitMsg(s->cfe_sb_initMsg.MsgBuffer, s->cfe_sb_initMsg.MsgId, s->cfe_sb_initMsg.Length, | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If these are the demarshalling functions, they should likely be in
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can you explain what you mean by that? Isn't
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The functions on the client and server side of an invocation through an interface function should be in sstubs.c and cstubs.c in the interface. I'm not sure if that is what these are doing.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oh I had literally no idea sstubs was a thing. Hole in my knowledge corrected! Will fix. |
||
| s->cfe_sb_initMsg.Clear); | ||
| } | ||
|
|
||
| int32 | ||
| emu_CFE_EVS_SendEvent(spdid_t client) | ||
| { | ||
| union shared_region *s = shared_regions[client]; | ||
| return CFE_EVS_SendEvent(s->cfe_evs_sendEvent.EventID, s->cfe_evs_sendEvent.EventType, "%s", | ||
| s->cfe_evs_sendEvent.Msg); | ||
| } | ||
|
|
||
| int32 | ||
| emu_CFE_ES_RunLoop(spdid_t client) | ||
| { | ||
| union shared_region *s = shared_regions[client]; | ||
| return CFE_ES_RunLoop(&s->cfe_es_runLoop.RunStatus); | ||
| } | ||
|
|
||
| int32 | ||
| emu_CFE_SB_RcvMsg(spdid_t client) | ||
| { | ||
| union shared_region *s = shared_regions[client]; | ||
|
|
||
| CFE_SB_MsgPtr_t BufPtr; | ||
| int32 result = CFE_SB_RcvMsg(&BufPtr, s->cfe_sb_rcvMsg.PipeId, s->cfe_sb_rcvMsg.TimeOut); | ||
|
|
||
| /* We want to save the message contents to the shared region | ||
| * But we need to be sure there is something to copy, so we check the call was successful | ||
| */ | ||
| if (result == CFE_SUCCESS) { | ||
| int len = CFE_SB_GetTotalMsgLength(BufPtr); | ||
| assert(len <= EMU_BUF_SIZE); | ||
| memcpy(s->cfe_sb_rcvMsg.Msg, (char *)BufPtr, len); | ||
| } | ||
| return result; | ||
| } | ||
|
|
||
| uint16 | ||
| emu_CFE_SB_GetTotalMsgLength(spdid_t client) | ||
| { | ||
| union shared_region *s = shared_regions[client]; | ||
| return CFE_SB_GetTotalMsgLength(&s->cfe_sb_getMsgLen.Msg); | ||
| } | ||
|
|
||
| int32 | ||
| emu_CFE_SB_SendMsg(spdid_t client) | ||
| { | ||
| union shared_region *s = shared_regions[client]; | ||
| return CFE_SB_SendMsg((CFE_SB_MsgPtr_t)s->cfe_sb_msg.Msg); | ||
| } | ||
|
|
||
| uint16 | ||
| emu_CFE_SB_GetCmdCode(spdid_t client) | ||
| { | ||
| union shared_region *s = shared_regions[client]; | ||
| return CFE_SB_GetCmdCode((CFE_SB_MsgPtr_t)s->cfe_sb_msg.Msg); | ||
| } | ||
|
|
||
| CFE_SB_MsgId_t | ||
| emu_CFE_SB_GetMsgId(spdid_t client) | ||
| { | ||
| union shared_region *s = shared_regions[client]; | ||
| return CFE_SB_GetMsgId((CFE_SB_MsgPtr_t)s->cfe_sb_msg.Msg); | ||
| } | ||
|
|
||
|
|
||
| void | ||
| emu_CFE_SB_TimeStampMsg(spdid_t client) | ||
| { | ||
| union shared_region *s = shared_regions[client]; | ||
| CFE_SB_TimeStampMsg((CFE_SB_MsgPtr_t)s->cfe_sb_msg.Msg); | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,157 @@ | ||
| #include <string.h> | ||
|
|
||
| #include "cFE_util.h" | ||
| #include "ostask.h" | ||
|
|
||
| #include "gen/cfe_psp.h" | ||
| #include "gen/common_types.h" | ||
| #include "gen/osapi.h" | ||
|
|
||
| #ifdef UNIT_TESTS | ||
| #include "test/shared/ut_main_composite.h" | ||
| #endif | ||
|
|
||
| /* This is based on an old build technique, so we can ignore this warning. | ||
| * But I'm leaving it in, just in case we ever switch to cmake | ||
| */ | ||
|
|
||
| /* | ||
| * cfe_platform_cfg.h needed for CFE_ES_NONVOL_STARTUP_FILE, CFE_CPU_ID/CPU_NAME/SPACECRAFT_ID | ||
| * | ||
| * - this should NOT be included here - | ||
| * | ||
| * it is only for compatibility with the old makefiles. Including this makes the PSP build | ||
| * ONLY compatible with a CFE build using this exact same CFE platform config. | ||
| */ | ||
|
|
||
| #include "gen/cfe_platform_cfg.h" | ||
|
|
||
| extern void CFE_ES_Main(uint32 StartType, uint32 StartSubtype, uint32 ModeId, const char *StartFilePath); | ||
| extern void CFE_TIME_Local1HzISR(void); | ||
|
|
||
| #define CFE_ES_MAIN_FUNCTION CFE_ES_Main | ||
| #define CFE_TIME_1HZ_FUNCTION CFE_TIME_Local1HzISR | ||
|
|
||
| /* | ||
| * The classic build does not support static modules, | ||
| * so stub the ModuleInit() function out right here | ||
| */ | ||
| void | ||
| CFE_PSP_ModuleInit(void) | ||
| { | ||
| } | ||
|
|
||
| // "Magic" constants | ||
| #define CFE_PSP_CPU_NAME_LENGTH 32 | ||
| #define CFE_PSP_RESET_NAME_LENGTH 10 | ||
|
|
||
| /* | ||
| * Structure for the Command line parameters | ||
| * Stolen from the Linux psp_start function... | ||
| */ | ||
| struct CFE_PSP_CommandData_t { | ||
| char ResetType[CFE_PSP_RESET_NAME_LENGTH]; /* Reset type can be "PO" for Power on or "PR" for Processor Reset */ | ||
|
|
||
| uint32 SubType; /* Reset Sub Type ( 1 - 5 ) */ | ||
|
|
||
| char CpuName[CFE_PSP_CPU_NAME_LENGTH]; /* CPU Name */ | ||
|
|
||
| uint32 CpuId; /* CPU ID */ | ||
|
|
||
| uint32 SpacecraftId; /* Spacecraft ID */ | ||
| }; | ||
|
|
||
| void | ||
| command_line_set_defaults(struct CFE_PSP_CommandData_t *args) | ||
| { | ||
| strncpy(args->ResetType, "PO", 2); | ||
| args->SubType = 1; | ||
| args->CpuId = 1; | ||
| args->SpacecraftId = CFE_SPACECRAFT_ID; | ||
| } | ||
|
|
||
| // This must be global so that cos_init_delegate can read it | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. comment style. Won't make this comment repetitively to avoid tons of comments. |
||
| // TODO: Consider passing cos_init_delegate this data instead | ||
| uint32 reset_type; | ||
| struct CFE_PSP_CommandData_t args; | ||
|
|
||
| // This is the delegate function called by the scheduler | ||
| void | ||
| cos_init_delegate(void *data) | ||
| { | ||
| OS_printf("CFE_PSP: Doing PSP setup...\n"); | ||
|
|
||
| #ifdef UNIT_TESTS | ||
| OS_printf("Beginning unit tests\n"); | ||
| Composite_UT_oscore(); | ||
| Composite_UT_osfile(); | ||
| Composite_UT_osfilesys(); | ||
| Composite_UT_osloader(); | ||
| Composite_UT_osnetwork(); | ||
| Composite_UT_ostimer(); | ||
| OS_printf("End unit tests\n"); | ||
| #endif | ||
|
|
||
| /* | ||
| ** Initialize the statically linked modules (if any) | ||
| ** This is only applicable to CMake build - classic build | ||
| ** does not have the logic to selectively include/exclude modules | ||
| ** | ||
| ** This is useless until we support cmake | ||
| */ | ||
| CFE_PSP_ModuleInit(); | ||
|
|
||
| /* | ||
| ** Initialize the reserved memory | ||
| */ | ||
| CFE_PSP_InitProcessorReservedMemory(reset_type); | ||
|
|
||
| OS_printf("CFE_PSP: PSP setup successful!\n"); | ||
|
|
||
| OS_printf("CFE_PSP: Starting the cFE proper...\n"); | ||
| /* | ||
| ** Call cFE entry point. | ||
| */ | ||
| CFE_ES_MAIN_FUNCTION(reset_type, args.SubType, 1, CFE_ES_NONVOL_STARTUP_FILE); | ||
|
|
||
| OS_printf("CFE_PSP: cFE started, main thread sleeping\n"); | ||
|
|
||
| /* | ||
| ** Let the main thread sleep. | ||
| ** | ||
| ** OS_IdleLoop() will wait forever and return if | ||
| ** someone calls OS_ApplicationShutdown(TRUE) | ||
| */ | ||
| OS_IdleLoop(); | ||
|
|
||
| PANIC("Application was shutdown!"); | ||
| } | ||
|
|
||
| void | ||
| cos_init(void) | ||
| { | ||
| command_line_set_defaults(&args); | ||
|
|
||
| /* | ||
| ** Set the reset type | ||
| */ | ||
| if (strncmp("PR", args.ResetType, 2) == 0) { | ||
| reset_type = CFE_PSP_RST_TYPE_PROCESSOR; | ||
| OS_printf("CFE_PSP: Starting the cFE with a PROCESSOR reset.\n"); | ||
| } else { | ||
| reset_type = CFE_PSP_RST_TYPE_POWERON; | ||
| OS_printf("CFE_PSP: Starting the cFE with a POWER ON reset.\n"); | ||
| } | ||
|
|
||
| CFE_PSP_SpacecraftId = args.SpacecraftId; | ||
| CFE_PSP_CpuId = args.CpuId; | ||
| /* | ||
| ** Initialize the OS API | ||
| */ | ||
| OS_printf("CFE_PSP: Initializing the OS API...\n"); | ||
| OS_API_Init(); | ||
| OS_printf("CFE_PSP: The the OS API was successfully initialized!\n"); | ||
|
|
||
| OS_printf("CFE_PSP: Delegating to scheduler setup... \n"); | ||
| OS_SchedulerStart(&cos_init_delegate); | ||
| } | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be sourced from gwsystems instead?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No. This is not the cFE repository on gwsystems. (Which really should be changed back to
cFE2cos...) This cFE repo just has cFE code in it.