┌─┐ ┌─┐ ║"│ ║"│ └┬┘ └┬┘ ┌┼┐ ┌────────────┐ ┌────────────┐ ┌───────┐ ┌───────┐ ┌──────┐ ┌─────┐ ┌───────┐ ┌───────┐ ┌┼┐ │ │XXX CPU │ │YY TRX │ │Crypto │ │YYY │ │Data │ ┌──────┐ ┌───┐ ┌──────┐ │Fuel │ │Power │ │Power │ │ ┌┴┐ │(A! Chipset)│ │(A1 Chipset)│ │Chipset│ │Chipset│ │Logger│ │Buzzer│ │LED│ │Button│ │Gauge│ │Primary│ │Back-up│ ┌┴┐ User └──────┬─────┘ └──────┬─────┘ └───┬───┘ └───┬───┘ └───┬──┘ └───┬──┘ └─┬─┘ └───┬──┘ └──┬──┘ └───┬───┘ └───┬───┘ Officer │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╔═══════════════════════════════╗ │ │ │ │ │ │ │ │ │ │ │ ════════╪═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╪══════════════════════════════════════════════════════════════════════════════════════════════╣ PHYSICAL FEEDBACK SUB-ROUTINE ╠═══════════╪═════════════════════╪══════════════════╪══════════════════╪══════════════════╪════════════════╪════════════════╪═════════════════╪═════════════════╪══════════════════╪══════════════════╪═════════════════════════ │ │ ╚═══════════════════════════════╝ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╔═══════════════════════════╧══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╧═════════════════════╧══════════════════╧══════════════════╧══════════════════╧════════════════╧════════════════╧═════════════════╧═════════════════╧══════════════════╧══════════════════╧═════════╗ │ ║ ░║ │ ║This section provides details about the sub-routine <&loop-square>PHYSICAL FEEDBACK, the purpose of which is to provide haptic and/or visual feedback to the XXX User on behalf of the originating process. ║ │ ║The two-letter process code for this sub-routine is: pf. All variables created by the sub-routine are prefixed with pf. ║ │ ║The process that triggered this sub-routine is identified using the existing variable <&dollar>pfRequester, which was created by the originating process. ║ │ ║<&loop-square>PHYSICAL FEEDBACK generates the EDI message <&envelope-closed>T401, which includes the TSH (XXX Security Hash) element for added tamper detection during transmission. ║ │ ║ ║ │ ╚═══════════════════════════╤══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╤═════════════════════╤══════════════════╤══════════════════╤══════════════════╤════════════════╤════════════════╤═════════════════╤═════════════════╤══════════════════╤══════════════════╤═════════╝ pf-001 Receive task request from process <&dollar>pfRequester.┌┴┐ │ │ │ │ │ │ │ │ │ │ │ ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╔══════╤════════╪═╪═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╪══╗ │ │ │ │ │ │ │ │ │ │ │ ║ PAR │ │ │ │ ║ │ │ │ │ │ │ │ │ │ │ │ ╟──────┘ │ │ │ ║ │ │ │ │ │ │ │ │ │ │ │ ║ │ │ ────┐ │ ║ │ │ │ │ │ │ │ │ │ │ │ ║ │ │ │ pf-002 Set variable <&dollar>pfStart to current $prodTime. │ ║ │ │ │ │ │ │ │ │ │ │ │ ║ │ │ <───┘ │ ║ │ │ │ │ │ │ │ │ │ │ │ ║ │ │ │ ║ │ │ │ │ │ │ │ │ │ │ │ ║ │ │ ────┐ │ ║ │ │ │ │ │ │ │ │ │ │ │ ║ │ │ │ pf-003 Set variable <&dollar>pfStartRaw to current $prodUptime. │ ║ │ │ │ │ │ │ │ │ │ │ │ ║ │ │ <───┘ │ ║ │ │ │ │ │ │ │ │ │ │ │ ║ │ │ │ ║ │ │ │ │ │ │ │ │ │ │ │ ║ │ │ ────┐ │ ║ │ │ │ │ │ │ │ │ │ │ │ ║ │ │ │ pf-004 Clear and start timer $tmr(pf + "01"). │ ║ │ │ │ │ │ │ │ │ │ │ │ ║ │ │ <───┘ │ ║ │ │ │ │ │ │ │ │ │ │ │ ╚═══════════════╪═╪═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╪══╝ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╔═══════════════╪╤╪═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╪═════════════════════╪══════════════════╪══════════════════╪══════════════════╪════════════════╪════════════════╪═════════════════╪═════════════════╪════════════════╗ │ │ │ ║ EDI VARIABLES ││ │ │ │ │ │ │ │ │ │ ║ │ │ │ ╟────────────────┘│ ────┐ │ │ │ │ │ │ │ │ │ ║ │ │ │ ║ │ │ │ pf-005 Set variable <&dollar>pfEdiName to "T401". │ │ │ │ │ │ │ │ │ ║ │ │ │ ║ │ │ <───┘ │ │ │ │ │ │ │ │ │ ║ │ │ │ ║ │ │ │ │ │ │ │ │ │ │ │ ║ │ │ │ ║ │ │ ────┐ │ │ │ │ │ │ │ │ │ ║ │ │ │ ║ │ │ │ pf-006 Set variable <&dollar>pfEdiVersion to "01". │ │ │ │ │ │ │ │ │ ║ │ │ │ ║ │ │ <───┘ │ │ │ │ │ │ │ │ │ ║ │ │ │ ║ │ │ │ │ │ │ │ │ │ │ │ ║ │ │ │ ║ │ │ ────┐ ╔═════════════╧═════════════════════╧══════════════════╧══════════════════╧══════════════════╧════════════════╧════════════════╧═════════════════╧═════════════════╧════╗ ║ │ │ │ ║ │ │ │ pf-007 Set variable <&dollar>pfEdiStatus to "I". ║<&dollar>pfEdiStatus is set to "I" (Incomplete) until the sub-routine completes and writes the final ░║ ║ │ │ │ ║ │ │ <───┘ ║EDI message to Data Logger, at which time the status is changed to "C" (Complete). ║ ║ │ │ │ ╚═══════════════╪═╪═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝═══════════╝ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╔═══════════════╧════════════════╧════════════════╧═════════════════╧═════════════════╧══════════════════╧══════════════════╧══════════════════╗ │ │ │ │ │ │ │ ║TMH - XXX Message Header ░║ │ │ │ │ │ │ │ ║ ediName = <&dollar>pfEdiName ║ │ │ │ │ │ │ │ ║ ediVersion = <&dollar>pfEdiVersion ║ │ │ │ │ │ │ │ ║ ║ │ │ │ │ │ │ │ ║XXX Details ║ │ │ │ │ │ │ │ ║ prodId = <&dollar>prodId ║ │ │ │ │ │ │ │ ║ prodSession = <&dollar>prodSessionId ║ │ │ │ │ │ │ │ ║ timeBtOffset = <&dollar>btTimeOffset, if available; otherwise write ║ │ │ │ │ │ │ │ ║ timeAdjusted = timeClock + timeBtOffset, if time offset is available; otherwise write ║ │ │ │ pf-008 Create <&envelope-closed>T401 record and write data fields: ┌┴┐ ║ ║ │ │ │ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────>│ │ ║TPS - XXX Process Summary ║ │ │ │ │ │ │ │ │ ║ processId = pf ║ │ │ │ │ │ │ │ │ ║ processRequester = <&dollar>pfRequester ║ │ │ │ │ │ │ │ │ ║ processStart = <&dollar>pfStart ║ │ │ │ │ │ │ │ │ ║ processStartRaw = <&dollar>pfStartRaw ║ │ │ │ │ │ │ │ │ ║ processElapsed = ║ │ │ │ │ │ │ │ │ ║ processEnd = ║ │ │ │ │ │ │ │ │ ║ processEndRaw = ║ │ │ │ │ │ │ │ │ ║ ║ │ │ │ │ │ │ │ │ ║TMH - XXX Message Footer ║ │ │ │ │ │ │ │ │ ║ ediStatus = <&dollar>pfEdiStatus ║ │ │ │ │ │ │ └┬┘ ╚═══════════════╤════════════════╤════════════════╤═════════════════╤═════════════════╤══════════════════╤══════════════════╤══════════════════╝ │ │ │ pf-009 : OK. │ │ │ │ │ │ │ │ │ │ │ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╔═══╧══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╧═╧═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╧═════════════════════╧══════════════════╧══════════════════╧══════════════════╧════════════════╧════════════════╧═════════════════╧═════════════════╧══════════════════╧══════════════════╧════╗ ║The process activity unique to this sub-routine begins below this line. ░║ ╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╤═╤═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ ┌─┐ │XXX C│ │ │ │YY TRX │ │Crypto │ │YYY │ │Data │ │Buzzer│ │LED│ │Button│ │Fuel │ │Power │ │Power │ ┌─┐ ║"│ │(A! C│ │set)│ │(A1 Chipset)│ │Chipset│ │Chipset│ │Logger│ └──────┘ └───┘ └──────┘ │Gauge│ │Primary│ │Back-up│ ║"│ └┬┘ └─────│ │────┘ └────────────┘ └───────┘ └───────┘ └──────┘ └─────┘ └───────┘ └───────┘ └┬┘ ┌┼┐ │ │ ┌┼┐ │ │ │ │ ┌┴┐ │ │ ┌┴┐ └┬┘