diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 0000000000..490f98ac0c --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,8 @@ +Checks: > + bugprone-unhandled-self-assignment, + modernize-deprecated-headers, + modernize-redundant-void-arg, + modernize-use-bool-literals, + modernize-use-nullptr, + -clang-analyzer-security.insecureAPI.rand +WarningsAsErrors: '*' diff --git a/.dockerignore b/.dockerignore index 93be3edefd..fafe67ac58 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,6 @@ .git +.github +.dockerignore **.mdxml **/docs **build diff --git a/.github/actions/Dockerfile b/.github/actions/Dockerfile index 45ade8aad7..d85677fc20 100644 --- a/.github/actions/Dockerfile +++ b/.github/actions/Dockerfile @@ -10,4 +10,3 @@ USER fprime # Code file to execute when the docker container starts up (`entrypoint.sh`) ENTRYPOINT ["/entrypoint.sh"] - diff --git a/.github/actions/autodoc.bash b/.github/actions/autodoc.bash index c4ed48558d..1916638c9d 100755 --- a/.github/actions/autodoc.bash +++ b/.github/actions/autodoc.bash @@ -16,5 +16,5 @@ ${GITHUB_WORKSPACE}/docs/doxygen/generate_docs.bash git add -Af "${GITHUB_WORKSPACE}/docs" -git commit -m "Autodoc on $(date)" 1>/dev/null +git commit -m "Autodoc on $(date)" || echo "No new commits, pushing merge" git push "${REMOTE}" diff --git a/.github/actions/entrypoint.sh b/.github/actions/entrypoint.sh index 24f5c668e1..ea5a26541e 100755 --- a/.github/actions/entrypoint.sh +++ b/.github/actions/entrypoint.sh @@ -4,9 +4,9 @@ set -e set -x cd "$GITHUB_WORKSPACE" -if [ "$GITHUB_WORKFLOW" != "Autodocs" ] +if [ "$GITHUB_WORKFLOW" == "Autodocs" ] then - "$GITHUB_WORKSPACE/ci/master.bash" QUICK -else /autodoc.bash +else + "$GITHUB_WORKSPACE/ci/tests/$INPUT_TEST.bash" fi diff --git a/.github/actions/github-autodocs.yml b/.github/actions/github-autodocs.yml deleted file mode 100644 index d380ca3cbd..0000000000 --- a/.github/actions/github-autodocs.yml +++ /dev/null @@ -1,9 +0,0 @@ -name: 'fprime Automatic Documentation' -description: 'Runs continuous documentation updates on fprime' -runs: - using: 'docker' - image: 'Dockerfile' - entrypoint: '/autodoc.bash' -with: - github_token: ${{ secrets.GITHUB_TOKEN }} - diff --git a/.github/actions/github-ci-action.yml b/.github/actions/github-ci-action.yml deleted file mode 100644 index 058775f1b3..0000000000 --- a/.github/actions/github-ci-action.yml +++ /dev/null @@ -1,5 +0,0 @@ -name: 'F prime CI' -description: 'Runs continuous integration testing on F prime' -runs: - using: 'docker' - image: 'Dockerfile' diff --git a/.github/actions/spelling/excludes.txt b/.github/actions/spelling/excludes.txt index b28efcb7fa..a5ac436a9c 100644 --- a/.github/actions/spelling/excludes.txt +++ b/.github/actions/spelling/excludes.txt @@ -1,13 +1,10 @@ -ignore$ -/html/ (?:^|/)(?i)COPYRIGHT (?:^|/)(?i)LICEN[CS]E (?:^|/)vendor/ -^\.github/ -^Autocoders/Python/test/.*\.xml$ /doc/xml/ +/html/ /third-party/ -\.min\. +ignore$ \.bak$ \.bin$ \.dat$ @@ -23,6 +20,7 @@ ignore$ \.md5$ \.mdxml$ \.mdzip$ +\.min\. \.otf$ \.pdf$ \.png$ @@ -39,3 +37,9 @@ ignore$ \.xls$ \.xlsx$ \.xsd$ +^Autocoders/Python/test/.*\.xml$ +^Autocoders/Python/test/param1/test/ut/Tester\.hpp$ +^config/PolyDbImplCfg\.hpp$ +^config/PrmDbImplTesterCfg\.hpp$ +^RPI/settings\.ini$ +^\.github/ diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt index b0e1cb8eff..79e1ed6c12 100644 --- a/.github/actions/spelling/expect.txt +++ b/.github/actions/spelling/expect.txt @@ -21,11 +21,11 @@ ACTIVERATEGROUPIMPLCFG ACTIVERATEGROUPIMPLTESTER ACTIVETEXTLOGGERIMPL actools -acwrap acxz addoffset addon adminlist +adoc aeiouy afterstatinfo agg @@ -33,14 +33,12 @@ aheared ALLEXTERNALS alloc Alltypes -ALOG alphanums -ampc +ampcs amsmath aname ANamespace anotherchan -ANOTHEREVENT anotherparam apad api @@ -52,7 +50,7 @@ APPENDFILE apps aps apxs -aquat +AQuat AQueued arduino argc @@ -69,7 +67,7 @@ arijitdas arinc arity arpa -ASerialize +asciidoctor asm aspx ASTRING @@ -104,7 +102,6 @@ awt AYYYY backend backslashreplace -BADCHECKSUM baremetal BARETASKHANDLE baseclass @@ -112,15 +109,14 @@ basestring bashcompinit Bassic batchmode +bavail bbd bc bcm -BDRV BDV bfree bibtex Bies -BINDERROR bindir Bitfields bitmaps @@ -134,22 +130,19 @@ bodychars bodytext bools boolt +bootlin bootup brc bre bsd -BSerialize bslash buf -BUFFERACCEPTED -BUFFERACCUMULATOR BUFFERALLOCATE -BUFFERLOGGER BUFFERMANAGERCOMPONENTIMPLCFG BUFFERMGR -BUFFERTOOSMALL buffsize BUGLIST +bugprone builddir buildroot builtins @@ -157,16 +150,12 @@ bw bysource bytearray BYTEDRV -BYTESRECEIVED -BYTESRECV -BYTESSENT calcu callee callergraph callgraph caltech Campuzano -CANCELCOMMANDS capout carg caselessmatch @@ -202,6 +191,7 @@ chr chrono ci cin +cinttypes CIRCULARSTATE classdiagram classdoc @@ -210,13 +200,13 @@ classmethod classname classpath classtype +climits clion CLOCAL closedir CLOSEFILE cloudbees cls -cmak cmake cmath Cmdd @@ -224,16 +214,9 @@ CMDDISP CMDDISPATCHER CMDPACKET CMDREG -CMDRESPONSE -CMDRESPONSEIN cmds CMDSEQ -CMDSEQIN -CMDSEQUENCER -CMDSTARTED -CMDSTEPPED cmp -cn cnt cntx cobj @@ -243,12 +226,9 @@ colno COLORSTYLE colorwheel comlogger -COMMANDCOMPLETE COMMANDDISPATCHERIMPL COMMANDDISPATCHERIMPLCFG -COMMANDERROR commandline -COMMANDSEXECUTED commasepitem commonpath COMPACKET @@ -259,17 +239,17 @@ compxml COMSPLITTER concat config -CONFIGERROR configparser configurability configurator -Connectedoutput +cookiecutter cooldown coor coravy cosmosgen cout cov +Coverity CPHA Cpkt cplusplus @@ -291,13 +271,14 @@ Crosscompiling crt CRTSCTS cryptsoft -CSEQ Csharp +csignal CSIZE css cstat cstdarg cstddef +cstdint cstdio cstdlib CSTOPB @@ -315,11 +296,8 @@ curmsgs cuz cwd cxx -CYCLEIN CYCLEOUT -Cyg cygwin -czf daringfireball Daruwala DASSERT @@ -327,14 +305,12 @@ databinding datastore datetime dawbarton -Dbtestut DBUILD DCMAKE DDDTHH ddl ddmm Debian -decodeerror deconstructor deepcopy Deerin @@ -350,29 +326,30 @@ delitem deployables DEPRECATEDLIST deps +deque deregistration deser +Deserial deserialization deserialize deserialized deserializing dest DEVNULL -dfdc +DFL DFPRIME DGRAM +dhesikan DHTML diafile dictgen dicts dictvalue -differend +difflib diffs diles dinkel Dinstall -DIRECTORYCREATEERROR -DIRECTORYREMOVEERROR dirent dirname dirpath @@ -383,6 +360,7 @@ dll dlog dnp DNs +doall docbook dockerfile docset @@ -413,7 +391,6 @@ Doxywizard DPRIVATE DPROTECTED dropdown -DROPPEDPACKET drv drvipsocket drvsocketreadtask @@ -427,19 +404,16 @@ DSTUBBED DSYNC DTGT dtor -DUCKCOMP Duerschmid duey dumparch dumpobj DVI -Dvr DWN dylib EACCES EAGAIN eay -eb EBADF EBUSY ECLIPSEHELP @@ -467,6 +441,7 @@ EMSGSIZE ENAMETOOLONG endcode endcond +endfor endforeach endfunction endian @@ -476,7 +451,6 @@ endl endloc endswith enduml -enewcommand ENOENT ENOSPC ENOTDIR @@ -485,12 +459,12 @@ ENQUEUEX entrypoint enum enumchan -enumchanarg enumname enumparam eobj eol EPERM +eps EROFS errfile errmsg @@ -510,7 +484,6 @@ EVENTID eventname evr evt -ewcommand EXAMPLECOMPONENTIMPL excinfo exe @@ -519,62 +492,46 @@ exitcode expandtabs expr exprtokens -EXTN Fabcdef FADV fadvise FAKELOGGER fallocate +fallthrough fcheck fclose fcntl fd fdset -FDWN featuredarticles FEEDNAME +ffff fflush Ffs fgetc fgets -FH -FILECLOSED +fh filecmp -FILECRCFAILURE filedown FILEDOWNLINK FILEDOWNLINKCFG filefor FILEID -FILEINVALID -FILEMOVEERROR -FILENOTFOUND fileopen -FILEOPENERROR filepath -FILEREADERROR -FILERECEIVED -FILEREMOVEERROR filesize -FILESIZEERROR -FILESRECEIVED FILESTUBS filesystem -FILEUPLINK -FILEVALIDATIONERROR -FILEWRITEERROR finalizer findall fio Firefox -FIXME +fixme flist -FLUSHFILE FNDELAY fnmatch fno fns -followd FONTNAME FONTPATH FONTSIZE @@ -586,7 +543,10 @@ formatline foundin fpconfighpp FPGA +fpl FPL +fpp +fppi FPport fprim fprime @@ -595,9 +555,12 @@ fprintf fprofile fptr fputil +fpv +Fregoso frontend frox frsize +fsanitize fscanf fstream fstrength @@ -630,7 +593,6 @@ getcwd getdata getdefaultencoding getenv -getexample getextern gethostbyname gethostname @@ -672,12 +634,14 @@ GPINT gpio graphviz grayscales +grep grnd GROUNDINTERFACERULES groupadd groupdict groupmod gse +gsub gtags gtest GTestbase @@ -739,6 +703,7 @@ idl idx ieeetr iface +ifchange ifcomment ifdef iflag @@ -753,7 +718,6 @@ IJET imap ime img -Imm impl imple implgen @@ -775,7 +739,6 @@ inode inorder INPCK Inputline -INPUTPORT installable INSTALLDIR instanceof @@ -786,11 +749,7 @@ integertypename interoperability intlimits ints -INTSTARTERROR Inttype -INTWAITERROR -INVALIDMODE -INVALIDRECEIVEMODE invisi ioc ioctl @@ -813,7 +772,6 @@ isdigit isdir isequal isf -ISFA isfgen isfile isfpluginexec @@ -821,6 +779,7 @@ isfxmlwriter isgenerator ishii isinstance +isnan isoschematron isr ISREG @@ -862,6 +821,7 @@ joshuaa jpg jpl jplffs +jre jsdelivr JSO json @@ -901,6 +861,7 @@ lightyellow lindent lineno lineroo +lineterm linting linux LINUXSERIALDRIVER @@ -911,27 +872,20 @@ LJR ljust lkml lld -llu llvm -llx -LOADCOMMANDS loadfile localhost localtime LOCKGUARDTESTER +locs LOGASSERT LOGFILE -LOGFILECLOSED -LOGFILEOPENERROR -LOGFILEVALIDATIONERROR -LOGFILEWRITEERROR LOGGERRULES loglvl LOGPACKET logpath lon longdesc -LOQQUEUE Lps lpthread lrt @@ -945,7 +899,6 @@ LTIMER LTLT LVL lxml -lxr MACROFILE magicdraw mailto @@ -958,7 +911,6 @@ MAKEVAR malloc MALLOCALLOCATOR mallocator -Managerm Manglapus mathjax maxdepth @@ -986,7 +938,10 @@ membername memcheck memcmp memcpy +meminfo memname +memoization +memoize memoizing memset MEMTEST @@ -1000,6 +955,7 @@ methodstub microcontrollers microsoft middleware +mindepth MINGW mkdir mkdtemp @@ -1012,7 +968,6 @@ MML mname mngr modbus -MODESWITCHED MOSI MOVEFILE mpmcs @@ -1033,6 +988,7 @@ mstat mstring MTIME mtype +mul multiline multioptionals multirequired @@ -1060,6 +1016,7 @@ ncsl NDELAY ndiffs netdb +Netscape Netscape's newloc newroot @@ -1075,12 +1032,11 @@ nio NMEA nmsgs noargport -NOBUFFERS NOCOLOR NOCTTY +nodemon nogen nolog -NOLOGFILEOPENINITERROR nomagic nonblock noncomma @@ -1090,14 +1046,13 @@ Nop noreturn normalwidths normpath -NOSEQUENCEACTIVE -nosetests NOSIZE NOSPEC nostdlib notask notchars NOTFOUND +nothrow NOTYPE Nowicki npm @@ -1108,10 +1063,6 @@ NSPACES nukenewlines nullptr numargs -Numinput -NUMLOGGEDBUFFERS -Numoutput -NUMQUEUEDBUFFERS nums nxt objclass @@ -1124,15 +1075,14 @@ odo oflag okidocki oldeol +OMG OMG's onchange onlinepubs -OParg OPCODEBASE opcodes opendir -OPENERROR -OPENFILE +openjdk opengroup openpyxl openssl @@ -1164,12 +1114,10 @@ outdir outout overridable packetization +packetize packetized -PACKETOUTOFBOUNDS -PACKETOUTOFORDER -PACKETSDROPPED -PACKETSRECEIVED -PACKETSSENT +packetizer +Packetizing Paetz Pandian PARAMDOC @@ -1177,8 +1125,7 @@ params PARENB PARODD parseable -PARTITIONHUBCOMP -PASSIVEC +pathlib pathmaker pbuild pcmake @@ -1194,12 +1141,8 @@ pexpect php phtml pid -PINGIN -PINGLATEWARNINGS -PINGRETURN PINGSEND pinit -pipsetup pkill pkts plainnat @@ -1215,14 +1158,11 @@ pollpri POLYDB POLYDBCOMP POLYDBIMPL -POLYDBIMPLCFG popd popen portlist -PORTOPENED PORTOUT PORTSELECTOR -PORTSEQUENCESTARTED PORTSOUT posix ppandian @@ -1238,25 +1178,17 @@ preparse Prepends prepeneding pri +PRId printables printf println +PRIu prm PRMDB -PRMDBFULL PRMDBIMPL PRMDBIMPLTESTER -PRMDBIMPLTESTERCFG PRMDBLIMPLCFG -PRMFILELOADCOMPLETE -PRMFILEREADERROR -PRMFILESAVECOMPLETE -PRMFILEWRITEERROR -PRMIDADDED -PRMIDNOTFOUND -PRMIDUPDATED prmname -PRMSET probs PROGRAMLISTING proj @@ -1308,7 +1240,6 @@ qsf qtest qthelpproject quatchan -QUEUEFULL quickstart RAbrack radd @@ -1317,36 +1248,29 @@ Ramanan randtbl raspberrypi raspi -RATEGROUPCYCLESLIP RATEGROUPDRIVER RATEGROUPDRIVERIMPLTESTER RATEGROUPMEMBEROUT -RATEGROUPSTARTED RATELIMITERTESTER rb RBF Rce RCHILD rcs -Rcv rcvd RCVTIMEO RDONLY rdwr Readback readdir -READERROR readline readme readthedocs realloc realpath realtime -RECORDINVALID -RECORDMISMATCH recv Recvd -RECVERROR recvfrom reder refactor @@ -1359,6 +1283,7 @@ relaxng relpath REMOVEDIRECTORY REMOVEFILE +renewcommand reparse reserializing resname @@ -1368,10 +1293,8 @@ returncode revents rewinddir rfind -RGCYCLESLIPS RGD RGDRV -RGMAXTIME RHEL RHH ridgerun @@ -1411,8 +1334,9 @@ saxutils sbb SBF sbin +sbt +scanf sched -SCHEDIN schem schematron sclk @@ -1424,24 +1348,13 @@ sdd searchdata SEARCHENGINE segfault -SENDERROR sendfile -sendline SENDPARTIAL sendto seqgen -SEQRUNIN -SEQUENCECANCELED -SEQUENCECOMPLETE -SEQUENCELOADED -Sequencertestut -SEQUENCESCOMPLETED -SEQUENCETIMEOUT -SEQUENCEVALID serafin serializables serializer -serialns setaffinity setattr setbuf @@ -1452,15 +1365,9 @@ SETFL setinheritsched setitem SETLOGGING -SETMODE -setname setop -setopt -setoutput -SETPRM setprotocol setquaternion -setresult setschedparam setschedpolicy setsize @@ -1471,15 +1378,13 @@ settime settingsini settype setuptools -setval setw sev sface +sfregoso sgl SGN SHELLCOMMAND -SHELLCOMMANDFAILED -SHELLCOMMANDSUCCEEDED Shenker showinitializer shutil @@ -1500,7 +1405,6 @@ Smath SNDTIMEO snprintf sockaddr -SOCKETERROR SOCKETHELPER SOCKETIPDRIVER SOCKETIPDRIVERCFG @@ -1508,12 +1412,7 @@ SOCKETIPDRIVERTYPES SOCKETREADTASK socklen somechan -somechanarg -someenumchan -someenumchanarg SOMEEVENT -Someother -SOMEOTHEREVENT someparam sometask somevalue @@ -1531,8 +1430,8 @@ spidev splitext splitlines sprintf -SQL's Sqlite +SQL's sramanan srand srandom @@ -1555,8 +1454,9 @@ startswith startuml startword staticmethod +statfs statvfs -stdarg +STDC stddef stderr stdin @@ -1578,7 +1478,6 @@ stringbuffer stringchan stringified Stringify -stringop Stringpacket stringparam STRINGUTILS @@ -1676,14 +1575,13 @@ textui tfile tflat tfn +tgz thepihut Thhmmss thiscol thisfiledoesnotexist throwable timebase -TIMEBASEMISMATCH -TIMECONTEXTMISMATCH timedelta timedreceive timedsend @@ -1707,6 +1605,9 @@ TLMCHANIMPLCFG TLMCHANIMPLTESTER tlmname TLMPACKET +TLMPACKETIZER +TLMPACKETIZERCOMPONENTIMPLCFG +TLMPACKETIZERTYPES tlmval TLOG TML @@ -1718,6 +1619,8 @@ tmptokens tmptree tname tnum +toc +toclevels toctree todo TODOLIST @@ -1780,10 +1683,10 @@ uncomment undef undoc UNEXP -UNEXPECTEDCOMPLETION unexport unicode UNINIT +uniq unistd Unithem unittest @@ -1794,7 +1697,6 @@ upcalls upcase upfiles upl -UPLINKCANCELED upto URI url @@ -1820,7 +1722,9 @@ ve venv VERSIONED versioning +vfd VFILE +vfs vhd vhdl viewforum @@ -1829,9 +1733,13 @@ virtualbox virtualenv virtualization virtualized +vla vlist vm +vmstat +vmsize VMIN +vn vsnprintf VTIME vtype @@ -1848,6 +1756,7 @@ weakref website Werror Wextra +wget whitebox whitelist wiki @@ -1861,18 +1770,22 @@ workflow worklist workspaces wp -WRITEERROR writelines WRONLY +Wconversion +Wformat +Woverloaded +Wshadow +Wsign +Wundef wrs WSL -Wstrict -Wstringop www wx wxgui Xabcdefx xapian +xargs xcode xdf xdffe @@ -1892,9 +1805,11 @@ XPath xsh Xss Xvfb +xxxx XYZZY yacc yacgen yml yyyymmdd zsh +zu diff --git a/.github/actions/spelling/patterns.txt b/.github/actions/spelling/patterns.txt index a083dc6d4d..dff41acb2b 100644 --- a/.github/actions/spelling/patterns.txt +++ b/.github/actions/spelling/patterns.txt @@ -1,3 +1,5 @@ +# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns + # data urls "data:[^"]*" 'data:[^']*' @@ -23,8 +25,12 @@ xmi:id="[^"]*" # uuid: \b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b +# github hash +[a-f0-9]{40} + +# https://www.gnu.org/software/groff/manual/groff.html # man troff content -\\f[BCIP] +\\f[BCIPR] \&#x[AD]; value="(?:[0-9a-f]{1,2} )*" @@ -43,3 +49,6 @@ value="(?:[0-9a-f]{1,2} )*" # Tar archive items \b(?:\\n|)tar(?:\s+-[a-zA-Z]+|\s[a-z]+)+ + +# slashes after spaces are not in paths +LaTeX \\.* \\ diff --git a/.github/workflows/autodocs.yml b/.github/workflows/autodocs.yml index 5f93eba216..84d024cffc 100644 --- a/.github/workflows/autodocs.yml +++ b/.github/workflows/autodocs.yml @@ -7,11 +7,14 @@ on: jobs: build: name: Autodocumentation - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - - name: checkout - uses: actions/checkout@v2.0.0 + - uses: actions/checkout@v2 with: - fetch-depth: 5 - - uses: ./.github/actions/ - id: github-autodocs + fetch-depth: 0 + - name: Install fprime tools + run: pip3 install fprime-tools fprime-gds + - name: Setup Dependencies + run: sudo apt-get install doxygen + - name: Autodocs + run: .github/actions/autodoc.bash diff --git a/.github/workflows/build-test-macos.yml b/.github/workflows/build-test-macos.yml new file mode 100644 index 0000000000..2763e85363 --- /dev/null +++ b/.github/workflows/build-test-macos.yml @@ -0,0 +1,69 @@ +# This is a basic workflow to help you get started with Actions + +name: MacOS-CI + +# Controls when the action will run. Triggers the workflow on push or pull request +# events but only for the master branch +on: + push: + branches: [ master, devel ] + pull_request: + branches: [ master, devel, release/v3.0.0 ] + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + MacOS-Framework: + runs-on: macos-latest + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + - name: Install fprime tools + run: pip3 install fprime-tools fprime-gds + - name: F prime CI step + run: ./ci/tests/Framework.bash + # Archive the outputs + - name: 'Archive Logs' + uses: actions/upload-artifact@v2 + if: always() + with: + name: ci-framework-logs + path: ci-logs.tar.gz + retention-days: 5 + + MacOS-Ref: + runs-on: macos-latest + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + - name: Install fprime tools + run: pip3 install fprime-tools fprime-gds + - name: F prime CI step + run: ./ci/tests/Ref.bash + # Archive the outputs + - name: 'Archive Logs' + uses: actions/upload-artifact@v2 + if: always() + with: + name: ci-ref-logs + path: ci-logs.tar.gz + retention-days: 5 + + MacOS-Integration: + runs-on: macos-latest + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + - name: Install fprime tools + run: pip3 install fprime-tools fprime-gds + - name: Install coreutils + run: brew install coreutils + - name: F prime CI step + run: ./ci/tests/30-ints.bash + # Archive the outputs + - name: 'Archive Logs' + uses: actions/upload-artifact@v2 + if: always() + with: + name: ci-int-logs + path: ci-logs.tar.gz + retention-days: 5 diff --git a/.github/workflows/build-test-rpi.yml b/.github/workflows/build-test-rpi.yml new file mode 100644 index 0000000000..70ab0f8e2b --- /dev/null +++ b/.github/workflows/build-test-rpi.yml @@ -0,0 +1,65 @@ +# This is a basic workflow to help you get started with Actions + +name: RPI-CI + +# Controls when the action will run. Triggers the workflow on push or pull request +# events but only for the master branch +on: + push: + branches: [ master, devel ] + pull_request: + branches: [ master, devel, release/v3.0.0 ] + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + RPI: + runs-on: ubuntu-latest + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + - name: Install fprime tools + run: pip3 install fprime-tools fprime-gds + - name: Install RPI Toolchain + run: sudo git clone https://github.com/raspberrypi/tools.git /opt/rpi/tools + - name: F prime CI step + run: ./ci/tests/RPI.bash + - name: Copy Tests + run: mkdir -p artifact/RPI; cp -rp RPI/test RPI/build-artifacts artifact/RPI; cp -rp ci artifact + # Build Artifacts + - name: 'RPI Build Output' + uses: actions/upload-artifact@v2 + with: + name: rpi-build + path: artifact + retention-days: 5 + # Archive the outputs + - name: 'Archive Logs' + uses: actions/upload-artifact@v2 + if: always() + with: + name: rpi-logs + path: ci-logs.tar.gz + retention-days: 5 + + RPI-Integration: + runs-on: self-hosted + needs: RPI + steps: + - name: RPI Build Download + uses: actions/download-artifact@v2 + with: + name: rpi-build + - name: RPI Integration Tests + run: chmod +x RPI/build-artifacts/raspberrypi/bin/RPI; /bin/bash ci/tests/RPI-Ints.bash + # Archive the outputs + - name: 'Archive Logs' + uses: actions/upload-artifact@v2 + if: always() + with: + name: pi-int-logs + path: ci-logs.tar.gz + retention-days: 5 + - name: Clean-Up + if: always() + run: | + rm -rf $RUNNER_WORKSPACE diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 0de88466f9..7fab648f33 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -8,27 +8,114 @@ on: push: branches: [ master, devel ] pull_request: - branches: [ master, devel ] + branches: [ master, devel, release/v3.0.0 ] # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: - # This workflow contains a single job called "build" - build: - # The type of runner that the job will run on + Framework: + runs-on: ubuntu-latest + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + - name: Install fprime tools + run: pip3 install fprime-tools fprime-gds + - name: F prime CI step + run: ./ci/tests/Framework.bash + # Archive the outputs + - name: 'Archive Logs' + uses: actions/upload-artifact@v2 + if: always() + with: + name: ci-framework-logs + path: ci-logs.tar.gz + retention-days: 5 + + Ref: runs-on: ubuntu-latest + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + - name: Install fprime tools + run: pip3 install fprime-tools fprime-gds + - name: F prime CI step + run: ./ci/tests/Ref.bash + # Archive the outputs + - name: 'Archive Logs' + uses: actions/upload-artifact@v2 + if: always() + with: + name: ci-ref-logs + path: ci-logs.tar.gz + retention-days: 5 - # Steps represent a sequence of tasks that will be executed as part of the job + RPI: + runs-on: ubuntu-latest steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 - # Runs the CI action internal to the repository + - name: Install fprime tools + run: pip3 install fprime-tools fprime-gds + - name: Install RPI Toolchain + run: sudo git clone https://github.com/raspberrypi/tools.git /opt/rpi/tools - name: F prime CI step - uses: ./.github/actions/ - id: github-ci-action + run: ./ci/tests/RPI.bash # Archive the outputs - name: 'Archive Logs' uses: actions/upload-artifact@v2 + if: always() with: - name: ci-logs + name: ci-rpi-logs path: ci-logs.tar.gz retention-days: 5 + + Integration: + runs-on: ubuntu-latest + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + - name: Install fprime tools + run: pip3 install fprime-tools fprime-gds + - name: Setup Dependencies + run: sudo apt-get install valgrind + - name: F prime CI step + run: ./ci/tests/30-ints.bash + # Archive the outputs + - name: 'Archive Logs' + uses: actions/upload-artifact@v2 + if: always() + with: + name: ci-int-logs + path: ci-logs.tar.gz + retention-days: 5 + + Quality: + runs-on: ubuntu-latest + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + - name: Install fprime tools + run: pip3 install fprime-tools fprime-gds + - name: Setup Dependencies + run: | + sudo apt-get update + sudo apt-get install clang-tidy-12 + - name: General Static Analysis + run: | + fprime-util generate --ut -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_CXX_COMPILER=g++-10 -DCMAKE_CXX_CLANG_TIDY=clang-tidy-12 + fprime-util build --all --ut + - name: Flight Code Static Analysis + run: | + fprime-util generate -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_CXX_COMPILER=g++-10 -DCMAKE_CXX_CLANG_TIDY="clang-tidy-12;--config-file=$PWD/release.clang-tidy" + fprime-util build --all -j4 + + + CMake: + runs-on: ubuntu-latest + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + - name: Install fprime tools + run: pip3 install fprime-tools fprime-gds + - name: CMake Tests + working-directory: ./cmake/test + run: pytest diff --git a/.github/workflows/python-format.yml b/.github/workflows/python-format.yml new file mode 100644 index 0000000000..0cff8d0f85 --- /dev/null +++ b/.github/workflows/python-format.yml @@ -0,0 +1,17 @@ +name: Format Python + +on: [push, pull_request] +jobs: + format: + name: Format + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Setup Python 3.7 + uses: actions/setup-python@v2 + with: + python-version: 3.7 + - name: Check formatting + run: | + pip install black==21.6b0 + black --check --diff ./ \ No newline at end of file diff --git a/.github/workflows/spelling.yml b/.github/workflows/spelling.yml index 3bbc3f211b..bed7f151c1 100644 --- a/.github/workflows/spelling.yml +++ b/.github/workflows/spelling.yml @@ -13,19 +13,19 @@ on: types: ['opened', 'reopened', 'synchronize'] jobs: - build: + spelling: name: Spell checking - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: checkout-merge if: "contains(github.event_name, 'pull_request')" - uses: actions/checkout@v2.0.0 + uses: actions/checkout@v2 with: ref: refs/pull/${{github.event.pull_request.number}}/merge - fetch-depth: 5 - name: checkout - if: "!contains(github.event_name, 'pull_request')" - uses: actions/checkout@v2.0.0 + if: ${{ github.event_name == 'push' }} + uses: actions/checkout@v2 + - uses: check-spelling/check-spelling@v0.0.19 + id: spelling with: - fetch-depth: 5 - - uses: check-spelling/check-spelling@0.0.17-alpha + shortest_word: 2 diff --git a/.github/workflows/tutorial-support.yml b/.github/workflows/tutorial-support.yml new file mode 100644 index 0000000000..a83754a7b9 --- /dev/null +++ b/.github/workflows/tutorial-support.yml @@ -0,0 +1,41 @@ +# This is a basic workflow to help you get started with Actions + +name: tutorial-support + +# Controls when the action will run. +on: + # Triggers the workflow on push or pull request events but only for the devel branch + push: + branches: [ master, devel ] + pull_request: + branches: [ master ] + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + build: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: checkout latest GpsApp repo + uses: actions/checkout@v2 + with: + repository: fprime-community/gps-tutorial + path: ./gps-tutorial + + # Checks-out latest version of the fprime repo + - name: checkout latest fprime repo + uses: actions/checkout@v2 + with: + path: ./gps-tutorial/fprime + + # Build tutorial test + - name: Install fprime tools + run: pip3 install fprime-tools fprime-gds + - name: GPS Tutorial Build + working-directory: ./gps-tutorial/GpsApp + run: | + fprime-util generate + fprime-util build diff --git a/.gitignore b/.gitignore index f6133a0342..caaa882b73 100644 --- a/.gitignore +++ b/.gitignore @@ -76,5 +76,10 @@ GTestBase.* /Fw/Python/src/fprime.egg-info /Gds/src/fprime_gds.egg-info **/DefaultDict/serializable/* + +fprime-venv +xml +depend + /.idea/ /venv/ diff --git a/.lgtm.js b/.lgtm.js new file mode 100644 index 0000000000..41a02371c1 --- /dev/null +++ b/.lgtm.js @@ -0,0 +1 @@ +function appease_lgtm() {} diff --git a/.lgtm.yml b/.lgtm.yml index 07fe75b4a2..0abab1cf71 100644 --- a/.lgtm.yml +++ b/.lgtm.yml @@ -8,18 +8,19 @@ path_classifiers: - test: - - "/Gds/test" - - "/Fw/Python/test" docs: - - "/docs" + - docs queries: - # Not excluding any results right now because we want to be alerted for all issues and fixes - # In the future we may exclude depreciated code like ptf/ and Gds/src/wxgui/ - # - exclude: + - include: cpp/incorrect-not-operator-usage + - include: + tags: + - "correctness" + - include: + tags: + - "reliability" extraction: cpp: - prepare: + prepare: packages: - "python3" - "python3-pip" @@ -27,12 +28,12 @@ extraction: after_prepare: # setup the venv and install packages - "python3 -m venv ./fprime-venv" - - ". ./fprime-venv/bin/activate" + - ". ./fprime-venv/bin/activate" - "pip install fprime-tools fprime-gds" - configure: + configure: command: before_index: - "fprime-util generate" - index: + index: build_command: - "fprime-util build --all" diff --git a/Autocoders/MagicDrawCompPlugin/.aadlsettings b/Autocoders/MagicDrawCompPlugin/.aadlsettings deleted file mode 100644 index f55cf8ba89..0000000000 --- a/Autocoders/MagicDrawCompPlugin/.aadlsettings +++ /dev/null @@ -1,3 +0,0 @@ -#Tue Apr 03 09:49:30 PDT 2012 -source.directory=/src -model.directory=/ diff --git a/Autocoders/MagicDrawCompPlugin/.gitignore b/Autocoders/MagicDrawCompPlugin/.gitignore deleted file mode 100644 index 1465e99d26..0000000000 --- a/Autocoders/MagicDrawCompPlugin/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.settings -velocity.log -classes diff --git a/Autocoders/MagicDrawCompPlugin/.jetproperties b/Autocoders/MagicDrawCompPlugin/.jetproperties deleted file mode 100644 index cf694b2171..0000000000 --- a/Autocoders/MagicDrawCompPlugin/.jetproperties +++ /dev/null @@ -1,4 +0,0 @@ - - - templates - diff --git a/Autocoders/MagicDrawCompPlugin/.project b/Autocoders/MagicDrawCompPlugin/.project deleted file mode 100644 index 5bd7f59273..0000000000 --- a/Autocoders/MagicDrawCompPlugin/.project +++ /dev/null @@ -1,29 +0,0 @@ - - - MagicDrawCompPlugin - - - - - - org.eclipse.emf.codegen.JETBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.emf.codegen.jet.IJETNature - org.eclipse.jdt.core.javanature - - - - PATH - file:/Applications/AccuRev-4.9/bin - - - diff --git a/Autocoders/MagicDrawCompPlugin/.resourcebuilder.properties b/Autocoders/MagicDrawCompPlugin/.resourcebuilder.properties deleted file mode 100644 index 535c433e4d..0000000000 --- a/Autocoders/MagicDrawCompPlugin/.resourcebuilder.properties +++ /dev/null @@ -1,8 +0,0 @@ -#MagicDraw resource builder properties -#Fri Jun 07 13:52:58 PDT 2013 -ZIP_FILE=/Users/watney/Development/NGAT/ISF_Development/MagicDrawCompPlugin/ComponentAutocoder.zip -EMAIL= -PROVIDER=NASA Jet Propulsion Laboratory, California Institute of Technology -USER_EXPERT_LEVEL=USER_EXPERT_LEVEL_EXPERT -HOMEPAGE= -GROUP=NASA Jet Propulsion Laboratory, California Institute of Technology Resource diff --git a/Autocoders/MagicDrawCompPlugin/ComponentAi.vm b/Autocoders/MagicDrawCompPlugin/ComponentAi.vm deleted file mode 100644 index 8ba45ee367..0000000000 --- a/Autocoders/MagicDrawCompPlugin/ComponentAi.vm +++ /dev/null @@ -1,51 +0,0 @@ - - - - - -#foreach($portType in $Component.getPortDataList()) -#if($portType != "Serial") - ${portType}PortAi.xml -#end -#end -#set($dictItem = $Component.getIncludeCmdXML()) -#if($dictItem != "") - $dictItem -#end -#set($dictItem = $Component.getIncludeTlmXML()) -#if($dictItem != "") - $dictItem -#end -#set($dictItem = $Component.getIncludeEvrXML()) -#if($dictItem != "") - $dictItem -#end -#set($dictItem = $Component.getIncludeParamXML()) -#if($dictItem != "") - $dictItem -#end -#set($dictItem = $Component.getIncludeInternalIFXML()) -#if($dictItem != "") - $dictItem -#end -#set($dictItem = $Component.getIncludeHdrFile()) -#if($dictItem != "") - $dictItem -#end - - -#set($portHashList = $Component.getPortHashList()) -#foreach($baseName in $portHashList.keySet()) -#*---*##set($index = $portHashList.get($baseName).getIndex()) -#*---*##set($datatype = $portHashList.get($baseName).getDatatypeNamespace()) -#*---*##set($stereotype = $portHashList.get($baseName).getStereotype()) -#*---*##set($role = $portHashList.get($baseName).getRole()) -#*---*##set($priority = $portHashList.get($baseName).getPriority()) -#*---*##set($full = $portHashList.get($baseName).getFull()) - - - -#end - - - \ No newline at end of file diff --git a/Autocoders/MagicDrawCompPlugin/Demos/ISFRefApplication.mdxml b/Autocoders/MagicDrawCompPlugin/Demos/ISFRefApplication.mdxml deleted file mode 100644 index 24f4c94bbf..0000000000 --- a/Autocoders/MagicDrawCompPlugin/Demos/ISFRefApplication.mdxml +++ /dev/null @@ -1,13217 +0,0 @@ - - - - - - - - MagicDraw UML - 17.0.5 - - - - - - - - - - - - - - - - - - - MagicDraw UML - 17.0.5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _17_0_2_2_9120299_1421801732638_31517_28042 - _17_0_2_2_9120299_1421889201129_917271_28200 - _17_0_2_2_9120299_1421889201129_689894_28201 - _17_0_2_2_9120299_1422291751163_490320_26807 - _17_0_2_2_9120299_1422406033342_352146_28480 - _17_0_2_2_9120299_1423159979732_189618_27077 - _17_0_2_2_9120299_1421888908342_989053_28054 - _17_0_2_2_9120299_1421889201129_381138_28202 - _17_0_2_2_9120299_1421112952662_266695_28044 - _17_0_2_2_9120299_1422312959162_508959_26758 - _17_0_2_2_9120299_1422406347003_933019_28527 - _17_0_2_2_9120299_1422291678155_912607_26720 - _17_0_2_2_9120299_1420667847640_789343_27676 - _17_0_2_2_9120299_1421801272231_909569_28014 - _17_0_2_2_9120299_1422406347003_624812_28525 - _17_0_2_2_9120299_1422580262116_727342_28135 - _17_0_2_2_9120299_1422580262116_523226_28134 - _17_0_2_2_9120299_1422655034699_117367_28179 - _17_0_2_2_9120299_1422398718963_162109_28435 - _17_0_2_2_9120299_1422666964061_905236_28459 - _17_0_2_2_9120299_1420860175738_694056_27884 - _17_0_2_2_9120299_1421111134095_738264_27936 - _17_0_2_2_9120299_1421800469633_328890_27985 - _17_0_2_2_9120299_1422655122349_422968_28198 - _17_0_2_2_9120299_1423184735365_541960_28464 - _17_0_2_2_9120299_1422398543505_62491_28427 - _17_0_2_2_9120299_1422317551107_335645_28270 - _17_0_2_2_9120299_1421458978955_614954_27898 - _17_0_2_2_9120299_1422647705786_570427_28150 - _17_0_2_2_9120299_1422313008984_29731_26845 - _17_0_2_2_9120299_1422406033342_69014_28481 - _17_0_2_2_9120299_1422405483169_242870_28347 - _17_0_2_2_9120299_1421801885110_88989_28049 - _17_0_2_2_9120299_1420855188596_785642_26478 - _17_0_2_2_9120299_1422647470527_916467_28128 - _17_0_2_2_9120299_1421108503869_501245_27779 - _17_0_2_2_9120299_1421800376564_375315_27977 - _17_0_2_2_9120299_1422668507281_720682_28666 - _17_0_2_2_9120299_1422647705786_627698_28151 - _17_0_2_2_9120299_1422647705786_78045_28152 - _17_0_2_2_9120299_1422666964061_559974_28460 - _17_0_2_2_9120299_1422317551107_749806_28271 - _17_0_2_2_9120299_1422656045884_645592_28329 - _17_0_2_2_9120299_1421800425669_75907_27979 - _17_0_2_2_9120299_1420667847638_389452_27672 - _17_0_2_2_9120299_1421803400813_834306_28180 - _17_0_2_2_9120299_1421799641430_245752_26591 - _17_0_2_2_9120299_1422406033342_897849_28479 - _17_0_2_2_9120299_1420680380939_79198_27663 - _17_0_2_2_9120299_1422404369162_959184_28139 - _17_0_2_2_9120299_1421109840099_769197_27919 - _17_0_2_2_9120299_1422667572292_657845_28553 - _17_0_2_2_9120299_1423159979733_204637_27078 - _17_0_2_2_9120299_1422647470527_394114_28126 - _17_0_2_2_9120299_1422398929507_652975_28453 - _17_0_2_2_9120299_1421458932559_134210_27892 - _17_0_2_2_9120299_1422405306215_294497_28288 - _17_0_2_2_9120299_1422317457366_14866_28218 - _17_0_2_2_9120299_1422655122349_533412_28199 - _17_0_2_2_9120299_1420681376406_283256_27855 - _17_0_2_2_9120299_1422313008985_142308_26847 - _17_0_2_2_9120299_1421099290238_916035_27769 - _17_0_2_2_9120299_1420854889598_85433_26470 - _17_0_2_2_9120299_1422404268019_370073_28080 - _17_0_2_2_9120299_1422655122349_996774_28200 - _17_0_2_2_9120299_1422668819874_443390_28694 - _17_0_2_2_9120299_1422317436105_125511_28179 - _17_0_2_2_9120299_1420680570028_797014_27671 - _17_0_2_2_9120299_1422667445470_704178_28533 - _17_0_2_2_9120299_1421109806169_895065_27913 - _17_0_2_2_9120299_1422399555141_577302_28532 - _17_0_2_2_9120299_1422291751163_988161_26808 - _17_0_2_2_9120299_1421888834112_345649_28028 - _17_0_2_2_9120299_1422647470527_777864_28127 - _17_0_2_2_9120299_1423184561485_254892_28453 - _17_0_2_2_9120299_1422667506794_416266_28543 - _17_0_2_2_9120299_1422580262116_859175_28133 - _17_0_2_2_9120299_1422655895809_884284_28288 - _17_0_2_2_9120299_1422398897984_286331_28447 - _17_0_2_2_9120299_1422404908881_714492_28256 - _17_0_2_2_9120299_1421888278782_116836_28012 - _17_0_2_2_9120299_1420860088610_929271_27882 - _17_0_2_2_9120299_1420680453005_287316_27665 - _17_0_2_2_9120299_1421800505094_264835_27991 - _17_0_2_2_9120299_1421109045770_763666_27881 - _17_0_2_2_9120299_1422656227515_461708_28373 - _17_0_2_2_9120299_1421799592562_748332_26589 - _17_0_2_2_9120299_1421803574649_278456_28203 - _17_0_2_2_9120299_1422666964062_499198_28461 - _17_0_2_2_9120299_1422404470734_289604_28223 - _17_0_2_2_9120299_1422291751163_985806_26809 - _17_0_2_2_9120299_1422398661860_830991_28429 - _17_0_2_2_9120299_1422317551107_619515_28272 - _17_0_2_2_9120299_1422668432490_600434_28658 - _17_0_2_2_9120299_1421801570683_510336_28030 - _17_0_2_2_9120299_1421889015013_244627_28113 - _17_0_2_2_9120299_1422668819874_981755_28695 - _17_0_2_2_9120299_1423519164329_592828_28675 - _17_0_2_2_9120299_1422313008984_858500_26846 - _17_0_2_2_9120299_1420667847639_248286_27673 - _17_0_2_2_9120299_1423159979733_922319_27079 - _17_0_2_2_9120299_1422668819874_915559_28696 - _17_0_2_2_9120299_1421108925126_227274_27813 - _17_0_2_2_9120299_1421458860423_816892_27890 - _17_0_2_2_9120299_1423519191049_62617_28681 - _17_0_2_2_9120299_1422406347003_215615_28526 - _17_0_2_2_9120299_1422398776687_572224_28441 - _17_0_2_2_9120299_1420855156207_628180_26472 - _17_0_2_2_9120299_1422668311867_903297_28650 - _17_0_2_2_9120299_1422668207141_969617_28642 - _17_0_2_2_9120299_1422666455334_694019_28440 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _17_0_2_2_9120299_1421801732638_31517_28042 - _17_0_2_2_9120299_1426104359260_462339_28379 - _17_0_2_2_9120299_1428007065459_975344_28334 - _17_0_2_2_9120299_1422656227515_461708_28373 - _17_0_2_2_9120299_1428006258283_818102_27620 - _17_0_2_2_9120299_1428006258283_764432_27621 - _17_0_2_2_9120299_1426104106900_108242_28346 - _17_0_2_2_9120299_1421801885110_88989_28049 - _17_0_2_2_9120299_1421803574649_278456_28203 - _17_0_2_2_9120299_1428006711691_745909_54403 - _17_0_2_2_9120299_1420855188596_785642_26478 - _17_0_2_2_9120299_1420854889598_85433_26470 - _17_0_2_2_9120299_1422668507281_720682_28666 - _17_0_2_2_9120299_1426104290433_166058_28373 - _17_0_2_2_9120299_1426104127454_966623_28352 - _17_0_2_2_9120299_1428006258283_96352_27619 - _17_0_2_2_9120299_1428005578258_258815_27208 - _17_0_2_2_9120299_1426104065399_222658_28340 - _17_0_2_2_9120299_1421801272231_909569_28014 - _17_0_2_2_9120299_1421801570683_510336_28030 - _17_0_2_2_9120299_1428005979500_377546_27445 - _17_0_2_2_9120299_1422317436105_125511_28179 - _17_0_2_2_9120299_1426104254703_579085_28367 - _17_0_2_2_9120299_1428006711691_773158_54402 - _17_0_2_2_9120299_1428006711691_332633_54401 - _17_0_2_2_9120299_1428005801706_464096_27337 - _17_0_2_2_9120299_1428007214083_770571_82556 - _17_0_2_2_9120299_1428005514903_417959_27182 - _17_0_2_2_9120299_1428007214083_206335_82555 - _17_0_2_2_9120299_1426103856891_100976_28275 - _17_0_2_2_9120299_1426103675492_867572_28267 - _17_0_2_2_9120299_1428007214083_930367_82554 - _17_0_2_2_9120299_1420855156207_628180_26472 - _17_0_2_2_9120299_1421888278782_116836_28012 - _17_0_2_2_9120299_1426103809911_881114_28269 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _17_0_2_2_9120299_1366841320552_114823_26850 - - - magicdraw_uml_standard_profile_v_0001 - - - _11_5EAPbeta_be00301_1147434586638_637562_1900 - _17_0_2_136f03d9_1344498413266_378771_11852 - - - _12_0EAPbeta_be00301_1156851270584_552173_1 - _16_8beta_2104050f_1262918510515_114803_6875 - - - _10_5_8f90291_1141412747796_552778_939 - - - _17_0_2_2_9120299_1420667640889_760004_27641 - - - _17_0_2_2_9120299_1421801240437_368845_28013 - - - _17_0_2_2_9120299_1421111060945_698255_27935 - - - _17_0_2_2_9120299_1420854859517_77251_26469 - - - _17_0_2_2_9120299_1426103641743_963365_28266 - - - _17_0_2_2_9120299_1421099219564_106997_27768 - - - _17_0_2_2_9120299_1421458837010_310208_27889 - - - _17_0_2_2_9120299_1420860017654_937337_27881 - - - _17_0_2_2_9120299_1420680329782_37159_27662 - - - _17_0_2_2_9120299_1420667684631_647758_27643 - - - _17_0_2_2_9120299_1420668176265_196231_27703 - - - _17_0_2_2_9120299_1420860319917_640614_27890 - - - _17_0_2_2_9120299_1421799574865_399626_26588 - - - _17_0_2_2_9120299_1421800345057_387363_27976 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - H4sIAAAAAAAAAAMAAAAAAAAAAAA= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # -#Wed Jul 08 10:40:09 PDT 2015 -com.nomagic.magicdraw.uml_model.model=BINARY-52582ef5-1ee9-40f9-a03c-99d62369fc8c,BINARY-62a8c508-5bbb-4afa-9898-63dd12bb0e20 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5, 5, 1436, 896 - - - - - - - - FONT - FONT_DESCRIPTION - Arial - -