diff --git a/.gitignore b/.gitignore index cc19069..a4c2372 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ *~ .*.swp +*.bak Scratch +doxygen-awesome-css +External diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..d8da1e4 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "doxygen-awesome-css"] + path = doxygen-awesome-css + url = https://github.com/jothepro/doxygen-awesome-css.git diff --git a/CAD/BJ-Keyer.kicad_pcb b/CAD/BJ-Keyer.kicad_pcb index b49ddb9..ed19cb9 100644 --- a/CAD/BJ-Keyer.kicad_pcb +++ b/CAD/BJ-Keyer.kicad_pcb @@ -168,20 +168,19 @@ (net 86 "/Ext Right Paddle") (net 87 "Net-(J3-Pin_6)") (net 88 "/Mem 5") - (net 89 "Net-(R3-Pad1)") - (net 90 "Net-(R22-Pad2)") - (net 91 "Net-(S1-Pad3)") - (net 92 "Net-(S2-Pad3)") - (net 93 "Net-(S3-Pad3)") - (net 94 "Net-(S4-Pad3)") - (net 95 "Net-(J16-D-)") - (net 96 "Net-(J16-D+)") - (net 97 "Net-(J16-VCC)") - (net 98 "unconnected-(J16-SHIELD__1-PadSH2)") - (net 99 "unconnected-(J16-SHIELD__4-PadSH5)") - (net 100 "/SDA") - (net 101 "/SCL") - (net 102 "Net-(C22-Pad1)") + (net 89 "Net-(R22-Pad2)") + (net 90 "Net-(S1-Pad3)") + (net 91 "Net-(S2-Pad3)") + (net 92 "Net-(S3-Pad3)") + (net 93 "Net-(S4-Pad3)") + (net 94 "Net-(J16-D-)") + (net 95 "Net-(J16-D+)") + (net 96 "Net-(J16-VCC)") + (net 97 "unconnected-(J16-SHIELD__1-PadSH2)") + (net 98 "unconnected-(J16-SHIELD__4-PadSH5)") + (net 99 "/SDA") + (net 100 "/SCL") + (net 101 "Net-(C22-Pad1)") (footprint "Package_SO:SO-8_3.9x4.9mm_P1.27mm" (layer "F.Cu") (tstamp 02d5596c-6ae5-47b6-86a9-b676461dca6e) @@ -509,7 +508,7 @@ (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) (net 65 "Net-(U3-USBDP)") (pintype "passive") (tstamp df3b3a32-e392-4b20-88ed-929ef19df625)) (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) - (net 96 "Net-(J16-D+)") (pintype "passive") (tstamp 2e05bf7f-fcfc-4deb-b35a-3b52a5b1278b)) + (net 95 "Net-(J16-D+)") (pintype "passive") (tstamp 2e05bf7f-fcfc-4deb-b35a-3b52a5b1278b)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -816,7 +815,7 @@ (fp_line (start 1 0.625) (end -1 0.625) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 981efb0c-83a7-4123-996d-0ae0a38527f1)) (pad "1" smd roundrect (at -0.9125 0 180) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) - (net 89 "Net-(R3-Pad1)") (pintype "passive") (tstamp b1e3fa9d-a2e4-4e33-82c8-0276bc236c95)) + (net 1 "+5V") (pintype "passive") (tstamp b1e3fa9d-a2e4-4e33-82c8-0276bc236c95)) (pad "2" smd roundrect (at 0.9125 0 180) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) (net 42 "/Mem 1") (pintype "passive") (tstamp b2acbb9b-3a06-41dd-b171-b22eb6cacf11)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" @@ -924,7 +923,7 @@ (fp_line (start 1 0.625) (end -1 0.625) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 4018b7ee-c152-411d-a591-f341ea2d81ef)) (pad "1" smd roundrect (at -0.95 0) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 95 "Net-(J16-D-)") (pintype "passive") (tstamp 78eae378-8029-469f-a41a-e6d21d15a518)) + (net 94 "Net-(J16-D-)") (pintype "passive") (tstamp 78eae378-8029-469f-a41a-e6d21d15a518)) (pad "2" smd roundrect (at 0.95 0) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (net 14 "GNDA") (pintype "passive") (tstamp 188cdc25-0bd5-4ad8-b1bd-bf437709cdfb)) (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" @@ -1235,7 +1234,7 @@ (fp_line (start 1 0.625) (end -1 0.625) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp dbc1ef80-7dd4-4f1c-9a73-a414860504fc)) (pad "1" smd roundrect (at -0.9125 0 90) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) - (net 97 "Net-(J16-VCC)") (pintype "passive") (tstamp 0ed40fac-99cb-46bf-a206-f6ad54793d52)) + (net 96 "Net-(J16-VCC)") (pintype "passive") (tstamp 0ed40fac-99cb-46bf-a206-f6ad54793d52)) (pad "2" smd roundrect (at 0.9125 0 90) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) (net 67 "Net-(U3-CBUS3)") (pintype "passive") (tstamp 7e232bf4-c1b2-4a5b-8c0f-fcc46a211c2a)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" @@ -1289,7 +1288,7 @@ (fp_line (start 1 0.625) (end -1 0.625) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 1705de42-0269-47a4-9fa5-38e0cd1be584)) (pad "1" smd roundrect (at -0.9125 0 180) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) - (net 89 "Net-(R3-Pad1)") (pintype "passive") (tstamp 937cf1cf-b291-4ba9-94cd-8490bb297e54)) + (net 1 "+5V") (pintype "passive") (tstamp 937cf1cf-b291-4ba9-94cd-8490bb297e54)) (pad "2" smd roundrect (at 0.9125 0 180) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) (net 88 "/Mem 5") (pintype "passive") (tstamp 686e1c87-c6db-4634-a70e-c5638218690a)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" @@ -1490,7 +1489,7 @@ (fp_line (start 1 0.625) (end -1 0.625) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp f86702a8-d399-460a-81cc-91abd5a3db49)) (pad "1" smd roundrect (at -0.9125 0 180) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) - (net 89 "Net-(R3-Pad1)") (pintype "passive") (tstamp fe7b2c5a-46e6-4674-8be3-cfacaa6175d6)) + (net 1 "+5V") (pintype "passive") (tstamp fe7b2c5a-46e6-4674-8be3-cfacaa6175d6)) (pad "2" smd roundrect (at 0.9125 0 180) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) (net 39 "/Mem 4") (pintype "passive") (tstamp 72ec8b3e-69aa-4056-8c84-c373983fa643)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" @@ -1617,11 +1616,11 @@ (fp_circle (center -0.15 0) (end -0.07 0) (stroke (width 0.16) (type solid)) (fill none) (layer "F.Fab") (tstamp 7d4a269a-4d07-425c-bc1e-cbd12aa05eaf)) (pad "1" smd rect (at 0 0 180) (size 1.2 0.4) (layers "F.Cu" "F.Paste" "F.Mask") - (net 97 "Net-(J16-VCC)") (pinfunction "VCC") (pintype "passive") (tstamp 7fe95bb5-d77a-421c-a698-eb17fb4b78df)) + (net 96 "Net-(J16-VCC)") (pinfunction "VCC") (pintype "passive") (tstamp 7fe95bb5-d77a-421c-a698-eb17fb4b78df)) (pad "2" smd rect (at 0 0.65 180) (size 1.2 0.4) (layers "F.Cu" "F.Paste" "F.Mask") - (net 95 "Net-(J16-D-)") (pinfunction "D-") (pintype "passive") (tstamp a36f3fd6-d0aa-41fe-b5fb-ea04eb5869a3)) + (net 94 "Net-(J16-D-)") (pinfunction "D-") (pintype "passive") (tstamp a36f3fd6-d0aa-41fe-b5fb-ea04eb5869a3)) (pad "3" smd rect (at 0 1.3 180) (size 1.2 0.4) (layers "F.Cu" "F.Paste" "F.Mask") - (net 96 "Net-(J16-D+)") (pinfunction "D+") (pintype "passive") (tstamp 98c89935-0dc9-425a-8d58-0d1821bae928)) + (net 95 "Net-(J16-D+)") (pinfunction "D+") (pintype "passive") (tstamp 98c89935-0dc9-425a-8d58-0d1821bae928)) (pad "4" smd rect (at 0 1.95 180) (size 1.2 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (net 14 "GNDA") (pinfunction "ID") (pintype "passive") (tstamp 33540919-c5f2-4723-9277-42d85ba77f0b)) (pad "5" smd rect (at 0 2.6 180) (size 1.2 0.4) (layers "F.Cu" "F.Paste" "F.Mask") @@ -1629,13 +1628,13 @@ (pad "SH1" thru_hole oval (at -1.55 -2.2 180) (size 2.4 1.2) (drill oval 1.4 0.6) (layers "*.Cu" "*.Mask") (net 14 "GNDA") (pinfunction "SHIELD") (pintype "passive") (tstamp e66a8f88-e42e-4bf8-a83d-c3b34489c271)) (pad "SH2" thru_hole oval (at 0.55 -0.925 180) (size 2.1 1.05) (drill 0.65) (layers "*.Cu" "*.Mask") - (net 98 "unconnected-(J16-SHIELD__1-PadSH2)") (pinfunction "SHIELD__1") (pintype "no_connect") (tstamp 2a062463-571d-4565-95c8-a4969e3e6d49)) + (net 97 "unconnected-(J16-SHIELD__1-PadSH2)") (pinfunction "SHIELD__1") (pintype "no_connect") (tstamp 2a062463-571d-4565-95c8-a4969e3e6d49)) (pad "SH3" smd rect (at -1.55 1.3 180) (size 0.9 3) (layers "F.Cu" "F.Paste" "F.Mask") (net 14 "GNDA") (pinfunction "SHIELD__2") (pintype "passive") (tstamp 276efacc-9b15-4073-9b1a-a3a8d3cd5760)) (pad "SH4" thru_hole oval (at -1.55 4.8 180) (size 2.4 1.2) (drill oval 1.4 0.6) (layers "*.Cu" "*.Mask") (net 14 "GNDA") (pinfunction "SHIELD__3") (pintype "passive") (tstamp bdff8e28-458c-4dab-a5e8-5c3814b1409c)) (pad "SH5" thru_hole oval (at 0.55 3.525 180) (size 2.1 1.05) (drill 0.65) (layers "*.Cu" "*.Mask") - (net 99 "unconnected-(J16-SHIELD__4-PadSH5)") (pinfunction "SHIELD__4") (pintype "no_connect") (tstamp 3415b66d-fa2d-41aa-893a-dbc53152c674)) + (net 98 "unconnected-(J16-SHIELD__4-PadSH5)") (pinfunction "SHIELD__4") (pintype "no_connect") (tstamp 3415b66d-fa2d-41aa-893a-dbc53152c674)) (model "${KIPRJMOD}/3D-Models/CUI_DEVICES_UJ2-MIBH2-4-SMT.step" (offset (xyz -4.5 -5 2)) (scale (xyz 1 1 1)) @@ -2065,7 +2064,7 @@ (fp_line (start 1 0.625) (end -1 0.625) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp e3794604-af3d-4616-b2dd-e48763e49b9d)) (pad "1" smd roundrect (at -0.95 0) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 96 "Net-(J16-D+)") (pintype "passive") (tstamp ef4f5c6a-57dc-4969-b969-64a1797ade71)) + (net 95 "Net-(J16-D+)") (pintype "passive") (tstamp ef4f5c6a-57dc-4969-b969-64a1797ade71)) (pad "2" smd roundrect (at 0.95 0) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (net 14 "GNDA") (pintype "passive") (tstamp 7a50b10a-acbe-4b49-ad70-6fb7a7ecb8ae)) (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" @@ -2348,11 +2347,11 @@ (fp_circle (center -6.25 -2.25) (end -6.15 -2.25) (stroke (width 0.2) (type solid)) (fill none) (layer "F.Fab") (tstamp ed601a1c-fa56-4b6c-acd0-fe5c1425b3dc)) (pad "1" smd rect (at -4.55 -2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") - (net 91 "Net-(S1-Pad3)") (pintype "passive") (tstamp fc3a39ce-3b05-4173-bd2b-503f421b821d)) + (net 90 "Net-(S1-Pad3)") (pintype "passive") (tstamp fc3a39ce-3b05-4173-bd2b-503f421b821d)) (pad "2" smd rect (at -4.55 2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (net 36 "Net-(J3-Pin_3)") (pintype "passive") (tstamp b12ed3f9-5ffc-4958-8373-ae7cec0128af)) (pad "3" smd rect (at 4.55 -2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") - (net 92 "Net-(S2-Pad3)") (pinfunction "3") (pintype "passive") (tstamp 9b23294b-d779-4464-9fa0-8022d800a6c2)) + (net 91 "Net-(S2-Pad3)") (pinfunction "3") (pintype "passive") (tstamp 9b23294b-d779-4464-9fa0-8022d800a6c2)) (pad "4" smd rect (at 4.55 2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (net 36 "Net-(J3-Pin_3)") (pintype "passive") (tstamp ce6609e3-33f1-47f4-8ea5-e1cc94a4fe59)) (model "${KIPRJMOD}/3D-Models/CUI_DEVICES_TS04-66-85-BK-160-SMT.step" @@ -2408,7 +2407,7 @@ (pad "1" smd roundrect (at -0.9125 0 270) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) (net 18 "Net-(C20-Pad1)") (pintype "passive") (tstamp 01c0197d-feeb-4a1b-8093-1da18118796e)) (pad "2" smd roundrect (at 0.9125 0 270) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) - (net 90 "Net-(R22-Pad2)") (pintype "passive") (tstamp 4b58086d-3e69-4b4d-b8b9-5bb25fb70e1c)) + (net 89 "Net-(R22-Pad2)") (pintype "passive") (tstamp 4b58086d-3e69-4b4d-b8b9-5bb25fb70e1c)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2800,9 +2799,9 @@ (fp_line (start 0 7.92) (end 0 7.32) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp aba4971a-ab6c-48c8-af39-7a80865ac3fd)) (pad "1" thru_hole rect (at 0 0) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") - (net 100 "/SDA") (pinfunction "Pin_1") (pintype "passive") (tstamp 6bbb546e-c4e0-4357-978a-b6fde0ac9091)) + (net 99 "/SDA") (pinfunction "Pin_1") (pintype "passive") (tstamp 6bbb546e-c4e0-4357-978a-b6fde0ac9091)) (pad "2" thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") - (net 101 "/SCL") (pinfunction "Pin_2") (pintype "passive") (tstamp edcd3ab6-18b8-4421-835a-ad1c6c430d59)) + (net 100 "/SCL") (pinfunction "Pin_2") (pintype "passive") (tstamp edcd3ab6-18b8-4421-835a-ad1c6c430d59)) (pad "3" thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 1 "+5V") (pinfunction "Pin_3") (pintype "passive") (tstamp 03b9652d-0007-4fc0-93a0-d9a1a3bdbc1c)) (pad "4" thru_hole oval (at 0 7.62) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") @@ -2847,7 +2846,7 @@ (fp_circle (center 0 0) (end 1.5 0) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp cf3ede8c-4040-4c0f-88c1-9507e078ed82)) (pad "1" smd circle (at 0 0) (size 2 2) (layers "F.Cu" "F.Mask") - (net 90 "Net-(R22-Pad2)") (pinfunction "1") (pintype "passive") (tstamp 30d8911d-56b4-4dc8-aec5-e5e8b49981a1)) + (net 89 "Net-(R22-Pad2)") (pinfunction "1") (pintype "passive") (tstamp 30d8911d-56b4-4dc8-aec5-e5e8b49981a1)) ) (footprint "LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder" (layer "F.Cu") @@ -3183,7 +3182,7 @@ (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) (net 64 "Net-(U3-USBDM)") (pintype "passive") (tstamp 0f2a6868-a50d-46de-a79b-44f9577cfc9f)) (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) - (net 95 "Net-(J16-D-)") (pintype "passive") (tstamp 004980a8-5c99-44ea-baa1-76da2a60f155)) + (net 94 "Net-(J16-D-)") (pintype "passive") (tstamp 004980a8-5c99-44ea-baa1-76da2a60f155)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -3619,11 +3618,11 @@ (fp_line (start 3.4 7.4) (end 3.4 -2.4) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 7f9474d8-9968-4199-a92d-f6cc503f9bcf)) (pad "1" thru_hole rect (at 0 0 180) (size 1.8 1.8) (drill 1) (layers "*.Cu" "*.Mask") - (net 102 "Net-(C22-Pad1)") (pinfunction "1") (pintype "passive") (tstamp d3b8911e-2837-440c-a88d-9a0fa57d843e)) + (net 101 "Net-(C22-Pad1)") (pinfunction "1") (pintype "passive") (tstamp d3b8911e-2837-440c-a88d-9a0fa57d843e)) (pad "2" thru_hole circle (at 0 2.5 180) (size 1.8 1.8) (drill 1) (layers "*.Cu" "*.Mask") (net 19 "Net-(C21-Pad1)") (pinfunction "2") (pintype "passive") (tstamp fb0aabc5-b0cd-4fa3-8661-c4de3e20b8ff)) (pad "3" thru_hole circle (at 0 5 180) (size 1.8 1.8) (drill 1) (layers "*.Cu" "*.Mask") - (net 90 "Net-(R22-Pad2)") (pinfunction "3") (pintype "passive") (tstamp 63b21e5c-c8ea-43e9-90aa-aa0476e92d2e)) + (net 89 "Net-(R22-Pad2)") (pinfunction "3") (pintype "passive") (tstamp 63b21e5c-c8ea-43e9-90aa-aa0476e92d2e)) (pad "MP" thru_hole roundrect (at 3.3 -2.5 180) (size 4 3) (drill oval 2.1 1.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.25) (tstamp a2334b7d-1385-4baa-8d08-ab0e064ee077)) (pad "MP" thru_hole roundrect (at 3.3 7.5 180) (size 4 3) (drill oval 2.1 1.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.25) (tstamp 9f66edbb-789a-4413-948c-611e451aac74)) (zone (net 0) (net_name "") (layer "F.Cu") (tstamp 25a16326-561f-4bad-98a2-65f963d4edd1) (name "Copper Keep Out") (hatch full 0.508) @@ -3705,7 +3704,7 @@ (fp_line (start 1 0.625) (end -1 0.625) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp bdbd4632-82ef-49f4-b10e-04c8e22f74eb)) (pad "1" smd roundrect (at -0.9125 0 180) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) - (net 89 "Net-(R3-Pad1)") (pintype "passive") (tstamp 97461146-2d10-422b-b452-b631e3715527)) + (net 1 "+5V") (pintype "passive") (tstamp 97461146-2d10-422b-b452-b631e3715527)) (pad "2" smd roundrect (at 0.9125 0 180) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) (net 41 "/Mem 2") (pintype "passive") (tstamp 57f44d51-e705-4159-854e-4af89c67d0df)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" @@ -4142,11 +4141,11 @@ (fp_circle (center -6.25 -2.25) (end -6.15 -2.25) (stroke (width 0.2) (type solid)) (fill none) (layer "F.Fab") (tstamp a543081c-7248-4541-9bbc-ab65756ffeb9)) (pad "1" smd rect (at -4.55 -2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") - (net 92 "Net-(S2-Pad3)") (pintype "passive") (tstamp b899bad4-aac8-4868-aeb2-7a60b91123f8)) + (net 91 "Net-(S2-Pad3)") (pintype "passive") (tstamp b899bad4-aac8-4868-aeb2-7a60b91123f8)) (pad "2" smd rect (at -4.55 2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (net 37 "Net-(J3-Pin_4)") (pintype "passive") (tstamp 279eeaf6-6d88-4285-9a5d-c6367572a60e)) (pad "3" smd rect (at 4.55 -2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") - (net 93 "Net-(S3-Pad3)") (pinfunction "3") (pintype "passive") (tstamp 71fdeb8e-46c0-4742-9172-e96754f7ef98)) + (net 92 "Net-(S3-Pad3)") (pinfunction "3") (pintype "passive") (tstamp 71fdeb8e-46c0-4742-9172-e96754f7ef98)) (pad "4" smd rect (at 4.55 2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (net 37 "Net-(J3-Pin_4)") (pintype "passive") (tstamp 876dcb2d-7d28-440b-b15a-a75e04855f19)) (model "${KIPRJMOD}/3D-Models/CUI_DEVICES_TS04-66-85-BK-160-SMT.step" @@ -4257,11 +4256,11 @@ (fp_circle (center -6.25 -2.25) (end -6.15 -2.25) (stroke (width 0.2) (type solid)) (fill none) (layer "F.Fab") (tstamp cac6df34-88f2-40f8-8076-2ed4af52d34f)) (pad "1" smd rect (at -4.55 -2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") - (net 93 "Net-(S3-Pad3)") (pintype "passive") (tstamp 569f0dd9-a328-42f8-9851-fcd73f9c692a)) + (net 92 "Net-(S3-Pad3)") (pintype "passive") (tstamp 569f0dd9-a328-42f8-9851-fcd73f9c692a)) (pad "2" smd rect (at -4.55 2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (net 66 "Net-(J3-Pin_5)") (pintype "passive") (tstamp b6b39a6e-d698-4dea-acab-920ece1c41c6)) (pad "3" smd rect (at 4.55 -2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") - (net 94 "Net-(S4-Pad3)") (pinfunction "3") (pintype "passive") (tstamp bbf5bcf6-2217-4f2f-8428-907f0ff2d319)) + (net 93 "Net-(S4-Pad3)") (pinfunction "3") (pintype "passive") (tstamp bbf5bcf6-2217-4f2f-8428-907f0ff2d319)) (pad "4" smd rect (at 4.55 2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (net 66 "Net-(J3-Pin_5)") (pintype "passive") (tstamp 860b8d85-6c68-44bd-b036-acef3655bf22)) (model "${KIPRJMOD}/3D-Models/CUI_DEVICES_TS04-66-85-BK-160-SMT.step" @@ -5077,7 +5076,7 @@ (pad "2" smd rect (at -4.55 2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (net 35 "Net-(J3-Pin_2)") (pintype "passive") (tstamp c0610a24-229d-42e7-a297-b7c66f46a98f)) (pad "3" smd rect (at 4.55 -2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") - (net 91 "Net-(S1-Pad3)") (pinfunction "3") (pintype "passive") (tstamp 56c100a0-302c-4f8f-99cf-c2fab6ac39e5)) + (net 90 "Net-(S1-Pad3)") (pinfunction "3") (pintype "passive") (tstamp 56c100a0-302c-4f8f-99cf-c2fab6ac39e5)) (pad "4" smd rect (at 4.55 2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (net 35 "Net-(J3-Pin_2)") (pintype "passive") (tstamp e7f604a4-7a75-4704-a329-c8dda4b824c9)) (model "${KIPRJMOD}/3D-Models/CUI_DEVICES_TS04-66-85-BK-160-SMT.step" @@ -5367,7 +5366,7 @@ (fp_circle (center -6.25 -2.25) (end -6.15 -2.25) (stroke (width 0.2) (type solid)) (fill none) (layer "F.Fab") (tstamp 7f347f1c-3f0b-42e7-bbf4-f68f1153b863)) (pad "1" smd rect (at -4.55 -2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") - (net 94 "Net-(S4-Pad3)") (pintype "passive") (tstamp b9a7c095-5335-4078-9c78-4b35c2ce1d03)) + (net 93 "Net-(S4-Pad3)") (pintype "passive") (tstamp b9a7c095-5335-4078-9c78-4b35c2ce1d03)) (pad "2" smd rect (at -4.55 2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (net 87 "Net-(J3-Pin_6)") (pintype "passive") (tstamp 534c3633-5fc6-4ff9-9eb7-a3a745f27e63)) (pad "3" smd rect (at 4.55 -2.25) (size 2.1 1.4) (layers "F.Cu" "F.Paste" "F.Mask") @@ -5960,7 +5959,7 @@ (fp_line (start 1 0.625) (end -1 0.625) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 66fb8a2e-427c-4ed0-a6d1-17c5d2525a24)) (pad "1" smd roundrect (at -0.9125 0 180) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) - (net 89 "Net-(R3-Pad1)") (pintype "passive") (tstamp 742f9948-8ca5-4b73-b417-da59e930880d)) + (net 1 "+5V") (pintype "passive") (tstamp 742f9948-8ca5-4b73-b417-da59e930880d)) (pad "2" smd roundrect (at 0.9125 0 180) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902439) (net 40 "/Mem 3") (pintype "passive") (tstamp fa1c7ce9-f634-47ef-a23c-6547b4687683)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" @@ -6122,7 +6121,7 @@ (fp_line (start 1 0.625) (end -1 0.625) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp cefbf9ad-16a0-4e4b-8981-20d143b25d96)) (pad "1" smd roundrect (at -1 0 90) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083333333) - (net 102 "Net-(C22-Pad1)") (pintype "passive") (tstamp bc9894ae-6595-4889-8e52-1ab563332661)) + (net 101 "Net-(C22-Pad1)") (pintype "passive") (tstamp bc9894ae-6595-4889-8e52-1ab563332661)) (pad "2" smd roundrect (at 1 0 90) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083333333) (net 2 "GND") (pintype "passive") (tstamp 12e027ff-78bf-49fc-9c67-6fb46e3eded3)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" @@ -6331,9 +6330,9 @@ (pad "26" thru_hole oval (at 7.62 5.08 270) (size 1.6 1.6) (drill 0.8) (layers "*.Cu" "*.Mask") (net 63 "/Key") (pinfunction "PC3") (pintype "bidirectional") (tstamp a8237ed5-ccef-45f0-9449-bd688fb1bde2)) (pad "27" thru_hole oval (at 7.62 2.54 270) (size 1.6 1.6) (drill 0.8) (layers "*.Cu" "*.Mask") - (net 100 "/SDA") (pinfunction "PC4") (pintype "bidirectional") (tstamp 26033468-b650-4477-95f1-28ca4addf8f2)) + (net 99 "/SDA") (pinfunction "PC4") (pintype "bidirectional") (tstamp 26033468-b650-4477-95f1-28ca4addf8f2)) (pad "28" thru_hole oval (at 7.62 0 270) (size 1.6 1.6) (drill 0.8) (layers "*.Cu" "*.Mask") - (net 101 "/SCL") (pinfunction "PC5") (pintype "bidirectional") (tstamp 72adffe7-5d76-438f-ad2d-d54add73d9a5)) + (net 100 "/SCL") (pinfunction "PC5") (pintype "bidirectional") (tstamp 72adffe7-5d76-438f-ad2d-d54add73d9a5)) (model "${KICAD6_3DMODEL_DIR}/Package_DIP.3dshapes/DIP-28_W7.62mm.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -6631,7 +6630,7 @@ (fp_line (start 1.6 0.8) (end -1.6 0.8) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 63c22381-94e5-42c2-b4b0-cac7c71fb6e2)) (pad "1" smd roundrect (at -1.5625 0 270) (size 1.325 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.1886792453) - (net 102 "Net-(C22-Pad1)") (pintype "passive") (tstamp 2e71afc4-afee-4653-88f4-84db6519e3fa)) + (net 101 "Net-(C22-Pad1)") (pintype "passive") (tstamp 2e71afc4-afee-4653-88f4-84db6519e3fa)) (pad "2" smd roundrect (at 1.5625 0 270) (size 1.325 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.1886792453) (net 21 "Net-(C22-Pad2)") (pintype "passive") (tstamp 15b589b7-cbca-4d56-bb43-4160a0be45e5)) (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_1206_3216Metric.wrl" @@ -7540,6 +7539,7 @@ ) (segment (start 18.2861 70.5085) (end 18.288 70.5104) (width 0.5) (layer "F.Cu") (net 1) (tstamp 01c0b4f3-273f-4026-a73b-f3d477c49a6f)) + (segment (start 25.3492 25.654) (end 23.7725 25.654) (width 0.25) (layer "F.Cu") (net 1) (tstamp 07005c9d-ee7a-4d04-9c8a-3409e746a6b1)) (segment (start 6.4516 70.5104) (end 18.288 70.5104) (width 1) (layer "F.Cu") (net 1) (tstamp 0cb1f34e-e745-40ee-8759-044f6a143670)) (segment (start 9.2964 4.6228) (end 29.6463 4.6228) (width 1) (layer "F.Cu") (net 1) (tstamp 12182b1b-2c04-475c-b0ea-dec5add6c8f3)) (segment (start 72.009 47.857) (end 69.955 49.911) (width 1) (layer "F.Cu") (net 1) (tstamp 1520a050-f3ff-4fb9-92ae-f9d36a98ffe1)) @@ -7551,10 +7551,12 @@ (segment (start 63.6016 70.5104) (end 65.532 68.58) (width 1) (layer "F.Cu") (net 1) (tstamp 2a72f026-dde2-465e-b106-007ca19b7b23)) (segment (start 68.4276 39.2176) (end 69.6214 39.2176) (width 0.5) (layer "F.Cu") (net 1) (tstamp 2efa560e-b7eb-4b93-9c60-f0f879cd6cb4)) (segment (start 44.45 37.2872) (end 45.6692 38.5064) (width 0.5) (layer "F.Cu") (net 1) (tstamp 2f4196f4-69c9-4d9c-9bc8-20431dccabc8)) + (segment (start 23.749 22.352) (end 23.749 22.853074) (width 0.25) (layer "F.Cu") (net 1) (tstamp 3296dbb7-3933-4b69-a6c2-e36e285bf123)) (segment (start 69.6214 39.2176) (end 72.009 36.83) (width 0.5) (layer "F.Cu") (net 1) (tstamp 36afe06b-3511-443c-8442-d16ee63cef7d)) (segment (start 56.2826 18.8976) (end 59.817 18.8976) (width 0.25) (layer "F.Cu") (net 1) (tstamp 3a26817a-15fa-4d23-827a-0b53bf0e6fd2)) (segment (start 66.68 58.42) (end 65.278 58.42) (width 1) (layer "F.Cu") (net 1) (tstamp 49a2c2ee-3e04-444c-beb2-5f6422c0ead9)) (segment (start 43.6372 37.2872) (end 44.45 37.2872) (width 0.5) (layer "F.Cu") (net 1) (tstamp 4b4045f9-29be-4fee-b91a-e7e4900651ec)) + (segment (start 30.5308 20.6756) (end 20.9296 20.6756) (width 0.25) (layer "F.Cu") (net 1) (tstamp 4f8a59ba-6c97-4019-b027-525571238afa)) (segment (start 21.9744 66.9544) (end 22.7872 66.1416) (width 0.5) (layer "F.Cu") (net 1) (tstamp 4fc2bba2-0a6a-41dc-a124-0cad153fabc8)) (segment (start 35.9868 6.0756) (end 34.793 7.2694) (width 1) (layer "F.Cu") (net 1) (tstamp 519752a2-12c6-421f-ab04-d21397618063)) (segment (start 34.793 7.2694) (end 34.793 9.7695) (width 1) (layer "F.Cu") (net 1) (tstamp 5376a490-fb0d-4fdf-a827-be9f7378f6cc)) @@ -7567,14 +7569,19 @@ (segment (start 72.009 29.995726) (end 72.007326 29.995726) (width 1) (layer "F.Cu") (net 1) (tstamp 756cfc67-cfea-48ea-88e3-090a8238f525)) (segment (start 34.4932 60.706) (end 34.039672 60.706) (width 0.5) (layer "F.Cu") (net 1) (tstamp 7575d3d8-6ea7-4a75-9e55-92885ddf61bf)) (segment (start 32.9692 70.5104) (end 63.6016 70.5104) (width 1) (layer "F.Cu") (net 1) (tstamp 75f2ee7c-ca87-489d-9b03-41a0b6985737)) + (segment (start 23.7725 35.56) (end 25.2984 35.56) (width 0.25) (layer "F.Cu") (net 1) (tstamp 77718d50-9f0c-48f1-9e34-382e340e0fa4)) (segment (start 31.9024 20.6756) (end 31.9024 12.6601) (width 0.25) (layer "F.Cu") (net 1) (tstamp 81a7a464-d369-45f0-beb9-596035ac1728)) + (segment (start 23.796 28.956) (end 25.3492 28.956) (width 0.25) (layer "F.Cu") (net 1) (tstamp 822be2ef-b7bf-45f7-bbdb-3760644fcd94)) (segment (start 5.802 36.79) (end 9.358 36.79) (width 1) (layer "F.Cu") (net 1) (tstamp 83517690-d51e-40b4-bccb-fde1275d754b)) (segment (start 56.261 18.876) (end 52.832 18.876) (width 0.25) (layer "F.Cu") (net 1) (tstamp 83b8bd9f-deeb-4182-a962-afda420cc017)) (segment (start 9.358 10.533994) (end 9.2964 10.472394) (width 1) (layer "F.Cu") (net 1) (tstamp 851243eb-4929-4110-9343-7afe6bc7286e)) (segment (start 18.288 70.5104) (end 32.9692 70.5104) (width 1) (layer "F.Cu") (net 1) (tstamp 873e36df-5a23-4a2d-b34e-011924ccc011)) (segment (start 48.758 22.95) (end 48.758 23.632) (width 0.25) (layer "F.Cu") (net 1) (tstamp 9518909a-7e17-477c-8ec4-44f94ff64ddc)) (segment (start 72.009 36.83) (end 72.009 29.995726) (width 1) (layer "F.Cu") (net 1) (tstamp 9788f174-e2c6-439c-908e-accf0f5dcd01)) + (segment (start 25.2984 32.258) (end 25.3492 32.3088) (width 0.25) (layer "F.Cu") (net 1) (tstamp 9dec81c1-ce61-4e42-92cf-f0b156b527a8)) (segment (start 32.9692 61.674872) (end 32.9692 70.5104) (width 0.5) (layer "F.Cu") (net 1) (tstamp 9fcff212-a13a-4c74-8377-fc6959f54404)) + (segment (start 20.4216 21.1836) (end 20.4216 22.352) (width 0.25) (layer "F.Cu") (net 1) (tstamp a249bfa0-a155-4f3d-8900-c31da16a2c46)) + (segment (start 20.9296 20.6756) (end 20.4216 21.1836) (width 0.25) (layer "F.Cu") (net 1) (tstamp a31f0afd-6e52-4a05-8bbd-cab37f5be307)) (segment (start 65.532 68.58) (end 69.596 68.58) (width 1) (layer "F.Cu") (net 1) (tstamp a3f7e8ac-3436-45d4-99e8-e65e663e198b)) (segment (start 65.278 68.326) (end 65.532 68.58) (width 0.5) (layer "F.Cu") (net 1) (tstamp a468b564-c49e-46f6-bc22-b9ef78f3e0a2)) (segment (start 9.358 36.79) (end 9.358 10.533994) (width 1) (layer "F.Cu") (net 1) (tstamp a84602ad-6516-4795-970d-5ab1311caf04)) @@ -7583,6 +7590,7 @@ (segment (start 67.288 52.578) (end 69.955 49.911) (width 1) (layer "F.Cu") (net 1) (tstamp b54b1c01-c4b9-45ac-a6e6-5a2762b840a7)) (segment (start 51.6636 7.366) (end 51.6636 9.8044) (width 1) (layer "F.Cu") (net 1) (tstamp b65570c2-557a-4676-be9a-0cca6de45f36)) (segment (start 50.3732 6.0756) (end 49.3776 6.0756) (width 1) (layer "F.Cu") (net 1) (tstamp be0c5061-8e25-43ef-b41b-6786cf9f519c)) + (segment (start 23.749 32.258) (end 25.2984 32.258) (width 0.25) (layer "F.Cu") (net 1) (tstamp bebdbea6-ab80-48c0-991d-dc5d0b182e73)) (segment (start 9.2964 10.472394) (end 9.2964 4.6228) (width 1) (layer "F.Cu") (net 1) (tstamp c1ae5d94-b6f9-4d3f-a9fe-d8c8454417d8)) (segment (start 72.007326 29.995726) (end 68.858627 26.847027) (width 1) (layer "F.Cu") (net 1) (tstamp c42df000-0411-439e-ae0d-ed1b3fa475da)) (segment (start 56.261 18.876) (end 56.2826 18.8976) (width 0.25) (layer "F.Cu") (net 1) (tstamp c49078db-637c-41da-9a83-13b13736bf1c)) @@ -7593,19 +7601,35 @@ (segment (start 52.832 18.876) (end 48.758 22.95) (width 0.25) (layer "F.Cu") (net 1) (tstamp ce3def18-8a18-403b-b016-b7d86f8ccfd6)) (segment (start 18.2861 66.9544) (end 18.2861 70.5085) (width 0.5) (layer "F.Cu") (net 1) (tstamp d8d5d2ce-f167-4512-8d33-49a2139a1c2a)) (segment (start 4.6228 37.9692) (end 4.6228 68.6816) (width 1) (layer "F.Cu") (net 1) (tstamp dec9a86b-694c-40ea-bf73-464fceab1d07)) + (segment (start 25.2984 35.56) (end 25.3492 35.5092) (width 0.25) (layer "F.Cu") (net 1) (tstamp e165c5d2-3dfc-4099-b32f-03f562d8bf70)) (segment (start 10.4756 39.33) (end 12.528 39.33) (width 1) (layer "F.Cu") (net 1) (tstamp e523d883-0106-4fc6-b370-e7a47004784f)) + (segment (start 23.749 22.853074) (end 22.716837 23.885237) (width 0.25) (layer "F.Cu") (net 1) (tstamp e99413f4-246a-4ad1-a3d7-5c7f367731a3)) (segment (start 49.276 10.4686) (end 50.9994 10.4686) (width 1) (layer "F.Cu") (net 1) (tstamp f1e234aa-5af4-4899-9386-9ce211ba18e5)) (segment (start 33.988872 60.6552) (end 32.9692 61.674872) (width 0.5) (layer "F.Cu") (net 1) (tstamp f3a919ce-d202-4fdd-93e9-a9df0b185a3c)) (segment (start 48.879027 26.847027) (end 48.641 26.609) (width 1) (layer "F.Cu") (net 1) (tstamp f6c2f40c-099f-417f-b46c-7b61dcf49533)) (segment (start 49.3776 6.0756) (end 35.9868 6.0756) (width 1) (layer "F.Cu") (net 1) (tstamp f9c0f136-7bf2-4856-9425-f847c00ba8f4)) (segment (start 4.6228 68.6816) (end 6.4516 70.5104) (width 1) (layer "F.Cu") (net 1) (tstamp fa0f920d-85b0-4bda-9080-8a1c9e7ee07e)) + (via (at 20.4216 22.352) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 1) (tstamp 2ff41c0b-d875-4dd4-a04c-199293b8385e)) (via (at 45.6692 38.5064) (size 0.5) (drill 0.3) (layers "F.Cu" "B.Cu") (net 1) (tstamp 465cdde3-dff4-4930-836e-d0ad4b6d5cf0)) + (via (at 25.3492 25.654) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 1) (tstamp 55da00b1-6974-47dd-837a-b43631e93c40)) + (via (at 25.3492 32.3088) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 1) (tstamp 7e1fa235-76d0-4f53-8e33-ca33b6de097c)) + (via (at 25.3492 28.956) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 1) (tstamp a41a7cce-e9d0-4f8c-a679-fca2a2afdb53)) + (via (at 22.716837 23.885237) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 1) (tstamp a6c29bb4-0c18-4e18-95e3-b12352e950e0)) + (via (at 25.3492 35.5092) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 1) (tstamp ad9a5e4d-659a-4070-887a-847890e4523c)) (via (at 72.009 36.83) (size 0.5) (drill 0.3) (layers "F.Cu" "B.Cu") (net 1) (tstamp d250e96e-91d5-4eac-b368-fae53a89a327)) (via (at 68.4276 39.2176) (size 0.5) (drill 0.3) (layers "F.Cu" "B.Cu") (net 1) (tstamp e291c97f-fd7b-469c-9cfb-3c7dd9fc93f5)) + (segment (start 22.716837 23.885237) (end 23.580437 23.885237) (width 0.25) (layer "B.Cu") (net 1) (tstamp 0f0a5e41-9994-464b-a3b0-73031fbf9eff)) + (segment (start 25.3492 25.654) (end 25.3492 28.956) (width 0.25) (layer "B.Cu") (net 1) (tstamp 1e73b42a-4654-4769-8985-ecef1c2cf8ea)) + (segment (start 21.192837 23.885237) (end 22.716837 23.885237) (width 0.25) (layer "B.Cu") (net 1) (tstamp 26932021-0cc2-41c5-80dc-a5f12739c3e4)) + (segment (start 25.3492 32.3088) (end 25.3492 35.5092) (width 0.25) (layer "B.Cu") (net 1) (tstamp 3c6f4b53-f5a8-42d5-ac3d-904addc830d9)) (segment (start 45.6692 38.5064) (end 46.3804 39.2176) (width 0.5) (layer "B.Cu") (net 1) (tstamp 473992ee-bd91-49b1-b457-5110edb0fa7b)) + (segment (start 20.4216 22.352) (end 20.4216 23.114) (width 0.25) (layer "B.Cu") (net 1) (tstamp 5b28e340-a9d5-493c-9cca-daee3826fd48)) + (segment (start 20.4216 23.114) (end 21.192837 23.885237) (width 0.25) (layer "B.Cu") (net 1) (tstamp 7511d47e-4c51-416a-9c31-6b970ffa8588)) + (segment (start 25.3492 28.956) (end 25.3492 32.3088) (width 0.25) (layer "B.Cu") (net 1) (tstamp 99f7b804-f63f-4fe7-9e28-b592edfba034)) (segment (start 46.3804 39.2176) (end 68.4276 39.2176) (width 0.5) (layer "B.Cu") (net 1) (tstamp d8339d0c-6872-40d5-95d6-3cdf476ebd04)) (segment (start 72.009 36.83) (end 72.009 29.591) (width 1) (layer "B.Cu") (net 1) (tstamp e4844254-12cb-4510-8c6d-32bd62f10722)) (segment (start 72.009 29.591) (end 77.724 23.876) (width 1) (layer "B.Cu") (net 1) (tstamp eb2eca7d-0c32-45fe-bc8d-ca328c83c9e2)) + (segment (start 23.580437 23.885237) (end 25.3492 25.654) (width 0.25) (layer "B.Cu") (net 1) (tstamp fe554315-bd82-4f72-a846-58757314431a)) (segment (start 43.688 39.6748) (end 47.8536 39.6748) (width 0.5) (layer "F.Cu") (net 2) (tstamp 008cffad-d39e-4a55-9986-66c1d7031d42)) (segment (start 77.724 49.911) (end 77.724 53.842) (width 1) (layer "F.Cu") (net 2) (tstamp 047a7761-377d-4dcb-9d8b-a8b7f0baae29)) (segment (start 47.8536 39.6748) (end 53.8912 39.6748) (width 0.5) (layer "F.Cu") (net 2) (tstamp 0b25fc1c-0826-45ce-919b-2e3d13390ec3)) @@ -8293,107 +8317,89 @@ (segment (start 41.6052 33.2232) (end 41.7068 33.3248) (width 0.25) (layer "B.Cu") (net 88) (tstamp cad57356-40ae-42c6-bddd-05574144794c)) (segment (start 28.2956 33.2232) (end 41.6052 33.2232) (width 0.25) (layer "B.Cu") (net 88) (tstamp cb8c48b1-9751-4c6e-9c74-6603e9117c26)) (segment (start 42.418 29.972) (end 41.138 31.252) (width 0.25) (layer "B.Cu") (net 88) (tstamp f8944f8e-52f5-493e-8940-e21623f7f531)) - (segment (start 25.3492 25.654) (end 23.7725 25.654) (width 0.25) (layer "F.Cu") (net 89) (tstamp 07005c9d-ee7a-4d04-9c8a-3409e746a6b1)) - (segment (start 23.749 22.352) (end 23.749 22.853074) (width 0.25) (layer "F.Cu") (net 89) (tstamp 3296dbb7-3933-4b69-a6c2-e36e285bf123)) - (segment (start 23.7725 35.56) (end 25.2984 35.56) (width 0.25) (layer "F.Cu") (net 89) (tstamp 77718d50-9f0c-48f1-9e34-382e340e0fa4)) - (segment (start 23.796 28.956) (end 25.3492 28.956) (width 0.25) (layer "F.Cu") (net 89) (tstamp 822be2ef-b7bf-45f7-bbdb-3760644fcd94)) - (segment (start 25.2984 32.258) (end 25.3492 32.3088) (width 0.25) (layer "F.Cu") (net 89) (tstamp 9dec81c1-ce61-4e42-92cf-f0b156b527a8)) - (segment (start 23.749 32.258) (end 25.2984 32.258) (width 0.25) (layer "F.Cu") (net 89) (tstamp bebdbea6-ab80-48c0-991d-dc5d0b182e73)) - (segment (start 25.2984 35.56) (end 25.3492 35.5092) (width 0.25) (layer "F.Cu") (net 89) (tstamp e165c5d2-3dfc-4099-b32f-03f562d8bf70)) - (segment (start 23.749 22.853074) (end 22.716837 23.885237) (width 0.25) (layer "F.Cu") (net 89) (tstamp e99413f4-246a-4ad1-a3d7-5c7f367731a3)) - (via (at 25.3492 25.654) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 89) (tstamp 55da00b1-6974-47dd-837a-b43631e93c40)) - (via (at 25.3492 32.3088) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 89) (tstamp 7e1fa235-76d0-4f53-8e33-ca33b6de097c)) - (via (at 25.3492 28.956) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 89) (tstamp a41a7cce-e9d0-4f8c-a679-fca2a2afdb53)) - (via (at 22.716837 23.885237) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 89) (tstamp a6c29bb4-0c18-4e18-95e3-b12352e950e0)) - (via (at 25.3492 35.5092) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 89) (tstamp ad9a5e4d-659a-4070-887a-847890e4523c)) - (segment (start 22.716837 23.885237) (end 23.580437 23.885237) (width 0.25) (layer "B.Cu") (net 89) (tstamp 0f0a5e41-9994-464b-a3b0-73031fbf9eff)) - (segment (start 25.3492 25.654) (end 25.3492 28.956) (width 0.25) (layer "B.Cu") (net 89) (tstamp 1e73b42a-4654-4769-8985-ecef1c2cf8ea)) - (segment (start 25.3492 32.3088) (end 25.3492 35.5092) (width 0.25) (layer "B.Cu") (net 89) (tstamp 3c6f4b53-f5a8-42d5-ac3d-904addc830d9)) - (segment (start 25.3492 28.956) (end 25.3492 32.3088) (width 0.25) (layer "B.Cu") (net 89) (tstamp 99f7b804-f63f-4fe7-9e28-b592edfba034)) - (segment (start 23.580437 23.885237) (end 25.3492 25.654) (width 0.25) (layer "B.Cu") (net 89) (tstamp fe554315-bd82-4f72-a846-58757314431a)) - (segment (start 14.9352 46.228) (end 14.9352 50.7492) (width 0.25) (layer "F.Cu") (net 90) (tstamp 0f7666b2-3e27-4194-809f-ce2e3e6ed676)) - (segment (start 14.9352 50.7492) (end 10.4648 50.7492) (width 0.25) (layer "F.Cu") (net 90) (tstamp 16dff2e6-d44d-4108-96ec-99dba665d37f)) - (segment (start 16.6116 44.5516) (end 14.9352 46.228) (width 0.25) (layer "F.Cu") (net 90) (tstamp 2cfead59-ac49-4c7f-8a6c-32cf18f3b659)) - (segment (start 10.4648 50.7492) (end 9.6012 51.6128) (width 0.25) (layer "F.Cu") (net 90) (tstamp 38b46cac-036c-4484-8b12-023e775f8f24)) - (segment (start 16.6624 50.7492) (end 14.9352 50.7492) (width 0.25) (layer "F.Cu") (net 90) (tstamp 863827df-991b-4475-b036-b6b2ab645afb)) - (via (at 9.6012 51.6128) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 90) (tstamp f49c8890-b288-4b0f-af9b-fa470cfcb8ce)) - (segment (start 6.8072 54.4068) (end 6.8072 62.5932) (width 0.25) (layer "B.Cu") (net 90) (tstamp 156e256a-fd4b-4560-8f95-9e277a588db9)) - (segment (start 9.6012 51.6128) (end 6.8072 54.4068) (width 0.25) (layer "B.Cu") (net 90) (tstamp 16e6ba5c-bd67-4bf3-8a47-7d8cd7bf29e4)) - (segment (start 6.8072 62.5932) (end 8.588 64.374) (width 0.25) (layer "B.Cu") (net 90) (tstamp 94e200d2-4606-4d3c-ab72-664ac0911721)) - (segment (start 143.764 10.25) (end 140.88 10.25) (width 0.5) (layer "F.Cu") (net 91) (tstamp 2eb29f4e-cb1d-4a68-bf30-bff6d3a2fc8d)) - (segment (start 138.684 12.446) (end 133.096 12.446) (width 0.5) (layer "F.Cu") (net 91) (tstamp 531fc555-dab9-472d-bbf1-f4a0e98c11be)) - (segment (start 133.096 12.446) (end 133.096 21.226) (width 0.5) (layer "F.Cu") (net 91) (tstamp b96fb073-3bdc-4b80-8f65-185f29975ae2)) - (segment (start 133.096 21.226) (end 134.62 22.75) (width 0.5) (layer "F.Cu") (net 91) (tstamp c91cb187-f3ff-47b4-b53c-e62ad312998a)) - (segment (start 140.88 10.25) (end 138.684 12.446) (width 0.5) (layer "F.Cu") (net 91) (tstamp fdf1be44-1475-42a3-a646-4927d89b97fe)) - (segment (start 134.45 34.755) (end 134.45 35.25) (width 0.5) (layer "F.Cu") (net 92) (tstamp 2c882465-8ec3-40b2-b9b3-1c06108f839b)) - (segment (start 132.842 33.147) (end 134.45 34.755) (width 0.5) (layer "F.Cu") (net 92) (tstamp 42b7edfc-9419-467b-bb88-bb46dfd29379)) - (segment (start 140.318 22.75) (end 138.303 24.765) (width 0.5) (layer "F.Cu") (net 92) (tstamp 5d8ceb4c-f235-43c0-b890-614371d7ecd8)) - (segment (start 138.303 24.765) (end 132.842 24.765) (width 0.5) (layer "F.Cu") (net 92) (tstamp 7b6a436c-6aab-45bb-8a8a-29f35b1d923b)) - (segment (start 143.72 22.75) (end 140.318 22.75) (width 0.5) (layer "F.Cu") (net 92) (tstamp b0ffcc92-6adb-432a-a8e6-2d63dceeebdf)) - (segment (start 132.842 24.765) (end 132.842 33.147) (width 0.5) (layer "F.Cu") (net 92) (tstamp d09cba9f-bfa0-4167-8fe9-16aab03b6749)) - (segment (start 138.684 37.592) (end 141.026 35.25) (width 0.5) (layer "F.Cu") (net 93) (tstamp 68d40029-773c-4944-9776-1327b4f67b46)) - (segment (start 133.229 47.25) (end 132.461 46.482) (width 0.5) (layer "F.Cu") (net 93) (tstamp 8ab77c3a-cffa-447e-a04b-232faddcd28d)) - (segment (start 132.461 46.482) (end 132.461 37.592) (width 0.5) (layer "F.Cu") (net 93) (tstamp 8bbbab18-d006-4ab2-baa4-7f916ab3856e)) - (segment (start 134.45 47.25) (end 133.229 47.25) (width 0.5) (layer "F.Cu") (net 93) (tstamp a9556c91-4add-4521-b54c-2a0b1956e283)) - (segment (start 132.461 37.592) (end 138.684 37.592) (width 0.5) (layer "F.Cu") (net 93) (tstamp c4fe0d12-1726-468f-8f29-0916775d8bf4)) - (segment (start 141.026 35.25) (end 143.55 35.25) (width 0.5) (layer "F.Cu") (net 93) (tstamp d209c029-ad98-4963-a493-8234fdea43ed)) - (segment (start 132.461 49.276) (end 132.461 57.261) (width 0.5) (layer "F.Cu") (net 94) (tstamp 2d1bf45d-3e17-4ebd-adbd-b88781dc5035)) - (segment (start 143.55 47.25) (end 141.218 47.25) (width 0.5) (layer "F.Cu") (net 94) (tstamp 4cf10d90-f878-4262-9db9-c5c00d8640fb)) - (segment (start 139.192 49.276) (end 132.461 49.276) (width 0.5) (layer "F.Cu") (net 94) (tstamp 4dcf40c2-1537-46a4-82a0-9693c2c477bd)) - (segment (start 132.461 57.261) (end 134.45 59.25) (width 0.5) (layer "F.Cu") (net 94) (tstamp 85705d4e-d43b-4dcc-86fb-4dc7c47e3ac1)) - (segment (start 141.218 47.25) (end 139.192 49.276) (width 0.5) (layer "F.Cu") (net 94) (tstamp ea631d65-78f4-44e8-8bc1-ab1088b673db)) - (segment (start 121.793 56.388) (end 123.19 56.388) (width 0.25) (layer "F.Cu") (net 95) (tstamp 3768067b-b014-421b-a70b-902835bf32f9)) - (segment (start 120.015 54.61) (end 121.793 56.388) (width 0.25) (layer "F.Cu") (net 95) (tstamp 4a9e22f1-85d0-4f71-9560-523a8c734b71)) - (segment (start 122.508695 61.759) (end 124.209 61.759) (width 0.25) (layer "F.Cu") (net 95) (tstamp 801b2f7a-c7c5-45e7-a403-efab0c1d77db)) - (segment (start 121.9125 62.355195) (end 122.508695 61.759) (width 0.25) (layer "F.Cu") (net 95) (tstamp a731aa28-f1be-484c-8485-41716bb62f57)) - (segment (start 122.4655 63.627) (end 122.4655 64.447) (width 0.25) (layer "F.Cu") (net 95) (tstamp bcd8635b-0d88-4e3e-a015-77b4a73f3ab9)) - (segment (start 121.9125 65) (end 121.9125 62.355195) (width 0.25) (layer "F.Cu") (net 95) (tstamp d1250fdc-7cf9-4890-a8f1-0ad46f2ad6fa)) - (segment (start 124.6 62.15) (end 125.45 62.15) (width 0.25) (layer "F.Cu") (net 95) (tstamp f136de94-53d7-4cd9-a924-f9ca25b942a9)) - (segment (start 124.209 61.759) (end 124.6 62.15) (width 0.25) (layer "F.Cu") (net 95) (tstamp f8495102-0bf5-4d65-aac5-ff6100f8002d)) - (segment (start 122.4655 64.447) (end 121.9125 65) (width 0.25) (layer "F.Cu") (net 95) (tstamp f9bd9590-34a8-4c66-8c0c-b9ce247bd0b7)) - (via (at 122.4655 63.627) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 95) (tstamp 0a65076a-ea00-4596-975c-18d76d23a88d)) - (via (at 123.19 56.388) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 95) (tstamp 57a24b82-00aa-41c6-bdb3-7eefa4424b3b)) - (segment (start 122.084 62.183695) (end 122.084 63.2455) (width 0.25) (layer "B.Cu") (net 95) (tstamp 15b139ac-4f12-46f6-bb43-7d04db427cfc)) - (segment (start 122.084 63.2455) (end 122.4655 63.627) (width 0.25) (layer "B.Cu") (net 95) (tstamp 4daaca44-078b-4728-becc-f6806a7b618f)) - (segment (start 123.19 56.388) (end 123.19 61.077695) (width 0.25) (layer "B.Cu") (net 95) (tstamp 5f3df5fd-bd4e-415b-afcc-3d1dfea44acb)) - (segment (start 123.19 61.077695) (end 122.084 62.183695) (width 0.25) (layer "B.Cu") (net 95) (tstamp d22aacab-8174-4c86-8910-2c4f1ca68410)) - (segment (start 121.19 61.309) (end 120.925 61.574) (width 0.25) (layer "F.Cu") (net 96) (tstamp 24cca864-301f-455d-a51a-89398fe5d6bf)) - (segment (start 124.395396 61.309) (end 121.19 61.309) (width 0.25) (layer "F.Cu") (net 96) (tstamp 27408190-2c42-4d3d-8c84-323b22530448)) - (segment (start 121.19 61.309) (end 121.19 59.1425) (width 0.25) (layer "F.Cu") (net 96) (tstamp 3a816e6d-8f4d-41fb-b9dd-2c36eede4f15)) - (segment (start 124.586396 61.5) (end 124.395396 61.309) (width 0.25) (layer "F.Cu") (net 96) (tstamp 4fe07238-6c66-4e3d-99dd-d31cfe1b0967)) - (segment (start 125.45 61.5) (end 124.586396 61.5) (width 0.25) (layer "F.Cu") (net 96) (tstamp 52a128ea-73ed-4b21-90a8-df0264207a89)) - (segment (start 121.19 59.1425) (end 121.9125 58.42) (width 0.25) (layer "F.Cu") (net 96) (tstamp 81e36762-6198-452d-aea7-f383fdcf19b0)) - (segment (start 120.925 61.574) (end 120.925 67.705) (width 0.25) (layer "F.Cu") (net 96) (tstamp a4300f1d-4237-4673-9541-431de8e39d26)) - (segment (start 120.925 67.705) (end 120.05 68.58) (width 0.25) (layer "F.Cu") (net 96) (tstamp e5a2e866-c9c3-4c7c-b0d1-455735a659ed)) - (segment (start 123.125 62.8) (end 125.45 62.8) (width 0.25) (layer "F.Cu") (net 97) (tstamp 0ecc6be9-9402-4937-b6e7-392cc549d112)) - (segment (start 122.809 62.484) (end 123.125 62.8) (width 0.25) (layer "F.Cu") (net 97) (tstamp 2f3fa6f3-ff2c-40f6-9a09-eb1afc132c21)) - (segment (start 113.03 65.405) (end 114.046 65.405) (width 0.25) (layer "F.Cu") (net 97) (tstamp 68c5a698-3078-4cf6-a223-09c521c56e25)) - (segment (start 114.046 65.405) (end 114.808 66.167) (width 0.25) (layer "F.Cu") (net 97) (tstamp fc5d3d1f-bfd1-4a3a-a993-e65906015e49)) - (via (at 114.808 66.167) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 97) (tstamp d2794c22-41d8-4436-9693-4a51b49b6d6e)) - (via (at 122.809 62.484) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 97) (tstamp f2e85531-4f6c-487c-823a-7d2171f0c278)) - (segment (start 114.808 66.167) (end 123.19 66.167) (width 0.25) (layer "B.Cu") (net 97) (tstamp 2641e990-ea0f-471d-a365-2161b57bf6b4)) - (segment (start 123.19 62.865) (end 122.809 62.484) (width 0.25) (layer "B.Cu") (net 97) (tstamp 8ab8d4d2-c737-4879-ac0e-e00f5b2d8d18)) - (segment (start 123.19 66.167) (end 123.19 62.865) (width 0.25) (layer "B.Cu") (net 97) (tstamp eb951062-8a04-41d4-861c-143eba19ce7c)) - (segment (start 61.458 33.692926) (end 55.083826 40.0671) (width 0.25) (layer "F.Cu") (net 100) (tstamp 6d2bf743-db28-4219-8c38-d3c4aa320197)) - (segment (start 61.458 31.252) (end 61.458 33.692926) (width 0.25) (layer "F.Cu") (net 100) (tstamp 709bbfc9-69ce-48b9-8d59-96416b5c1cd4)) - (via (at 55.083826 40.0671) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 100) (tstamp 73f72d85-9746-4976-8a57-e7978e757ab1)) - (segment (start 14.2748 38.177596) (end 14.2748 34.7472) (width 0.25) (layer "B.Cu") (net 100) (tstamp 552811ba-130f-4c89-bc22-4f8b06da8693)) - (segment (start 55.083826 40.0671) (end 16.164304 40.0671) (width 0.25) (layer "B.Cu") (net 100) (tstamp 567ea77d-2e38-4130-8336-bbb86d0aedb2)) - (segment (start 16.164304 40.0671) (end 14.2748 38.177596) (width 0.25) (layer "B.Cu") (net 100) (tstamp 9e5a2f0a-e58b-47d9-a634-90e39ef98402)) - (segment (start 14.2748 34.7472) (end 13.7776 34.25) (width 0.25) (layer "B.Cu") (net 100) (tstamp c55a3cbf-9556-4796-8a30-9caf106d055e)) - (segment (start 13.7776 34.25) (end 12.528 34.25) (width 0.25) (layer "B.Cu") (net 100) (tstamp f570fea0-0877-41be-aa6c-1033a681840e)) - (segment (start 63.998 31.252) (end 63.998 32.8268) (width 0.25) (layer "F.Cu") (net 101) (tstamp 1ba3b291-a4c1-4750-9222-ec89ef7e1912)) - (segment (start 56.0324 40.7924) (end 56.0324 40.894) (width 0.25) (layer "F.Cu") (net 101) (tstamp 302bd90d-7438-4df3-a33e-ac7598d4a454)) - (segment (start 63.998 32.8268) (end 56.0324 40.7924) (width 0.25) (layer "F.Cu") (net 101) (tstamp e80a269e-402a-4311-9056-a5f49654a2ba)) - (via (at 56.0324 40.894) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 101) (tstamp a48b560e-c98c-4f69-9c32-ef5a55cb2e81)) - (segment (start 12.528 37.067192) (end 12.528 36.79) (width 0.25) (layer "B.Cu") (net 101) (tstamp 22a9245d-bc39-4b67-b6f7-13d10ddbe035)) - (segment (start 16.354808 40.894) (end 12.528 37.067192) (width 0.25) (layer "B.Cu") (net 101) (tstamp 49e43f1c-a10c-49f1-a7f7-4546f7391f9f)) - (segment (start 56.0324 40.894) (end 16.354808 40.894) (width 0.25) (layer "B.Cu") (net 101) (tstamp 62b5164f-d837-4847-b956-cada3d69d32f)) - (segment (start 8.588 52.8536) (end 8.588 59.374) (width 0.25) (layer "F.Cu") (net 102) (tstamp 7b538e20-cd74-445d-ba02-60f214a437ae)) - (segment (start 8.7719 53.0375) (end 8.588 52.8536) (width 0.25) (layer "F.Cu") (net 102) (tstamp 8145dec7-bebb-4803-8daa-d214c59a9a6c)) - (segment (start 19.6881 53.0375) (end 8.7719 53.0375) (width 0.25) (layer "F.Cu") (net 102) (tstamp b8fa23fb-dd90-44b2-bda5-62757004cad0)) - (segment (start 6.9596 51.2252) (end 8.588 52.8536) (width 0.25) (layer "F.Cu") (net 102) (tstamp d9ed87c7-a97f-4da0-9ba6-c295163373e4)) - (segment (start 20.6756 54.025) (end 19.6881 53.0375) (width 0.25) (layer "F.Cu") (net 102) (tstamp fada12b3-7de3-4a68-8a02-5914e55f5494)) + (segment (start 14.9352 46.228) (end 14.9352 50.7492) (width 0.25) (layer "F.Cu") (net 89) (tstamp 0f7666b2-3e27-4194-809f-ce2e3e6ed676)) + (segment (start 14.9352 50.7492) (end 10.4648 50.7492) (width 0.25) (layer "F.Cu") (net 89) (tstamp 16dff2e6-d44d-4108-96ec-99dba665d37f)) + (segment (start 16.6116 44.5516) (end 14.9352 46.228) (width 0.25) (layer "F.Cu") (net 89) (tstamp 2cfead59-ac49-4c7f-8a6c-32cf18f3b659)) + (segment (start 10.4648 50.7492) (end 9.6012 51.6128) (width 0.25) (layer "F.Cu") (net 89) (tstamp 38b46cac-036c-4484-8b12-023e775f8f24)) + (segment (start 16.6624 50.7492) (end 14.9352 50.7492) (width 0.25) (layer "F.Cu") (net 89) (tstamp 863827df-991b-4475-b036-b6b2ab645afb)) + (via (at 9.6012 51.6128) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 89) (tstamp f49c8890-b288-4b0f-af9b-fa470cfcb8ce)) + (segment (start 6.8072 54.4068) (end 6.8072 62.5932) (width 0.25) (layer "B.Cu") (net 89) (tstamp 156e256a-fd4b-4560-8f95-9e277a588db9)) + (segment (start 9.6012 51.6128) (end 6.8072 54.4068) (width 0.25) (layer "B.Cu") (net 89) (tstamp 16e6ba5c-bd67-4bf3-8a47-7d8cd7bf29e4)) + (segment (start 6.8072 62.5932) (end 8.588 64.374) (width 0.25) (layer "B.Cu") (net 89) (tstamp 94e200d2-4606-4d3c-ab72-664ac0911721)) + (segment (start 143.764 10.25) (end 140.88 10.25) (width 0.5) (layer "F.Cu") (net 90) (tstamp 2eb29f4e-cb1d-4a68-bf30-bff6d3a2fc8d)) + (segment (start 138.684 12.446) (end 133.096 12.446) (width 0.5) (layer "F.Cu") (net 90) (tstamp 531fc555-dab9-472d-bbf1-f4a0e98c11be)) + (segment (start 133.096 12.446) (end 133.096 21.226) (width 0.5) (layer "F.Cu") (net 90) (tstamp b96fb073-3bdc-4b80-8f65-185f29975ae2)) + (segment (start 133.096 21.226) (end 134.62 22.75) (width 0.5) (layer "F.Cu") (net 90) (tstamp c91cb187-f3ff-47b4-b53c-e62ad312998a)) + (segment (start 140.88 10.25) (end 138.684 12.446) (width 0.5) (layer "F.Cu") (net 90) (tstamp fdf1be44-1475-42a3-a646-4927d89b97fe)) + (segment (start 134.45 34.755) (end 134.45 35.25) (width 0.5) (layer "F.Cu") (net 91) (tstamp 2c882465-8ec3-40b2-b9b3-1c06108f839b)) + (segment (start 132.842 33.147) (end 134.45 34.755) (width 0.5) (layer "F.Cu") (net 91) (tstamp 42b7edfc-9419-467b-bb88-bb46dfd29379)) + (segment (start 140.318 22.75) (end 138.303 24.765) (width 0.5) (layer "F.Cu") (net 91) (tstamp 5d8ceb4c-f235-43c0-b890-614371d7ecd8)) + (segment (start 138.303 24.765) (end 132.842 24.765) (width 0.5) (layer "F.Cu") (net 91) (tstamp 7b6a436c-6aab-45bb-8a8a-29f35b1d923b)) + (segment (start 143.72 22.75) (end 140.318 22.75) (width 0.5) (layer "F.Cu") (net 91) (tstamp b0ffcc92-6adb-432a-a8e6-2d63dceeebdf)) + (segment (start 132.842 24.765) (end 132.842 33.147) (width 0.5) (layer "F.Cu") (net 91) (tstamp d09cba9f-bfa0-4167-8fe9-16aab03b6749)) + (segment (start 138.684 37.592) (end 141.026 35.25) (width 0.5) (layer "F.Cu") (net 92) (tstamp 68d40029-773c-4944-9776-1327b4f67b46)) + (segment (start 133.229 47.25) (end 132.461 46.482) (width 0.5) (layer "F.Cu") (net 92) (tstamp 8ab77c3a-cffa-447e-a04b-232faddcd28d)) + (segment (start 132.461 46.482) (end 132.461 37.592) (width 0.5) (layer "F.Cu") (net 92) (tstamp 8bbbab18-d006-4ab2-baa4-7f916ab3856e)) + (segment (start 134.45 47.25) (end 133.229 47.25) (width 0.5) (layer "F.Cu") (net 92) (tstamp a9556c91-4add-4521-b54c-2a0b1956e283)) + (segment (start 132.461 37.592) (end 138.684 37.592) (width 0.5) (layer "F.Cu") (net 92) (tstamp c4fe0d12-1726-468f-8f29-0916775d8bf4)) + (segment (start 141.026 35.25) (end 143.55 35.25) (width 0.5) (layer "F.Cu") (net 92) (tstamp d209c029-ad98-4963-a493-8234fdea43ed)) + (segment (start 132.461 49.276) (end 132.461 57.261) (width 0.5) (layer "F.Cu") (net 93) (tstamp 2d1bf45d-3e17-4ebd-adbd-b88781dc5035)) + (segment (start 143.55 47.25) (end 141.218 47.25) (width 0.5) (layer "F.Cu") (net 93) (tstamp 4cf10d90-f878-4262-9db9-c5c00d8640fb)) + (segment (start 139.192 49.276) (end 132.461 49.276) (width 0.5) (layer "F.Cu") (net 93) (tstamp 4dcf40c2-1537-46a4-82a0-9693c2c477bd)) + (segment (start 132.461 57.261) (end 134.45 59.25) (width 0.5) (layer "F.Cu") (net 93) (tstamp 85705d4e-d43b-4dcc-86fb-4dc7c47e3ac1)) + (segment (start 141.218 47.25) (end 139.192 49.276) (width 0.5) (layer "F.Cu") (net 93) (tstamp ea631d65-78f4-44e8-8bc1-ab1088b673db)) + (segment (start 121.793 56.388) (end 123.19 56.388) (width 0.25) (layer "F.Cu") (net 94) (tstamp 3768067b-b014-421b-a70b-902835bf32f9)) + (segment (start 120.015 54.61) (end 121.793 56.388) (width 0.25) (layer "F.Cu") (net 94) (tstamp 4a9e22f1-85d0-4f71-9560-523a8c734b71)) + (segment (start 122.508695 61.759) (end 124.209 61.759) (width 0.25) (layer "F.Cu") (net 94) (tstamp 801b2f7a-c7c5-45e7-a403-efab0c1d77db)) + (segment (start 121.9125 62.355195) (end 122.508695 61.759) (width 0.25) (layer "F.Cu") (net 94) (tstamp a731aa28-f1be-484c-8485-41716bb62f57)) + (segment (start 122.4655 63.627) (end 122.4655 64.447) (width 0.25) (layer "F.Cu") (net 94) (tstamp bcd8635b-0d88-4e3e-a015-77b4a73f3ab9)) + (segment (start 121.9125 65) (end 121.9125 62.355195) (width 0.25) (layer "F.Cu") (net 94) (tstamp d1250fdc-7cf9-4890-a8f1-0ad46f2ad6fa)) + (segment (start 124.6 62.15) (end 125.45 62.15) (width 0.25) (layer "F.Cu") (net 94) (tstamp f136de94-53d7-4cd9-a924-f9ca25b942a9)) + (segment (start 124.209 61.759) (end 124.6 62.15) (width 0.25) (layer "F.Cu") (net 94) (tstamp f8495102-0bf5-4d65-aac5-ff6100f8002d)) + (segment (start 122.4655 64.447) (end 121.9125 65) (width 0.25) (layer "F.Cu") (net 94) (tstamp f9bd9590-34a8-4c66-8c0c-b9ce247bd0b7)) + (via (at 122.4655 63.627) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 94) (tstamp 0a65076a-ea00-4596-975c-18d76d23a88d)) + (via (at 123.19 56.388) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 94) (tstamp 57a24b82-00aa-41c6-bdb3-7eefa4424b3b)) + (segment (start 122.084 62.183695) (end 122.084 63.2455) (width 0.25) (layer "B.Cu") (net 94) (tstamp 15b139ac-4f12-46f6-bb43-7d04db427cfc)) + (segment (start 122.084 63.2455) (end 122.4655 63.627) (width 0.25) (layer "B.Cu") (net 94) (tstamp 4daaca44-078b-4728-becc-f6806a7b618f)) + (segment (start 123.19 56.388) (end 123.19 61.077695) (width 0.25) (layer "B.Cu") (net 94) (tstamp 5f3df5fd-bd4e-415b-afcc-3d1dfea44acb)) + (segment (start 123.19 61.077695) (end 122.084 62.183695) (width 0.25) (layer "B.Cu") (net 94) (tstamp d22aacab-8174-4c86-8910-2c4f1ca68410)) + (segment (start 121.19 61.309) (end 120.925 61.574) (width 0.25) (layer "F.Cu") (net 95) (tstamp 24cca864-301f-455d-a51a-89398fe5d6bf)) + (segment (start 124.395396 61.309) (end 121.19 61.309) (width 0.25) (layer "F.Cu") (net 95) (tstamp 27408190-2c42-4d3d-8c84-323b22530448)) + (segment (start 121.19 61.309) (end 121.19 59.1425) (width 0.25) (layer "F.Cu") (net 95) (tstamp 3a816e6d-8f4d-41fb-b9dd-2c36eede4f15)) + (segment (start 124.586396 61.5) (end 124.395396 61.309) (width 0.25) (layer "F.Cu") (net 95) (tstamp 4fe07238-6c66-4e3d-99dd-d31cfe1b0967)) + (segment (start 125.45 61.5) (end 124.586396 61.5) (width 0.25) (layer "F.Cu") (net 95) (tstamp 52a128ea-73ed-4b21-90a8-df0264207a89)) + (segment (start 121.19 59.1425) (end 121.9125 58.42) (width 0.25) (layer "F.Cu") (net 95) (tstamp 81e36762-6198-452d-aea7-f383fdcf19b0)) + (segment (start 120.925 61.574) (end 120.925 67.705) (width 0.25) (layer "F.Cu") (net 95) (tstamp a4300f1d-4237-4673-9541-431de8e39d26)) + (segment (start 120.925 67.705) (end 120.05 68.58) (width 0.25) (layer "F.Cu") (net 95) (tstamp e5a2e866-c9c3-4c7c-b0d1-455735a659ed)) + (segment (start 123.125 62.8) (end 125.45 62.8) (width 0.25) (layer "F.Cu") (net 96) (tstamp 0ecc6be9-9402-4937-b6e7-392cc549d112)) + (segment (start 122.809 62.484) (end 123.125 62.8) (width 0.25) (layer "F.Cu") (net 96) (tstamp 2f3fa6f3-ff2c-40f6-9a09-eb1afc132c21)) + (segment (start 113.03 65.405) (end 114.046 65.405) (width 0.25) (layer "F.Cu") (net 96) (tstamp 68c5a698-3078-4cf6-a223-09c521c56e25)) + (segment (start 114.046 65.405) (end 114.808 66.167) (width 0.25) (layer "F.Cu") (net 96) (tstamp fc5d3d1f-bfd1-4a3a-a993-e65906015e49)) + (via (at 114.808 66.167) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 96) (tstamp d2794c22-41d8-4436-9693-4a51b49b6d6e)) + (via (at 122.809 62.484) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 96) (tstamp f2e85531-4f6c-487c-823a-7d2171f0c278)) + (segment (start 114.808 66.167) (end 123.19 66.167) (width 0.25) (layer "B.Cu") (net 96) (tstamp 2641e990-ea0f-471d-a365-2161b57bf6b4)) + (segment (start 123.19 62.865) (end 122.809 62.484) (width 0.25) (layer "B.Cu") (net 96) (tstamp 8ab8d4d2-c737-4879-ac0e-e00f5b2d8d18)) + (segment (start 123.19 66.167) (end 123.19 62.865) (width 0.25) (layer "B.Cu") (net 96) (tstamp eb951062-8a04-41d4-861c-143eba19ce7c)) + (segment (start 61.458 33.692926) (end 55.083826 40.0671) (width 0.25) (layer "F.Cu") (net 99) (tstamp 6d2bf743-db28-4219-8c38-d3c4aa320197)) + (segment (start 61.458 31.252) (end 61.458 33.692926) (width 0.25) (layer "F.Cu") (net 99) (tstamp 709bbfc9-69ce-48b9-8d59-96416b5c1cd4)) + (via (at 55.083826 40.0671) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 99) (tstamp 73f72d85-9746-4976-8a57-e7978e757ab1)) + (segment (start 14.2748 38.177596) (end 14.2748 34.7472) (width 0.25) (layer "B.Cu") (net 99) (tstamp 552811ba-130f-4c89-bc22-4f8b06da8693)) + (segment (start 55.083826 40.0671) (end 16.164304 40.0671) (width 0.25) (layer "B.Cu") (net 99) (tstamp 567ea77d-2e38-4130-8336-bbb86d0aedb2)) + (segment (start 16.164304 40.0671) (end 14.2748 38.177596) (width 0.25) (layer "B.Cu") (net 99) (tstamp 9e5a2f0a-e58b-47d9-a634-90e39ef98402)) + (segment (start 14.2748 34.7472) (end 13.7776 34.25) (width 0.25) (layer "B.Cu") (net 99) (tstamp c55a3cbf-9556-4796-8a30-9caf106d055e)) + (segment (start 13.7776 34.25) (end 12.528 34.25) (width 0.25) (layer "B.Cu") (net 99) (tstamp f570fea0-0877-41be-aa6c-1033a681840e)) + (segment (start 63.998 31.252) (end 63.998 32.8268) (width 0.25) (layer "F.Cu") (net 100) (tstamp 1ba3b291-a4c1-4750-9222-ec89ef7e1912)) + (segment (start 56.0324 40.7924) (end 56.0324 40.894) (width 0.25) (layer "F.Cu") (net 100) (tstamp 302bd90d-7438-4df3-a33e-ac7598d4a454)) + (segment (start 63.998 32.8268) (end 56.0324 40.7924) (width 0.25) (layer "F.Cu") (net 100) (tstamp e80a269e-402a-4311-9056-a5f49654a2ba)) + (via (at 56.0324 40.894) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 100) (tstamp a48b560e-c98c-4f69-9c32-ef5a55cb2e81)) + (segment (start 12.528 37.067192) (end 12.528 36.79) (width 0.25) (layer "B.Cu") (net 100) (tstamp 22a9245d-bc39-4b67-b6f7-13d10ddbe035)) + (segment (start 16.354808 40.894) (end 12.528 37.067192) (width 0.25) (layer "B.Cu") (net 100) (tstamp 49e43f1c-a10c-49f1-a7f7-4546f7391f9f)) + (segment (start 56.0324 40.894) (end 16.354808 40.894) (width 0.25) (layer "B.Cu") (net 100) (tstamp 62b5164f-d837-4847-b956-cada3d69d32f)) + (segment (start 8.588 52.8536) (end 8.588 59.374) (width 0.25) (layer "F.Cu") (net 101) (tstamp 7b538e20-cd74-445d-ba02-60f214a437ae)) + (segment (start 8.7719 53.0375) (end 8.588 52.8536) (width 0.25) (layer "F.Cu") (net 101) (tstamp 8145dec7-bebb-4803-8daa-d214c59a9a6c)) + (segment (start 19.6881 53.0375) (end 8.7719 53.0375) (width 0.25) (layer "F.Cu") (net 101) (tstamp b8fa23fb-dd90-44b2-bda5-62757004cad0)) + (segment (start 6.9596 51.2252) (end 8.588 52.8536) (width 0.25) (layer "F.Cu") (net 101) (tstamp d9ed87c7-a97f-4da0-9ba6-c295163373e4)) + (segment (start 20.6756 54.025) (end 19.6881 53.0375) (width 0.25) (layer "F.Cu") (net 101) (tstamp fada12b3-7de3-4a68-8a02-5914e55f5494)) (zone (net 1) (net_name "+5V") (layer "F.Cu") (tstamp c07fdb34-7c10-403b-a0b2-c027cafbbb76) (hatch edge 0.5) (connect_pads (clearance 0.5)) diff --git a/CAD/BJ-Keyer.kicad_prl b/CAD/BJ-Keyer.kicad_prl index 2678495..3643cf6 100644 --- a/CAD/BJ-Keyer.kicad_prl +++ b/CAD/BJ-Keyer.kicad_prl @@ -1,6 +1,6 @@ { "board": { - "active_layer": 0, + "active_layer": 31, "active_layer_preset": "", "auto_track_width": true, "hidden_netclasses": [], diff --git a/CAD/BJ-Keyer.kicad_sch b/CAD/BJ-Keyer.kicad_sch index a6c7eb7..81c0ef7 100644 --- a/CAD/BJ-Keyer.kicad_sch +++ b/CAD/BJ-Keyer.kicad_sch @@ -4090,10 +4090,6 @@ (stroke (width 0) (type default)) (uuid 459f6874-df9c-4ff2-9668-ee869dc81e00) ) - (wire (pts (xy 210.82 69.85) (xy 210.82 74.93)) - (stroke (width 0) (type default)) - (uuid 46102f0f-ed6d-4bea-a49c-98f412f91191) - ) (wire (pts (xy 22.86 170.18) (xy 22.86 195.58)) (stroke (width 0) (type default)) (uuid 4628d9ad-ee4a-4569-b877-e6aefe8041ab) @@ -4134,6 +4130,10 @@ (stroke (width 0) (type default)) (uuid 493c280b-f1a1-4440-ac2d-eb89992f998d) ) + (wire (pts (xy 210.82 69.85) (xy 210.82 74.93)) + (stroke (width 0) (type default)) + (uuid 4947cf42-cf05-42ac-b353-c63b80671a7c) + ) (wire (pts (xy 69.85 110.49) (xy 69.85 113.03)) (stroke (width 0) (type default)) (uuid 4c0428a2-021d-4734-a7f2-d4ee4e82b59d) @@ -4354,6 +4354,10 @@ (stroke (width 0) (type default)) (uuid 6f14f678-76f6-462d-a483-762f7fca7d7b) ) + (wire (pts (xy 245.11 62.23) (xy 245.11 59.69)) + (stroke (width 0) (type default)) + (uuid 7004ad59-f322-474a-8846-bdeae92e8d22) + ) (wire (pts (xy 361.95 77.47) (xy 361.95 96.52)) (stroke (width 0) (type default)) (uuid 72619eb2-0e80-41ba-8c90-0f5c6fbc5570) @@ -5713,6 +5717,31 @@ ) ) + (symbol (lib_id "power:+5V") (at 245.11 59.69 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 0d97f26d-e0dc-461c-ad32-a65403cc2ed3) + (property "Reference" "#PWR062" (at 245.11 63.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+5V" (at 245.11 55.447 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at 245.11 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 245.11 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 81014ff9-f153-4b14-a878-98fd194501ee)) + (instances + (project "BJ-Keyer" + (path "/854b5595-86e1-4ffa-88fb-a2c16da0c22c" + (reference "#PWR062") (unit 1) + ) + ) + ) + ) + (symbol (lib_id "power:+5V") (at 242.57 163.83 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) (uuid 0e6a14c2-4efb-42f6-9d74-c2cdc21fa21d) @@ -7085,6 +7114,31 @@ ) ) + (symbol (lib_id "power:+5V") (at -24.13 -137.16 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 54f5660c-7de6-4698-82c8-a2d04fbf23a1) + (property "Reference" "#PWR063" (at -24.13 -133.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+5V" (at -24.13 -141.403 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at -24.13 -137.16 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at -24.13 -137.16 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 62fa0da3-0292-4af6-8369-14f54cac4c98)) + (instances + (project "BJ-Keyer" + (path "/854b5595-86e1-4ffa-88fb-a2c16da0c22c" + (reference "#PWR063") (unit 1) + ) + ) + ) + ) + (symbol (lib_id "Device:L") (at 60.96 234.95 90) (unit 1) (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) (uuid 5507e88c-a5c6-4a39-b08f-02f1bd5dd263) @@ -7353,6 +7407,31 @@ ) ) + (symbol (lib_id "power:+5V") (at -220.98 -294.64 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 62f6c9ed-20e7-420d-827f-2c974719cc15) + (property "Reference" "#PWR064" (at -220.98 -290.83 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+5V" (at -220.98 -298.883 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at -220.98 -294.64 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at -220.98 -294.64 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 38c0edc8-c833-4fdd-bd85-e0d2fedc098a)) + (instances + (project "BJ-Keyer" + (path "/854b5595-86e1-4ffa-88fb-a2c16da0c22c" + (reference "#PWR064") (unit 1) + ) + ) + ) + ) + (symbol (lib_id "Device:R_Small") (at 316.23 46.99 90) (unit 1) (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) (uuid 637382ab-9150-4e0e-bd57-613be486abe6) diff --git a/CAD/Frontplatte.bak b/CAD/Frontplatte.bak index 21a51c3..cc36567 100644 Binary files a/CAD/Frontplatte.bak and b/CAD/Frontplatte.bak differ diff --git a/CAD/Frontplatte.fpd b/CAD/Frontplatte.fpd index cc36567..de417c1 100644 Binary files a/CAD/Frontplatte.fpd and b/CAD/Frontplatte.fpd differ diff --git a/CAD/Rückseite.fpd b/CAD/Rückseite.fpd new file mode 100644 index 0000000..653620d Binary files /dev/null and b/CAD/Rückseite.fpd differ diff --git a/Documents/Dokumentation BJ-Keyer.aux b/Documents/Dokumentation BJ-Keyer.aux index 950083e..50ccc78 100644 --- a/Documents/Dokumentation BJ-Keyer.aux +++ b/Documents/Dokumentation BJ-Keyer.aux @@ -22,56 +22,90 @@ \providecommand\HyField@AuxAddToCoFields[2]{} \providecommand\BKM@entry[2]{} \babel@aux{ngerman}{} -\BKM@entry{id=1,dest={636861707465722E31},srcline={139},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030465C303030755C3030306E5C3030306B5C303030745C303030695C3030306F5C3030306E5C303030655C3030306E} -\@writefile{toc}{\contentsline {chapter}{\numberline {1}Funktionen}{5}{chapter.1}\protected@file@percent } +\BKM@entry{id=1,dest={636861707465722E31},srcline={139},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030485C303030695C3030306E5C303030775C303030655C303030695C303030735C303030655C3030305C3034305C3030307A5C303030755C303030725C3030305C3034305C303030445C3030306F5C3030306B5C303030755C3030306D5C303030655C3030306E5C303030745C303030615C303030745C303030695C3030306F5C3030306E} +\@writefile{toc}{\contentsline {chapter}{\numberline {1}Hinweise zur Dokumentation}{5}{chapter.1}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\BKM@entry{id=2,dest={636861707465722E32},srcline={154},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030485C303030695C3030306E5C303030775C303030655C303030695C303030735C303030655C3030305C3034305C3030307A5C303030755C303030725C3030305C3034305C303030445C3030306F5C3030306B5C303030755C3030306D5C303030655C3030306E5C303030745C303030615C303030745C303030695C3030306F5C3030306E} -\@writefile{toc}{\contentsline {chapter}{\numberline {2}Hinweise zur Dokumentation}{7}{chapter.2}\protected@file@percent } +\BKM@entry{id=2,dest={636861707465722E32},srcline={143},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030465C303030755C3030306E5C3030306B5C303030745C303030695C3030306F5C3030306E5C303030735C3030305C3337345C303030625C303030655C303030725C303030735C303030695C303030635C303030685C30303074} +\@writefile{toc}{\contentsline {chapter}{\numberline {2}Funktionsübersicht}{7}{chapter.2}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\BKM@entry{id=3,dest={636861707465722E33},srcline={158},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030475C303030725C303030755C3030306E5C303030645C3030306C5C303030615C303030675C303030655C3030306E} -\BKM@entry{id=4,dest={73656374696F6E2E332E31},srcline={159},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030425C303030655C303030745C303030725C303030695C303030655C303030625C303030735C303030615C303030725C303030745C303030655C3030306E5C3030305C3034305C303030655C303030695C3030306E5C303030655C303030735C3030305C3034305C3030304D5C3030306F5C303030725C303030735C303030655C3030302D5C3030304B5C303030655C303030795C303030655C303030725C30303073} -\BKM@entry{id=5,dest={73756273656374696F6E2E332E312E31},srcline={165},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030495C303030615C3030306D5C303030625C303030695C303030635C3030305C3034305C30303041} -\BKM@entry{id=6,dest={73756273656374696F6E2E332E312E32},srcline={194},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030495C303030615C3030306D5C303030625C303030695C303030635C3030305C3034305C30303042} +\BKM@entry{id=3,dest={636861707465722E33},srcline={167},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030475C303030725C303030755C3030306E5C303030645C3030306C5C303030615C303030675C303030655C3030306E} +\BKM@entry{id=4,dest={73656374696F6E2E332E31},srcline={168},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030425C303030655C303030745C303030725C303030695C303030655C303030625C303030735C303030615C303030725C303030745C303030655C3030306E5C3030305C3034305C303030655C303030695C3030306E5C303030655C303030735C3030305C3034305C3030304D5C3030306F5C303030725C303030735C303030655C3030302D5C3030304B5C303030655C303030795C303030655C303030725C30303073} +\BKM@entry{id=5,dest={73756273656374696F6E2E332E312E31},srcline={174},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030495C303030615C3030306D5C303030625C303030695C303030635C3030305C3034305C30303041} +\BKM@entry{id=6,dest={73756273656374696F6E2E332E312E32},srcline={203},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030495C303030615C3030306D5C303030625C303030695C303030635C3030305C3034305C30303042} \@writefile{toc}{\contentsline {chapter}{\numberline {3}Grundlagen}{9}{chapter.3}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {3.1}Betriebsarten eines Morse-Keyers}{9}{section.3.1}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}Iambic A}{9}{subsection.3.1.1}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Diagramm Iambic Mode A\relax }}{9}{figure.caption.4}\protected@file@percent } -\BKM@entry{id=7,dest={73756273656374696F6E2E332E312E33},srcline={226},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030555C3030306C5C303030745C303030695C3030306D5C303030615C303030745C303030695C30303063} +\BKM@entry{id=7,dest={73756273656374696F6E2E332E312E33},srcline={235},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030555C3030306C5C303030745C303030695C3030306D5C303030615C303030745C303030695C30303063} \@writefile{toc}{\contentsline {subsection}{\numberline {3.1.2}Iambic B}{10}{subsection.3.1.2}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces Diagramm Iambic Mode B\relax }}{10}{figure.caption.5}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {3.1.3}Ultimatic}{10}{subsection.3.1.3}\protected@file@percent } -\BKM@entry{id=8,dest={73756273656374696F6E2E332E312E34},srcline={259},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030505C303030755C3030306E5C3030306B5C303030745C3030302D5C303030535C303030745C303030725C303030695C303030635C303030685C3030305C3034305C303030535C303030705C303030655C303030695C303030635C303030685C303030655C30303072} -\BKM@entry{id=9,dest={73756273656374696F6E2E332E312E35},srcline={262},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030485C303030615C3030306E5C303030645C303030745C303030615C303030735C303030745C30303065} -\BKM@entry{id=10,dest={73756273656374696F6E2E332E312E36},srcline={268},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C3030305A5C303030655C303030695C303030745C303030765C303030655C303030725C303030685C303030615C3030306C5C303030745C303030655C3030306E} +\BKM@entry{id=8,dest={73756273656374696F6E2E332E312E34},srcline={268},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030505C303030755C3030306E5C3030306B5C303030745C3030302D5C303030535C303030745C303030725C303030695C303030635C303030685C3030305C3034305C303030535C303030705C303030655C303030695C303030635C303030685C303030655C30303072} +\BKM@entry{id=9,dest={73756273656374696F6E2E332E312E35},srcline={271},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030485C303030615C3030306E5C303030645C303030745C303030615C303030735C303030745C30303065} +\BKM@entry{id=10,dest={73756273656374696F6E2E332E312E36},srcline={277},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C3030305A5C303030655C303030695C303030745C303030765C303030655C303030725C303030685C303030615C3030306C5C303030745C303030655C3030306E} \@writefile{lof}{\contentsline {figure}{\numberline {3.3}{\ignorespaces Diagramm Ultimatic Mode\relax }}{11}{figure.caption.6}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {3.1.4}Punkt-Strich Speicher}{11}{subsection.3.1.4}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {3.1.5}Handtaste}{11}{subsection.3.1.5}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {3.1.6}Zeitverhalten}{11}{subsection.3.1.6}\protected@file@percent } -\BKM@entry{id=11,dest={636861707465722E34},srcline={270},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030445C303030695C303030655C3030305C3034305C303030425C303030655C303030645C303030695C303030655C3030306E5C303030755C3030306E5C30303067} -\BKM@entry{id=12,dest={73656374696F6E2E342E31},srcline={271},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030425C303030655C303030645C303030695C303030655C3030306E5C303030655C3030306C5C303030655C3030306D5C303030655C3030306E5C303030745C30303065} -\BKM@entry{id=13,dest={73756273656374696F6E2E342E312E31},srcline={273},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C3030305C3333345C303030625C303030655C303030725C303030735C303030695C303030635C303030685C30303074} +\BKM@entry{id=11,dest={636861707465722E34},srcline={279},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030445C303030695C303030655C3030305C3034305C303030425C303030655C303030645C303030695C303030655C3030306E5C303030755C3030306E5C30303067} +\BKM@entry{id=12,dest={73656374696F6E2E342E31},srcline={280},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030425C303030655C303030645C303030695C303030655C3030306E5C303030655C3030306C5C303030655C3030306D5C303030655C3030306E5C303030745C30303065} +\BKM@entry{id=13,dest={73656374696F6E2E342E32},srcline={282},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C3030304D5C303030655C3030306E5C303030755C303030655C303030735C303030745C303030725C303030755C3030306B5C303030745C303030755C30303072} +\BKM@entry{id=14,dest={73656374696F6E2E342E33},srcline={284},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030455C303030695C3030306E5C303030735C303030745C303030655C3030306C5C3030306C5C303030755C3030306E5C303030675C303030655C3030306E} +\BKM@entry{id=15,dest={73756273656374696F6E2E342E332E31},srcline={285},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030725C303030615C3030306E5C303030735C303030635C303030655C303030695C303030765C303030655C303030725C303030735C303030745C303030655C303030755C303030655C303030725C303030755C3030306E5C30303067} +\BKM@entry{id=16,dest={73756273656374696F6E2E342E332E32},srcline={286},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C3030304D5C303030695C303030745C303030685C3030305C3336365C303030725C303030745C3030306F5C3030306E} +\BKM@entry{id=17,dest={73756273656374696F6E2E342E332E33},srcline={287},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030495C303030615C3030306D5C303030625C303030695C303030635C3030305C3034305C3030304D5C3030306F5C303030645C303030655C30303073} +\BKM@entry{id=18,dest={73756273656374696F6E2E342E332E34},srcline={288},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030505C303030755C3030306E5C3030306B5C303030745C3030302F5C303030535C303030745C303030725C303030695C303030635C303030685C3030305C3034305C303030535C303030705C303030655C303030695C303030635C303030685C303030655C30303072} +\BKM@entry{id=19,dest={73756273656374696F6E2E342E332E35},srcline={289},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C3030304C5C303030695C3030306E5C3030306B5C303030735C3030302D5C3030305C3034305C303030755C3030306E5C303030645C3030305C3034305C303030525C303030655C303030635C303030685C303030745C303030735C303030685C3030305C3334345C3030306E5C303030645C303030655C30303072} +\BKM@entry{id=20,dest={73756273656374696F6E2E342E332E36},srcline={290},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030505C303030755C3030306E5C3030306B5C303030745C3030302F5C303030535C303030745C303030725C303030695C303030635C303030685C3030305C3034305C303030565C303030655C303030725C303030685C3030305C3334345C3030306C5C303030745C3030306E5C303030695C30303073} +\BKM@entry{id=21,dest={73756273656374696F6E2E342E332E37},srcline={291},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030505C303030755C3030306E5C3030306B5C303030745C3030302F5C303030535C303030745C303030725C303030695C303030635C303030685C3030305C3034305C303030565C303030655C303030725C303030685C3030305C3334345C3030306C5C303030745C3030306E5C303030695C303030735C3030305C3034305C303030615C303030755C303030745C3030306F5C3030306D5C303030615C303030745C303030695C303030735C303030635C30303068} +\BKM@entry{id=22,dest={73756273656374696F6E2E342E332E38},srcline={292},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030475C303030655C303030735C303030635C303030685C303030775C303030695C3030306E5C303030645C303030695C303030675C3030306B5C303030655C303030695C303030745C303030735C303030615C3030306E5C3030307A5C303030655C303030695C303030675C30303065} +\BKM@entry{id=23,dest={73756273656374696F6E2E342E332E39},srcline={293},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030415C3030306E5C303030735C303030745C303030695C303030655C303030675C303030735C3030307A5C303030655C303030695C303030745C3030305C3034305C3030304D5C303030695C303030745C303030685C3030305C3336365C303030725C303030745C3030306F5C3030306E} +\BKM@entry{id=24,dest={73756273656374696F6E2E342E332E3130},srcline={294},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030455C3030306E5C303030745C303030705C303030725C303030655C3030306C5C3030306C5C303030755C3030306E5C303030675C3030305C3034305C303030665C3030305C3337345C303030725C3030305C3034305C303030485C303030615C3030306E5C303030645C303030745C303030615C303030735C303030745C303030655C3030306E} +\BKM@entry{id=25,dest={73656374696F6E2E342E34},srcline={296},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030455C303030695C3030306E5C303030735C303030745C303030655C3030306C5C3030306C5C303030655C3030306E5C3030305C3034305C303030645C303030655C303030725C3030305C3034305C303030475C303030655C303030735C303030635C303030685C303030775C303030695C3030306E5C303030645C303030695C303030675C3030306B5C303030655C303030695C30303074} +\BKM@entry{id=26,dest={73656374696F6E2E342E35},srcline={297},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C3030304C5C303030615C303030755C303030745C303030735C303030745C3030305C3334345C303030725C3030306B5C303030655C3030305C3034305C3030304D5C303030695C303030745C303030685C3030305C3336365C303030725C303030745C3030306F5C3030306E} \@writefile{toc}{\contentsline {chapter}{\numberline {4}Die Bedienung}{13}{chapter.4}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {4.1}Bedienelemente}{13}{section.4.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}Übersicht}{13}{subsection.4.1.1}\protected@file@percent } -\BKM@entry{id=14,dest={636861707465722E35},srcline={274},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030445C303030695C303030655C3030305C3034305C303030535C303030635C303030685C303030615C3030306C5C303030745C303030755C3030306E5C30303067} -\BKM@entry{id=15,dest={73656374696F6E2E352E31},srcline={276},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030425C303030655C303030735C303030635C303030685C303030725C303030655C303030695C303030625C303030755C3030306E5C30303067} +\@writefile{toc}{\contentsline {section}{\numberline {4.2}Menuestruktur}{14}{section.4.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4.3}Einstellungen}{14}{section.4.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}Transceiversteuerung}{14}{subsection.4.3.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.2}Mithörton}{14}{subsection.4.3.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.3}Iambic Modes}{14}{subsection.4.3.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.4}Punkt/Strich Speicher}{14}{subsection.4.3.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.5}Links- und Rechtshänder}{14}{subsection.4.3.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.6}Punkt/Strich Verhältnis}{14}{subsection.4.3.6}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.7}Punkt/Strich Verhältnis automatisch}{14}{subsection.4.3.7}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.8}Geschwindigkeitsanzeige}{14}{subsection.4.3.8}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.9}Anstiegszeit Mithörton}{14}{subsection.4.3.9}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.10}Entprellung für Handtasten}{14}{subsection.4.3.10}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4.4}Einstellen der Geschwindigkeit}{14}{section.4.4}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4.5}Lautstärke Mithörton}{14}{section.4.5}\protected@file@percent } +\BKM@entry{id=27,dest={636861707465722E35},srcline={299},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030445C303030695C303030655C3030305C3034305C303030535C303030635C303030685C303030615C3030306C5C303030745C303030755C3030306E5C30303067} +\BKM@entry{id=28,dest={73656374696F6E2E352E31},srcline={300},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030535C303030705C303030615C3030306E5C3030306E5C303030755C3030306E5C303030675C303030735C303030765C303030655C303030725C303030735C3030306F5C303030725C303030675C303030755C3030306E5C30303067} +\BKM@entry{id=29,dest={73656374696F6E2E352E32},srcline={301},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C3030304D5C303030695C3030306B5C303030725C3030306F5C303030635C3030306F5C3030306E5C303030745C303030725C3030306F5C3030306C5C3030306C5C303030655C303030725C3030305C3034305C303030415C303030545C3030304D5C303030655C303030675C303030615C303030335C303030325C303030385C30303050} +\BKM@entry{id=30,dest={73656374696F6E2E352E33},srcline={302},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030555C303030535C303030425C3030305C3034305C303030435C3030306F5C3030306E5C303030745C303030725C3030306F5C3030306C5C3030306C5C303030655C303030725C3030305C3034305C303030465C303030545C303030325C303030335C30303030} +\BKM@entry{id=31,dest={73656374696F6E2E352E34},srcline={303},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030435C3030306C5C303030615C303030735C303030735C3030305C3034305C303030445C3030305C3034305C3030304E5C303030465C3030302D5C303030565C303030655C303030725C303030735C303030745C3030305C3334345C303030725C3030306B5C303030655C30303072} +\BKM@entry{id=32,dest={73656374696F6E2E352E35},srcline={305},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030425C303030655C303030735C303030635C303030685C303030725C303030655C303030695C303030625C303030755C3030306E5C30303067} \@writefile{toc}{\contentsline {chapter}{\numberline {5}Die Schaltung}{15}{chapter.5}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\@writefile{toc}{\contentsline {section}{\numberline {5.1}Beschreibung}{15}{section.5.1}\protected@file@percent } -\BKM@entry{id=16,dest={636861707465722E36},srcline={277},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030445C303030695C303030655C3030305C3034305C303030535C3030306F5C303030665C303030745C303030775C303030615C303030725C30303065} -\BKM@entry{id=17,dest={73656374696F6E2E362E31},srcline={278},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C30303032} -\BKM@entry{id=18,dest={73656374696F6E2E362E32},srcline={281},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C30303031} -\BKM@entry{id=19,dest={73656374696F6E2E362E33},srcline={284},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C30303030} -\BKM@entry{id=20,dest={73756273656374696F6E2E362E332E31},srcline={287},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C303030655C303030695C3030306E5C303030735C303030745C303030655C3030306C5C3030306C5C303030655C3030306E} -\BKM@entry{id=21,dest={73656374696F6E2E362E34},srcline={292},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030535C303030695C3030306E5C303030755C303030735C3030305C3034305C3030304D5C303030695C303030745C303030685C3030305C3336365C303030725C303030745C3030306F5C3030306E5C3030305C3034305C303030645C303030755C303030725C303030635C303030685C3030305C3034305C303030505C303030755C3030306C5C303030735C303030775C303030655C303030695C303030745C303030655C3030306E5C3030306D5C3030306F5C303030645C303030755C3030306C5C303030615C303030745C303030695C3030306F5C3030306E} -\BKM@entry{id=22,dest={73756273656374696F6E2E362E342E31},srcline={297},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030475C303030725C303030755C3030306E5C303030645C3030306C5C303030615C303030675C303030655C3030306E} +\@writefile{toc}{\contentsline {section}{\numberline {5.1}Spannungsversorgung}{15}{section.5.1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.2}Mikrocontroller ATMega328P}{15}{section.5.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.3}USB Controller FT230}{15}{section.5.3}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.4}Class D NF-Verstärker}{15}{section.5.4}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.5}Beschreibung}{15}{section.5.5}\protected@file@percent } +\BKM@entry{id=33,dest={636861707465722E36},srcline={306},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030445C303030695C303030655C3030305C3034305C303030535C3030306F5C303030665C303030745C303030775C303030615C303030725C30303065} +\BKM@entry{id=34,dest={73656374696F6E2E362E31},srcline={307},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C30303032} +\BKM@entry{id=35,dest={73656374696F6E2E362E32},srcline={310},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C30303031} +\BKM@entry{id=36,dest={73656374696F6E2E362E33},srcline={313},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C30303030} +\BKM@entry{id=37,dest={73756273656374696F6E2E362E332E31},srcline={316},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C303030655C303030695C3030306E5C303030735C303030745C303030655C3030306C5C3030306C5C303030655C3030306E} +\BKM@entry{id=38,dest={73656374696F6E2E362E34},srcline={321},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030535C303030695C3030306E5C303030755C303030735C3030305C3034305C3030304D5C303030695C303030745C303030685C3030305C3336365C303030725C303030745C3030306F5C3030306E5C3030305C3034305C303030645C303030755C303030725C303030635C303030685C3030305C3034305C303030505C303030755C3030306C5C303030735C303030775C303030655C303030695C303030745C303030655C3030306E5C3030306D5C3030306F5C303030645C303030755C3030306C5C303030615C303030745C303030695C3030306F5C3030306E} +\BKM@entry{id=39,dest={73756273656374696F6E2E362E342E31},srcline={326},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030475C303030725C303030755C3030306E5C303030645C3030306C5C303030615C303030675C303030655C3030306E} \@writefile{toc}{\contentsline {chapter}{\numberline {6}Die Software}{17}{chapter.6}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} @@ -85,24 +119,24 @@ \@writefile{toc}{\contentsline {subsubsection}{\nonumberline Pulsweitenmodulation}{18}{subsubsection*.9}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {6.2}{\ignorespaces Symmetrisches Rechtecksignal an PB3\relax }}{19}{figure.caption.10}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {6.3}{\ignorespaces PWM - Tastgrad - Sinus\relax }}{20}{figure.caption.11}\protected@file@percent } -\BKM@entry{id=23,dest={73756273656374696F6E2E362E342E32},srcline={425},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030535C303030695C3030306E5C303030755C303030735C303030745C303030615C303030625C303030655C3030306C5C3030306C5C30303065} +\BKM@entry{id=40,dest={73756273656374696F6E2E362E342E32},srcline={454},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030535C303030695C3030306E5C303030755C303030735C303030745C303030615C303030625C303030655C3030306C5C3030306C5C30303065} \@writefile{lot}{\contentsline {table}{\numberline {6.1}{\ignorespaces OCR1A Werte für verschiedene Frequenzen des Mithörtons\relax }}{21}{table.caption.12}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {6.4.2}Sinustabelle}{21}{subsection.6.4.2}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {6.4}{\ignorespaces Sinus nach Tabelle vom Python3 Script als Linie\relax }}{22}{figure.caption.13}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {6.5}{\ignorespaces Sinus nach der Tabelle vom Python3 Script mit Stützpunkten\relax }}{22}{figure.caption.14}\protected@file@percent } -\BKM@entry{id=24,dest={636861707465722E37},srcline={455},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030455C3030306E5C303030745C303030775C303030695C303030635C3030306B5C3030306C5C303030755C3030306E5C303030675C303030735C303030755C3030306D5C303030675C303030655C303030625C303030755C3030306E5C30303067} +\BKM@entry{id=41,dest={636861707465722E37},srcline={484},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030455C3030306E5C303030745C303030775C303030695C303030635C3030306B5C3030306C5C303030755C3030306E5C303030675C303030735C303030755C3030306D5C303030675C303030655C303030625C303030755C3030306E5C30303067} \@writefile{toc}{\contentsline {chapter}{\numberline {7}Entwicklungsumgebung}{23}{chapter.7}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\BKM@entry{id=25,dest={636861707465722A2E3135},srcline={480},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030615C303030625C303030655C3030306C5C3030306C5C303030655C3030306E} +\BKM@entry{id=42,dest={636861707465722A2E3135},srcline={509},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030615C303030625C303030655C3030306C5C3030306C5C303030655C3030306E} \@writefile{toc}{\contentsline {chapter}{\nonumberline Tabellen}{25}{chapter*.15}\protected@file@percent } \gdef\lot@l@number{41.11653pt} -\BKM@entry{id=26,dest={636861707465722A2E3136},srcline={481},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030415C303030625C303030625C303030695C3030306C5C303030645C303030755C3030306E5C303030675C303030655C3030306E} +\BKM@entry{id=43,dest={636861707465722A2E3136},srcline={510},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030415C303030625C303030625C303030695C3030306C5C303030645C303030755C3030306E5C303030675C303030655C3030306E} \@writefile{toc}{\contentsline {chapter}{\nonumberline Abbildungen}{27}{chapter*.16}\protected@file@percent } \gdef\lof@l@number{43.9643pt} \global\@namedef{scr@dte@chapter@lastmaxnumwidth}{10.40242pt} \global\@namedef{scr@dte@section@lastmaxnumwidth}{16.60352pt} -\global\@namedef{scr@dte@subsection@lastmaxnumwidth}{24.1506pt} +\global\@namedef{scr@dte@subsection@lastmaxnumwidth}{29.18199pt} \global\@namedef{scr@dte@table@lastmaxnumwidth}{40.11018pt} \global\@namedef{scr@dte@figure@lastmaxnumwidth}{42.95795pt} \@writefile{toc}{\providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file} diff --git a/Documents/Dokumentation BJ-Keyer.log b/Documents/Dokumentation BJ-Keyer.log index ce8ff86..6a13514 100644 --- a/Documents/Dokumentation BJ-Keyer.log +++ b/Documents/Dokumentation BJ-Keyer.log @@ -1,4 +1,4 @@ -This is LuaHBTeX, Version 1.12.0 (TeX Live 2020/Debian) (format=lualatex 2023.6.25) 13 AUG 2023 16:47 +This is LuaHBTeX, Version 1.12.0 (TeX Live 2020/Debian) (format=lualatex 2023.6.25) 25 AUG 2023 14:32 restricted system commands enabled. **"Dokumentation BJ-Keyer.tex" ("./Dokumentation BJ-Keyer.tex" @@ -2078,8 +2078,6 @@ LaTeX Font Info: Font shape `TU/AsanaMath(3)/m/n' will be (Font) scaled to size 6.57233pt on input line 102. LaTeX Font Info: Font shape `TU/AsanaMath(3)/m/n' will be (Font) scaled to size 4.69452pt on input line 102. -LaTeX Font Info: Font shape `TU/lmss/m/it' in size <10> not available -(Font) Font shape `TU/lmss/m/sl' tried instead on input line 105. [1 Non-PDF special ignored! Non-PDF special ignored! @@ -2104,42 +2102,43 @@ vailable t line 137. LaTeX Font Info: Font shape `TU/TeXGyrePagella(0)/m/it' will be (Font) scaled to size 8.93831pt on input line 137. - [2] ("./Dokumentation BJ-Keyer.toc") -\tf@toc=\write5 + [2] ("./Dokumentation BJ-Keyer.toc" [3 -\openout5 = Dokumentation BJ-Keyer.toc - [3 +]) +\tf@toc=\write5 -] [4 +\openout5 = Dokumentation BJ-Keyer.toc + [4] +chapter 1. +[5 -] -chapter 1. -LaTeX Font Info: Font shape `TU/TeXGyrePagella(0)/b/n' will be -(Font) scaled to size 10.06277pt on input line 143. -[5] [6 +] [6 ] chapter 2. -[7] [8 +[7 +Missing character: There is no Ṕ (U+1E54) in font TeXGyrePagella:mode=node;scr +ipt=latn;language=dflt;+tlig;! +] [8 ] chapter 3. -Overfull \hbox (8.57524pt too wide) in paragraph at lines 190--191 +Overfull \hbox (8.57524pt too wide) in paragraph at lines 199--200 [][] [] [9] -Overfull \hbox (8.57524pt too wide) in paragraph at lines 219--220 +Overfull \hbox (8.57524pt too wide) in paragraph at lines 228--229 [][] [] -Overfull \hbox (8.57524pt too wide) in paragraph at lines 253--254 +Overfull \hbox (13.85313pt too wide) in paragraph at lines 262--263 [][] [] @@ -2148,67 +2147,71 @@ Overfull \hbox (8.57524pt too wide) in paragraph at lines 253--254 ] chapter 4. -[13] [14 +Underfull \vbox (badness 10000) has occurred while \output is active [] -] + [13] +[14] chapter 5. -[15] [16 +[15 + + +] [16 ] chapter 6. LaTeX Font Info: Font shape `TU/TeXGyrePagella(0)/m/n' will be -(Font) scaled to size 7.34583pt on input line 290. +(Font) scaled to size 7.34583pt on input line 319. LaTeX Font Info: Font shape `TU/TeXGyrePagella(0)/m/n' will be -(Font) scaled to size 6.03767pt on input line 290. +(Font) scaled to size 6.03767pt on input line 319. [17] [18] LaTeX Font Info: Font shape `TU/TeXGyrePagella(1)/m/n' will be -(Font) scaled to size 10.06277pt on input line 348. +(Font) scaled to size 10.06277pt on input line 377. LaTeX Font Info: Font shape `TU/TeXGyrePagella(1)/m/n' will be -(Font) scaled to size 7.34583pt on input line 348. +(Font) scaled to size 7.34583pt on input line 377. LaTeX Font Info: Font shape `TU/TeXGyrePagella(1)/m/n' will be -(Font) scaled to size 6.03767pt on input line 348. +(Font) scaled to size 6.03767pt on input line 377. LaTeX Font Info: Font shape `TU/TeXGyrePagella(0)/m/n' will be -(Font) scaled to size 3.67291pt on input line 348. +(Font) scaled to size 3.67291pt on input line 377. LaTeX Font Info: Font shape `TU/TeXGyrePagella(0)/m/n' will be -(Font) scaled to size 8.27078pt on input line 378. +(Font) scaled to size 8.27078pt on input line 407. LaTeX Font Info: Font shape `TU/AsanaMath(1)/m/n' will be -(Font) scaled to size 8.45096pt on input line 378. +(Font) scaled to size 8.45096pt on input line 407. LaTeX Font Info: Font shape `TU/AsanaMath(1)/m/n' will be -(Font) scaled to size 5.63397pt on input line 378. +(Font) scaled to size 5.63397pt on input line 407. LaTeX Font Info: Font shape `TU/TeXGyrePagella(1)/m/n' will be -(Font) scaled to size 8.27078pt on input line 378. +(Font) scaled to size 8.27078pt on input line 407. LaTeX Font Info: Font shape `TU/TeXGyrePagella(1)/m/n' will be -(Font) scaled to size 5.51385pt on input line 378. +(Font) scaled to size 5.51385pt on input line 407. LaTeX Font Info: Font shape `TU/TeXGyrePagella(1)/m/n' will be -(Font) scaled to size 4.59488pt on input line 378. +(Font) scaled to size 4.59488pt on input line 407. LaTeX Font Info: Font shape `TU/AsanaMath(2)/m/n' will be -(Font) scaled to size 8.45178pt on input line 378. +(Font) scaled to size 8.45178pt on input line 407. LaTeX Font Info: Font shape `TU/AsanaMath(2)/m/n' will be -(Font) scaled to size 5.63452pt on input line 378. +(Font) scaled to size 5.63452pt on input line 407. LaTeX Font Info: Font shape `TU/AsanaMath(3)/m/n' will be -(Font) scaled to size 8.45013pt on input line 378. +(Font) scaled to size 8.45013pt on input line 407. LaTeX Font Info: Font shape `TU/AsanaMath(3)/m/n' will be -(Font) scaled to size 5.63342pt on input line 378. +(Font) scaled to size 5.63342pt on input line 407. LaTeX Font Info: Font shape `TU/TeXGyrePagella(0)/m/n' will be -(Font) scaled to size 5.51385pt on input line 378. -<../Pictures/pwm_duty_cycle.jpg, id=175, 442.65375pt x 149.55875pt> +(Font) scaled to size 5.51385pt on input line 407. +<../Pictures/pwm_duty_cycle.jpg, id=208, 442.65375pt x 149.55875pt> File: ../Pictures/pwm_duty_cycle.jpg Graphic file (type jpg) -Package luatex.def Info: ../Pictures/pwm_duty_cycle.jpg used on input line 383. +Package luatex.def Info: ../Pictures/pwm_duty_cycle.jpg used on input line 412. (luatex.def) Requested size: 309.8555pt x 104.6904pt. [19] [20<../Pictures/pwm_duty_cycle.jpg>] -<../Pictures/sinewave-line.jpg, id=199, 462.528pt x 346.896pt> +<../Pictures/sinewave-line.jpg, id=232, 462.528pt x 346.896pt> File: ../Pictures/sinewave-line.jpg Graphic file (type jpg) -Package luatex.def Info: ../Pictures/sinewave-line.jpg used on input line 432. +Package luatex.def Info: ../Pictures/sinewave-line.jpg used on input line 461. (luatex.def) Requested size: 231.26343pt x 173.44757pt. -<../Pictures/sinewave-dots.jpg, id=200, 462.528pt x 346.896pt> +<../Pictures/sinewave-dots.jpg, id=233, 462.528pt x 346.896pt> File: ../Pictures/sinewave-dots.jpg Graphic file (type jpg) -Package luatex.def Info: ../Pictures/sinewave-dots.jpg used on input line 451. +Package luatex.def Info: ../Pictures/sinewave-dots.jpg used on input line 480. (luatex.def) Requested size: 231.26343pt x 173.44757pt. [21] [22<../Pictures/sinewave-line.jpg><../Pictures/sinewave-dots.jpg>] chapter 7. @@ -2237,36 +2240,34 @@ Package rerunfilecheck Info: File `"Dokumentation BJ-Keyer".out' has not changed ) (\end occurred inside a group at level 1) -### simple group (level 1) entered at line 374 ({) +### simple group (level 1) entered at line 403 ({) ### bottom level Here is how much of LuaTeX's memory you used: - 51138 strings out of 478824 + 51169 strings out of 478824 100000,1977958 words of node,token memory allocated 1065 words of node memory still in use: 28 hlist, 2 vlist, 5 rule, 4 dir, 10 glue, 7 kern, 1 glyph, 36 attribute, 84 glue_spec, 27 attribute_list, 2 write nodes - avail lists: 2:3409,3:922,4:264,5:602,6:82,7:6078,8:57,9:552,10:11,11:485 - 68871 multiletter control sequences out of 65536+600000 - 172 fonts using 38160879 bytes + avail lists: 2:3409,3:922,4:306,5:602,6:104,7:6078,8:71,9:552,10:11,11:485 + 68885 multiletter control sequences out of 65536+600000 + 169 fonts using 37649639 bytes 111i,16n,125p,10642b,2256s stack positions out of 5000i,500n,10000p,200000b,200000s -Output written on Dokumentation BJ-Keyer.pdf (27 pages, 199024 bytes). - -PDF statistics: 418 PDF objects out of 1000 (max. 8388607) - 335 compressed objects within 4 object streams - 84 named destinations out of 1000 (max. 131072) - 224 words of extra memory for PDF output out of 10000 (max. 100000000) +opentype/public/lm/lmsans8-regular.otf>< +/usr/share/texmf/fonts/opentype/public/lm/lmmono10-regular.otf> +Output written on Dokumentation BJ-Keyer.pdf (27 pages, 199568 bytes). + +PDF statistics: 492 PDF objects out of 1000 (max. 8388607) + 414 compressed objects within 5 object streams + 101 named destinations out of 1000 (max. 131072) + 360 words of extra memory for PDF output out of 10000 (max. 100000000) diff --git a/Documents/Dokumentation BJ-Keyer.pdf b/Documents/Dokumentation BJ-Keyer.pdf index def4c33..2bd44fd 100644 Binary files a/Documents/Dokumentation BJ-Keyer.pdf and b/Documents/Dokumentation BJ-Keyer.pdf differ diff --git a/Documents/Dokumentation BJ-Keyer.tex b/Documents/Dokumentation BJ-Keyer.tex index 6948d26..1c5923c 100644 --- a/Documents/Dokumentation BJ-Keyer.tex +++ b/Documents/Dokumentation BJ-Keyer.tex @@ -102,7 +102,7 @@ pdfproducer={LaTeX}] Site \url{https://isnix.de} \\ \vspace{2cm} \normalsize - \dictum[DK5KE]{Die Morsetelegrafie ist der Urknall des Internets.} + \dictum{Die Morsetelegrafie ist der Urknall des Internets.} \end{titlepage} @@ -136,25 +136,34 @@ Tom, DL7BJ % \newline \tableofcontents -\chapter{Funktionen} -\begin{itemize} -\item{BJ-Keyer Funktionsübersicht} +\chapter{Hinweise zur Dokumentation} + +In dieser Dokumentation werden diverse gleichbleibende Darstellungsweisen verwendet. Dies erleichtert Dir das Verständnis der Bedeutung. Texte, die auf dem Display erscheinen, werden in der Bedienungsanleitung so \texttt{dargestellt}. Quellcode wird in einer farbigen Code-Darstellung eingebunden. + +\chapter{Funktionsübersicht} +%%\begin{itemize} +%%\item{BJ-Keyer Funktionsübersicht} \begin{itemize} - \item{Iambic A und Iambic B Mode} + \item{Transceiver 1 oder 2 oder beide wählbar} + \item{Iambic A, Iambic B und Ultimatic Mode} + \item{Mithörton als Sinus, abschaltbar} + \item{Anzeige der Geschwindigkeit in WpM oder BpM} + \item{linkes/rechts Paddle vertauschen (Links- oder Rechtshänder)} + \item{Punkt/Strich Verhältnis von 1:2 bis 1:3 einstellbar} + \item{Ṕunkt/Strich Verhältnis automatisch über die Geschwindigkeit (abschaltbar)} + \item{Punkt/Strich Speicher abschaltbar (Iambic Modes)} + \item{Frequenz des Mithörtons von 300-1000Hz einstellbar} + \item{Anstieg (Attack) des Mithörtons einstellbar (kein Klicken im LS)} + \item{Entprellzeit für Handtasten einstellbar} \item{Anschluß für 3 Handtasten und 3 Paddle} \item{Ausgänge für die Ansteuerung von 2 Transceivern} \item{optionales Tastenfeld für Speicher} + \item{Speicherprogrammierung über USB} \item{Stromversorgung 7-15V} \item{Integrierter Lautsprecher für Mithörton} - \item{Mithörton als Sinussignal} - \item{USB Anschluß für Firmware Update} - \end{itemize} +%% \end{itemize} \end{itemize} -\chapter{Hinweise zur Dokumentation} - -In dieser Dokumentation werden diverse gleichbleibende Darstellungsweisen verwendet. Dies erleichtert Dir das Verständnis der Bedeutung. Texte, die auf dem Display erscheinen, werden in der Bedienungsanleitung so \texttt{dargestellt}. Quellcode wird in einer farbigen Code-Darstellung eingebunden. - \chapter{Grundlagen} \section{Betriebsarten eines Morse-Keyers} @@ -176,7 +185,7 @@ Im Iambic Mode A wird wird immer nur das Zeichen gegeben, dessen Paddle gerade b %% Timing DIT\ & lhhhhhhhhhhlllll \\ DAH\ & 0.25llhhhhhhhhh0.75hlllll \\ - Mode B\ & lhlhhhlhlhhhllll \\ + Mode A\ & lhlhhhlhlhhhllll \\ \extracode \makeatletter \begin{pgfonlayer}{background} @@ -239,7 +248,7 @@ Werden die Paddle gleichzeitig losgelassen, stoppt die Aussendung der Zeichen oh %% Timing DIT\ & lhhhhhhhhhhhllll \\ DAH\ & 0.25llhhhhhhh0.75hlllllll \\ - Mode B\ & lhlhhhlhhhlhllll \\ + Ultimatic\ & lhlhhhlhhhlhllll \\ \extracode \makeatletter \begin{pgfonlayer}{background} @@ -270,8 +279,28 @@ Im Diagramm ist dieses Verhalten am Beispiel des Buchstabens P dargestellt. Zuer \chapter{Die Bedienung} \section{Bedienelemente} Als Bedienelemente stehen ein Drehencoder für diverse Einstellungen und ein Potentiometer für die Lautstärke des Mithörtons zur Verfügung. Optional kann ein Tastenfeld mit max. 5 Tastern für Zusatzfunktion wie Textspeicher angeschlossen werden. Zur Ausgabe von eingestellten Parametern wird ein 0,96$"$ OLED Display mit 128x64 Pixeln verwendet. -\subsection{Übersicht} +\section{Menuestruktur} + +\section{Einstellungen} +\subsection{Transceiversteuerung} +\subsection{Mithörton} +\subsection{Iambic Modes} +\subsection{Punkt/Strich Speicher} +\subsection{Links- und Rechtshänder} +\subsection{Punkt/Strich Verhältnis} +\subsection{Punkt/Strich Verhältnis automatisch} +\subsection{Geschwindigkeitsanzeige} +\subsection{Anstiegszeit Mithörton} +\subsection{Entprellung für Handtasten} + +\section{Einstellen der Geschwindigkeit} +\section{Lautstärke Mithörton} + \chapter{Die Schaltung} +\section{Spannungsversorgung} +\section{Mikrocontroller ATMega328P} +\section{USB Controller FT230} +\section{Class D NF-Verstärker} \section{Beschreibung} \chapter{Die Software} diff --git a/Documents/Dokumentation BJ-Keyer.toc b/Documents/Dokumentation BJ-Keyer.toc index dc63859..b4db2b9 100644 --- a/Documents/Dokumentation BJ-Keyer.toc +++ b/Documents/Dokumentation BJ-Keyer.toc @@ -1,6 +1,6 @@ \babel@toc {ngerman}{} -\contentsline {chapter}{\numberline {1}Funktionen}{5}{chapter.1}% -\contentsline {chapter}{\numberline {2}Hinweise zur Dokumentation}{7}{chapter.2}% +\contentsline {chapter}{\numberline {1}Hinweise zur Dokumentation}{5}{chapter.1}% +\contentsline {chapter}{\numberline {2}Funktionsübersicht}{7}{chapter.2}% \contentsline {chapter}{\numberline {3}Grundlagen}{9}{chapter.3}% \contentsline {section}{\numberline {3.1}Betriebsarten eines Morse-Keyers}{9}{section.3.1}% \contentsline {subsection}{\numberline {3.1.1}Iambic A}{9}{subsection.3.1.1}% @@ -11,9 +11,26 @@ \contentsline {subsection}{\numberline {3.1.6}Zeitverhalten}{11}{subsection.3.1.6}% \contentsline {chapter}{\numberline {4}Die Bedienung}{13}{chapter.4}% \contentsline {section}{\numberline {4.1}Bedienelemente}{13}{section.4.1}% -\contentsline {subsection}{\numberline {4.1.1}Übersicht}{13}{subsection.4.1.1}% +\contentsline {section}{\numberline {4.2}Menuestruktur}{14}{section.4.2}% +\contentsline {section}{\numberline {4.3}Einstellungen}{14}{section.4.3}% +\contentsline {subsection}{\numberline {4.3.1}Transceiversteuerung}{14}{subsection.4.3.1}% +\contentsline {subsection}{\numberline {4.3.2}Mithörton}{14}{subsection.4.3.2}% +\contentsline {subsection}{\numberline {4.3.3}Iambic Modes}{14}{subsection.4.3.3}% +\contentsline {subsection}{\numberline {4.3.4}Punkt/Strich Speicher}{14}{subsection.4.3.4}% +\contentsline {subsection}{\numberline {4.3.5}Links- und Rechtshänder}{14}{subsection.4.3.5}% +\contentsline {subsection}{\numberline {4.3.6}Punkt/Strich Verhältnis}{14}{subsection.4.3.6}% +\contentsline {subsection}{\numberline {4.3.7}Punkt/Strich Verhältnis automatisch}{14}{subsection.4.3.7}% +\contentsline {subsection}{\numberline {4.3.8}Geschwindigkeitsanzeige}{14}{subsection.4.3.8}% +\contentsline {subsection}{\numberline {4.3.9}Anstiegszeit Mithörton}{14}{subsection.4.3.9}% +\contentsline {subsection}{\numberline {4.3.10}Entprellung für Handtasten}{14}{subsection.4.3.10}% +\contentsline {section}{\numberline {4.4}Einstellen der Geschwindigkeit}{14}{section.4.4}% +\contentsline {section}{\numberline {4.5}Lautstärke Mithörton}{14}{section.4.5}% \contentsline {chapter}{\numberline {5}Die Schaltung}{15}{chapter.5}% -\contentsline {section}{\numberline {5.1}Beschreibung}{15}{section.5.1}% +\contentsline {section}{\numberline {5.1}Spannungsversorgung}{15}{section.5.1}% +\contentsline {section}{\numberline {5.2}Mikrocontroller ATMega328P}{15}{section.5.2}% +\contentsline {section}{\numberline {5.3}USB Controller FT230}{15}{section.5.3}% +\contentsline {section}{\numberline {5.4}Class D NF-Verstärker}{15}{section.5.4}% +\contentsline {section}{\numberline {5.5}Beschreibung}{15}{section.5.5}% \contentsline {chapter}{\numberline {6}Die Software}{17}{chapter.6}% \contentsline {section}{\numberline {6.1}Timer 2}{17}{section.6.1}% \contentsline {section}{\numberline {6.2}Timer 1}{17}{section.6.2}% diff --git a/Documents/Doxygen/html/annotated.html b/Documents/Doxygen/html/annotated.html new file mode 100644 index 0000000..06a827e --- /dev/null +++ b/Documents/Doxygen/html/annotated.html @@ -0,0 +1,110 @@ + + + + + + + +BJ-Keyer: Datenstrukturen + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Datenstrukturen
+
+
+
Hier folgt die Aufzählung aller Datenstrukturen mit einer Kurzbeschreibung:
+ + + + + + +
 CConfig
 CMenuCtrl
 CMessage
 CSerialState
 CState
+
+
+
+ + + + diff --git a/Documents/Doxygen/html/annotated_dup.js b/Documents/Doxygen/html/annotated_dup.js new file mode 100644 index 0000000..290bc35 --- /dev/null +++ b/Documents/Doxygen/html/annotated_dup.js @@ -0,0 +1,8 @@ +var annotated_dup = +[ + [ "Config", "structConfig.html", "structConfig" ], + [ "MenuCtrl", "structMenuCtrl.html", "structMenuCtrl" ], + [ "Message", "structMessage.html", "structMessage" ], + [ "SerialState", "structSerialState.html", "structSerialState" ], + [ "State", "structState.html", "structState" ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/bc_s.png b/Documents/Doxygen/html/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/Documents/Doxygen/html/bc_s.png differ diff --git a/Documents/Doxygen/html/bdwn.png b/Documents/Doxygen/html/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/Documents/Doxygen/html/bdwn.png differ diff --git a/Documents/Doxygen/html/classes.html b/Documents/Doxygen/html/classes.html new file mode 100644 index 0000000..1388877 --- /dev/null +++ b/Documents/Doxygen/html/classes.html @@ -0,0 +1,113 @@ + + + + + + + +BJ-Keyer: Datenstruktur-Verzeichnis + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Datenstruktur-Verzeichnis
+
+
+
C | M | S
+ +
+
+ + + + diff --git a/Documents/Doxygen/html/closed.png b/Documents/Doxygen/html/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/Documents/Doxygen/html/closed.png differ diff --git a/Documents/Doxygen/html/controls_8c.html b/Documents/Doxygen/html/controls_8c.html new file mode 100644 index 0000000..04311a5 --- /dev/null +++ b/Documents/Doxygen/html/controls_8c.html @@ -0,0 +1,912 @@ + + + + + + + +BJ-Keyer: controls.c-Dateireferenz + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
controls.c-Dateireferenz
+
+
+ +

Display und Bedienelemente. +Mehr ...

+
#include "controls.h"
+
+Include-Abhängigkeitsdiagramm für controls.c:
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + +

+Funktionen

void Drehencoder (void)
 Mit dieser Funktion wird per Polling der Drehencoder abgefragt. Mehr ...
 
void ConfigMenue (void)
 Ausgabe des Menues für die Einstellungen. Mehr ...
 
void DisplayVersion (void)
 Ausgabe der Softwareversion des BJ-Keyers. Mehr ...
 
void UpdateDisplay (void)
 UpdateDisplay. Mehr ...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variablen

static const char *const sTrx1 = "TRX 1"
 OLED Text für Transceiver 1. Mehr ...
 
static const char *const sTrx2 = "TRX 2"
 OLED Text für Transceiver 2. Mehr ...
 
static const char *const IambicA = "Iambic A"
 OLED Text für Iambic A. Mehr ...
 
static const char *const IambicB = "Iambic B"
 OLED Text für Iambic B. Mehr ...
 
static const char *const Ultimatic = "Ultimat."
 OLED Text für Ultimatic. Mehr ...
 
static const char *const Memory = "Memory"
 OLED Text für Punkt/Strich Speicher. Mehr ...
 
static const char *const Ratio = "Ratio"
 OLED Text für Ratio. Mehr ...
 
static const char *const Weight = "Weight"
 OLED Text für Gewichtung. Mehr ...
 
static const char *const ReverseRL = " L - R °"
 OLED Text für Links Dag, Rechts Dit. Mehr ...
 
static const char *const ReverseLR = " L ° R -"
 OLED Text für Links Dit, Rechts Dah. Mehr ...
 
static const char *const SideToneOnOff = "Mithörton"
 OLED Text für Mithörton An/Aus. Mehr ...
 
static const char *const SideToneFreq = "Frequenz"
 OLED Text für Frequenz des Tons. Mehr ...
 
static const char *const RiseTime = "Anstieg"
 OLED Text für Anstiegszeit Mithörton. Mehr ...
 
static const char *const DebounceTime = "Entprl."
 OLED Text für Zeitintervall Entprellung. Mehr ...
 
static const char *const Yes = "J"
 OLED Text für Ja. Mehr ...
 
static const char *const No = "N"
 OLED Text für Nein. Mehr ...
 
static const char *const Hz = "Hz"
 OLED Text für Frequenz in Hertz. Mehr ...
 
static const char *const Einstellungen = "Einstellungen"
 OLED Text für Einstellungen
+ Mehr ...
 
static const char *const Ton = "Ton"
 OLED Text für Ton. Mehr ...
 
static const char *const TonAn = "Ton an"
 OLED Text für Ton an. Mehr ...
 
static const char *const TonAus = "Ton aus"
 OLED Text für Ton aus. Mehr ...
 
static const char *const MemAus = "Mem AUS"
 OLED Text für Punkt/Strich Speicher aus. Mehr ...
 
static const char *const MemAn = "Mem EIN"
 OLED Text für Punkt/Strich Speicher an. Mehr ...
 
+

Ausführliche Beschreibung

+

Display und Bedienelemente.

+
    In dieser Datei sind alle Funktionen für die 
+    Ausgabe auf dem OLED Dispay und die Bedienelemente
+

Dokumentation der Funktionen

+ +

◆ ConfigMenue()

+ +
+
+ + + + + + + + +
void ConfigMenue (void )
+
+ +

Ausgabe des Menues für die Einstellungen.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ DisplayVersion()

+ +
+
+ + + + + + + + +
void DisplayVersion (void )
+
+ +

Ausgabe der Softwareversion des BJ-Keyers.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ Drehencoder()

+ +
+
+ + + + + + + + +
Drehencoder (void )
+
+ +

Mit dieser Funktion wird per Polling der Drehencoder abgefragt.

+
    Es wird die Stellung des Encoders und der Status des Tasters 
+    abgefragt. Die Daten werden ausgewertet und die entsprechende
+    Funktion aufgerufen
+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+

neuen Wert in bConfig speichern

+

Status für Timer 0 setzen

+

Status für UpdateDisplay setzen

+

neuen Werte in EncoderPos speichern

+

neuen Wert in WpM übernehmen

+

Timer 0 Variable löschen für Update EEprom

+ +
+
+ +

◆ UpdateDisplay()

+ +
+
+ + + + + + + + +
void UpdateDisplay (void )
+
+ +

UpdateDisplay.

+
    Aktualisierung der Anzeigen auf dem Display je nach
+    aktueller Funktion.
+

DOUBLESIZE 4x10 character NORMALSIZE 8x21 character

+ +
+
+

Variablen-Dokumentation

+ +

◆ DebounceTime

+ +
+
+ + + + + +
+ + + + +
const char* const DebounceTime = "Entprl."
+
+static
+
+ +

OLED Text für Zeitintervall Entprellung.

+ +
+
+ +

◆ Einstellungen

+ +
+
+ + + + + +
+ + + + +
const char* const Einstellungen = "Einstellungen"
+
+static
+
+ +

OLED Text für Einstellungen
+

+ +
+
+ +

◆ Hz

+ +
+
+ + + + + +
+ + + + +
const char* const Hz = "Hz"
+
+static
+
+ +

OLED Text für Frequenz in Hertz.

+ +
+
+ +

◆ IambicA

+ +
+
+ + + + + +
+ + + + +
const char* const IambicA = "Iambic A"
+
+static
+
+ +

OLED Text für Iambic A.

+ +
+
+ +

◆ IambicB

+ +
+
+ + + + + +
+ + + + +
const char* const IambicB = "Iambic B"
+
+static
+
+ +

OLED Text für Iambic B.

+ +
+
+ +

◆ MemAn

+ +
+
+ + + + + +
+ + + + +
const char* const MemAn = "Mem EIN"
+
+static
+
+ +

OLED Text für Punkt/Strich Speicher an.

+ +
+
+ +

◆ MemAus

+ +
+
+ + + + + +
+ + + + +
const char* const MemAus = "Mem AUS"
+
+static
+
+ +

OLED Text für Punkt/Strich Speicher aus.

+ +
+
+ +

◆ Memory

+ +
+
+ + + + + +
+ + + + +
const char* const Memory = "Memory"
+
+static
+
+ +

OLED Text für Punkt/Strich Speicher.

+ +
+
+ +

◆ No

+ +
+
+ + + + + +
+ + + + +
const char* const No = "N"
+
+static
+
+ +

OLED Text für Nein.

+ +
+
+ +

◆ Ratio

+ +
+
+ + + + + +
+ + + + +
const char* const Ratio = "Ratio"
+
+static
+
+ +

OLED Text für Ratio.

+ +
+
+ +

◆ ReverseLR

+ +
+
+ + + + + +
+ + + + +
const char* const ReverseLR = " L ° R -"
+
+static
+
+ +

OLED Text für Links Dit, Rechts Dah.

+ +
+
+ +

◆ ReverseRL

+ +
+
+ + + + + +
+ + + + +
const char* const ReverseRL = " L - R °"
+
+static
+
+ +

OLED Text für Links Dag, Rechts Dit.

+ +
+
+ +

◆ RiseTime

+ +
+
+ + + + + +
+ + + + +
const char* const RiseTime = "Anstieg"
+
+static
+
+ +

OLED Text für Anstiegszeit Mithörton.

+ +
+
+ +

◆ SideToneFreq

+ +
+
+ + + + + +
+ + + + +
const char* const SideToneFreq = "Frequenz"
+
+static
+
+ +

OLED Text für Frequenz des Tons.

+ +
+
+ +

◆ SideToneOnOff

+ +
+
+ + + + + +
+ + + + +
const char* const SideToneOnOff = "Mithörton"
+
+static
+
+ +

OLED Text für Mithörton An/Aus.

+ +
+
+ +

◆ sTrx1

+ +
+
+ + + + + +
+ + + + +
const char* const sTrx1 = "TRX 1"
+
+static
+
+ +

OLED Text für Transceiver 1.

+ +
+
+ +

◆ sTrx2

+ +
+
+ + + + + +
+ + + + +
const char* const sTrx2 = "TRX 2"
+
+static
+
+ +

OLED Text für Transceiver 2.

+ +
+
+ +

◆ Ton

+ +
+
+ + + + + +
+ + + + +
const char* const Ton = "Ton"
+
+static
+
+ +

OLED Text für Ton.

+ +
+
+ +

◆ TonAn

+ +
+
+ + + + + +
+ + + + +
const char* const TonAn = "Ton an"
+
+static
+
+ +

OLED Text für Ton an.

+ +
+
+ +

◆ TonAus

+ +
+
+ + + + + +
+ + + + +
const char* const TonAus = "Ton aus"
+
+static
+
+ +

OLED Text für Ton aus.

+ +
+
+ +

◆ Ultimatic

+ +
+
+ + + + + +
+ + + + +
const char* const Ultimatic = "Ultimat."
+
+static
+
+ +

OLED Text für Ultimatic.

+ +
+
+ +

◆ Weight

+ +
+
+ + + + + +
+ + + + +
const char* const Weight = "Weight"
+
+static
+
+ +

OLED Text für Gewichtung.

+ +
+
+ +

◆ Yes

+ +
+
+ + + + + +
+ + + + +
const char* const Yes = "J"
+
+static
+
+ +

OLED Text für Ja.

+ +
+
+
+
+ + + + diff --git a/Documents/Doxygen/html/controls_8c.js b/Documents/Doxygen/html/controls_8c.js new file mode 100644 index 0000000..402ebcf --- /dev/null +++ b/Documents/Doxygen/html/controls_8c.js @@ -0,0 +1,30 @@ +var controls_8c = +[ + [ "ConfigMenue", "controls_8c.html#a582148370499a6b91171ed6134cc7041", null ], + [ "DisplayVersion", "controls_8c.html#a9dec45875121142b6466b9475691b40a", null ], + [ "Drehencoder", "controls_8c.html#aaf6c1bd6cb225efe37f9762de8a0c3d1", null ], + [ "UpdateDisplay", "controls_8c.html#ace58ee95637a8f220527dc8b20dbb662", null ], + [ "DebounceTime", "controls_8c.html#a14d2686ee95132d4d7c740d23f38677b", null ], + [ "Einstellungen", "controls_8c.html#a3776d070bf17ce9a6dca80728d44a800", null ], + [ "Hz", "controls_8c.html#ac7c916eae39a6ea3de6c5e47cda3700e", null ], + [ "IambicA", "controls_8c.html#a3cf9a4ac7c32126e64feeb09468c4f16", null ], + [ "IambicB", "controls_8c.html#a204380c13e522446a26c5becb474d872", null ], + [ "MemAn", "controls_8c.html#a1c5d85aa97ec15c2308e5c688d8d297c", null ], + [ "MemAus", "controls_8c.html#ae3163144fae43c843de52bb19a73fc4c", null ], + [ "Memory", "controls_8c.html#ab89e4faa251feb81fa4cc7d9de2e3fcd", null ], + [ "No", "controls_8c.html#a52e48eafec4559dcc5fa997a3781e4c5", null ], + [ "Ratio", "controls_8c.html#aafb08180dd6b40c7ceb1f987d29e01aa", null ], + [ "ReverseLR", "controls_8c.html#a3aef3986a3ae6ca48eb4f92532d827ae", null ], + [ "ReverseRL", "controls_8c.html#a6fcaa55631cc1a96c082f6d8da9357a2", null ], + [ "RiseTime", "controls_8c.html#aec62b46d086a27a9d99a82f846b449a5", null ], + [ "SideToneFreq", "controls_8c.html#a4e5958495ba326d1ef4ca81aadf97bea", null ], + [ "SideToneOnOff", "controls_8c.html#a913981a1b4818d9fb9a39bf65326d832", null ], + [ "sTrx1", "controls_8c.html#a6203d557889176e261076e2f088df303", null ], + [ "sTrx2", "controls_8c.html#a35d38bfd22e4419f9f56cdb345a8e7e4", null ], + [ "Ton", "controls_8c.html#a5d84b58ef20baadc27efb09bca3d8d98", null ], + [ "TonAn", "controls_8c.html#a8a6e687fe4fb9e5aea3ac1e69b599330", null ], + [ "TonAus", "controls_8c.html#ab1d7bb6c3e5c9967ffc4668fafb03c4f", null ], + [ "Ultimatic", "controls_8c.html#a3dc8c998dd6a5d1d71831a7fd8fa1ee7", null ], + [ "Weight", "controls_8c.html#abf38c2d2e8e887110f9092afbc1f9ff6", null ], + [ "Yes", "controls_8c.html#a3e1e7c928529ce5b265eb617b0e4e4b8", null ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/controls_8c__incl.map b/Documents/Doxygen/html/controls_8c__incl.map new file mode 100644 index 0000000..91c2f42 --- /dev/null +++ b/Documents/Doxygen/html/controls_8c__incl.map @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Documents/Doxygen/html/controls_8c__incl.md5 b/Documents/Doxygen/html/controls_8c__incl.md5 new file mode 100644 index 0000000..e8699c0 --- /dev/null +++ b/Documents/Doxygen/html/controls_8c__incl.md5 @@ -0,0 +1 @@ +07796a01301efe0c8c041b76fb07e698 \ No newline at end of file diff --git a/Documents/Doxygen/html/controls_8c__incl.png b/Documents/Doxygen/html/controls_8c__incl.png new file mode 100644 index 0000000..d3396d5 Binary files /dev/null and b/Documents/Doxygen/html/controls_8c__incl.png differ diff --git a/Documents/Doxygen/html/controls_8h.html b/Documents/Doxygen/html/controls_8h.html new file mode 100644 index 0000000..83669d1 --- /dev/null +++ b/Documents/Doxygen/html/controls_8h.html @@ -0,0 +1,778 @@ + + + + + + + +BJ-Keyer: controls.h-Dateireferenz + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
controls.h-Dateireferenz
+
+
+ +

Headerdatei für controls.c. +Mehr ...

+
#include "globals.h"
+#include "encoder.h"
+
+Include-Abhängigkeitsdiagramm für controls.h:
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:
+
+
+ + + + + + + + + +
+
+

gehe zum Quellcode dieser Datei

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Funktionen

void Boop (void)
 Boop Ton ausgeben. Mehr ...
 
void Beep (void)
 Beep Ton ausgeben. Mehr ...
 
void WriteEEprom (void)
 Akt. Einstellungen in EEPROM schreiben. Mehr ...
 
+void SideToneOff (void)
 
void DelayMilliSeconds (uint16_t t)
 Zeitschleife von 1-65535 Millisekunden. Mehr ...
 
void Tone (uint16_t f, uint8_t t)
 Ausgabe eines Tons mit Dauer und Frequenz. Mehr ...
 
void SetRatio (void)
 Berechnung der Zeitdauer für Punkt und Strich. Mehr ...
 
+void SetWeight (void)
 
void SidetoneDisable (void)
 Audioverstärker abschalten. Mehr ...
 
void SidetoneEnable (void)
 Audioverstärker einschalten. Mehr ...
 
void SidetoneOff (void)
 Mithörton ausschalten. Mehr ...
 
void Drehencoder (void)
 Mit dieser Funktion wird per Polling der Drehencoder abgefragt. Mehr ...
 
void ConfigMenue (void)
 Ausgabe des Menues für die Einstellungen. Mehr ...
 
void UpdateDisplay (void)
 UpdateDisplay. Mehr ...
 
void DisplayVersion (void)
 Ausgabe der Softwareversion des BJ-Keyers. Mehr ...
 
+ + + + + + + + + + + + + + + + +

+Variablen

struct Config bConfig
 Struktur für die Einstellungen. Mehr ...
 
struct MenuCtrl bMenuCtrl
 Struktur für die Menuesteuerung. Mehr ...
 
struct State bState
 Struktur für den aktuellen Status. Mehr ...
 
uint16_t MenuCtrlTimer
 Diverse Zähler für Timer 0. Mehr ...
 
uint8_t WpM
 Aktuelle Zeichengeschwindigkeit. Mehr ...
 
+

Ausführliche Beschreibung

+

Headerdatei für controls.c.

+
Autor
Tom, DL7BJ
+

Dokumentation der Funktionen

+ +

◆ Beep()

+ +
+
+ + + + + + + + +
void Beep (void )
+
+ +

Beep Ton ausgeben.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ Boop()

+ +
+
+ + + + + + + + +
void Boop (void )
+
+ +

Boop Ton ausgeben.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ ConfigMenue()

+ +
+
+ + + + + + + + +
void ConfigMenue (void )
+
+ +

Ausgabe des Menues für die Einstellungen.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ DelayMilliSeconds()

+ +
+
+ + + + + + + + +
void DelayMilliSeconds (uint16_t ms)
+
+ +

Zeitschleife von 1-65535 Millisekunden.

+
Parameter
+ + +
msAnzahl Millisekunden
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ DisplayVersion()

+ +
+
+ + + + + + + + +
void DisplayVersion (void )
+
+ +

Ausgabe der Softwareversion des BJ-Keyers.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ Drehencoder()

+ +
+
+ + + + + + + + +
void Drehencoder (void )
+
+ +

Mit dieser Funktion wird per Polling der Drehencoder abgefragt.

+
    Es wird die Stellung des Encoders und der Status des Tasters 
+    abgefragt. Die Daten werden ausgewertet und die entsprechende
+    Funktion aufgerufen
+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+

neuen Wert in bConfig speichern

+

Status für Timer 0 setzen

+

Status für UpdateDisplay setzen

+

neuen Werte in EncoderPos speichern

+

neuen Wert in WpM übernehmen

+

Timer 0 Variable löschen für Update EEprom

+ +
+
+ +

◆ SetRatio()

+ +
+
+ + + + + + + + +
void SetRatio (void )
+
+ +

Berechnung der Zeitdauer für Punkt und Strich.

+
    Die Länge eines Symbols ist abhängig von der
+    eingestellten Geschwindigkeit. Intern wird immer
+    mit Wörtern pro Minute gerechnet. Das normale
+    Punkt/Strich Verhältnis ist 1:3. Dies kann durch
+    den Parameter Ratio in den Einstellungen verändert
+    werden.
+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SidetoneDisable()

+ +
+
+ + + + + + + + +
void SidetoneDisable (void )
+
+ +

Audioverstärker abschalten.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SidetoneEnable()

+ +
+
+ + + + + + + + +
void SidetoneEnable (void )
+
+ +

Audioverstärker einschalten.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SidetoneOff()

+ +
+
+ + + + + + + + +
void SidetoneOff (void )
+
+ +

Mithörton ausschalten.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ Tone()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Tone (uint16_t f,
uint8_t duration 
)
+
+ +

Ausgabe eines Tons mit Dauer und Frequenz.

+
Parameter
+ + + +
fFrequenz des Tons
durationDauer des Tons
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ UpdateDisplay()

+ +
+
+ + + + + + + + +
void UpdateDisplay (void )
+
+ +

UpdateDisplay.

+
    Aktualisierung der Anzeigen auf dem Display je nach
+    aktueller Funktion.
+

DOUBLESIZE 4x10 character NORMALSIZE 8x21 character

+ +
+
+ +

◆ WriteEEprom()

+ +
+
+ + + + + + + + +
void WriteEEprom (void )
+
+ +

Akt. Einstellungen in EEPROM schreiben.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+

Variablen-Dokumentation

+ +

◆ bConfig

+ +
+
+ + + + + +
+ + + + +
struct Config bConfig
+
+extern
+
+ +

Struktur für die Einstellungen.

+ +
+
+ +

◆ bMenuCtrl

+ +
+
+ + + + + +
+ + + + +
struct MenuCtrl bMenuCtrl
+
+extern
+
+ +

Struktur für die Menuesteuerung.

+ +
+
+ +

◆ bState

+ +
+
+ + + + + +
+ + + + +
struct State bState
+
+extern
+
+ +

Struktur für den aktuellen Status.

+ +
+
+ +

◆ MenuCtrlTimer

+ +
+
+ + + + + +
+ + + + +
uint16_t MenuCtrlTimer
+
+extern
+
+ +

Diverse Zähler für Timer 0.

+

Wartezeit bis zur Betriebsanzeige nach Config

+ +
+
+ +

◆ WpM

+ +
+
+ + + + + +
+ + + + +
uint8_t WpM
+
+extern
+
+ +

Aktuelle Zeichengeschwindigkeit.

+ +
+
+
+
+ + + + diff --git a/Documents/Doxygen/html/controls_8h.js b/Documents/Doxygen/html/controls_8h.js new file mode 100644 index 0000000..2fd77da --- /dev/null +++ b/Documents/Doxygen/html/controls_8h.js @@ -0,0 +1,23 @@ +var controls_8h = +[ + [ "Beep", "controls_8h.html#a2f616a93763b4bc437c4311d653c0491", null ], + [ "Boop", "controls_8h.html#a0366eaeb4aab61562dcd5b24994d0103", null ], + [ "ConfigMenue", "controls_8h.html#a582148370499a6b91171ed6134cc7041", null ], + [ "DelayMilliSeconds", "controls_8h.html#a4e03330a0d63dbc5c8c0ce8a3ba10ff7", null ], + [ "DisplayVersion", "controls_8h.html#a9dec45875121142b6466b9475691b40a", null ], + [ "Drehencoder", "controls_8h.html#ac6dc8b683fdf1a5fc24b2a509279f887", null ], + [ "SetRatio", "controls_8h.html#aa0e063cf32b840a3ed51ae9aa677e2be", null ], + [ "SetWeight", "controls_8h.html#a7a31f60576d112eca1abddf447df8248", null ], + [ "SidetoneDisable", "controls_8h.html#ae8011166e9324f9f3c6948249eb15fd1", null ], + [ "SidetoneEnable", "controls_8h.html#a60f2f041b0803584ba5fc2e0a373ed50", null ], + [ "SideToneOff", "controls_8h.html#a543d0f249e5b505063a706525f99ff3a", null ], + [ "SidetoneOff", "controls_8h.html#ad82537f7ea58b4eb375952ce52615c4d", null ], + [ "Tone", "controls_8h.html#a378d56bf0e68310b700bd4dbdc652803", null ], + [ "UpdateDisplay", "controls_8h.html#ace58ee95637a8f220527dc8b20dbb662", null ], + [ "WriteEEprom", "controls_8h.html#a586bc00ad3164def7ec76ac9bda4f1bc", null ], + [ "bConfig", "controls_8h.html#a8c3e2d3135447df0d9e7057fea4ff5b0", null ], + [ "bMenuCtrl", "controls_8h.html#a885b2af021946a60a0bd2a271711c17a", null ], + [ "bState", "controls_8h.html#a44ef5c8aeac95b862dab43408c149f9a", null ], + [ "MenuCtrlTimer", "controls_8h.html#a088c685d08447f6614b3aea76cd94582", null ], + [ "WpM", "controls_8h.html#a28fa6cb1767abefbe9c197700410d946", null ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/controls_8h__dep__incl.map b/Documents/Doxygen/html/controls_8h__dep__incl.map new file mode 100644 index 0000000..8b3b04f --- /dev/null +++ b/Documents/Doxygen/html/controls_8h__dep__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Documents/Doxygen/html/controls_8h__dep__incl.md5 b/Documents/Doxygen/html/controls_8h__dep__incl.md5 new file mode 100644 index 0000000..d850d01 --- /dev/null +++ b/Documents/Doxygen/html/controls_8h__dep__incl.md5 @@ -0,0 +1 @@ +01463473d4e19f09c522199653a3ee87 \ No newline at end of file diff --git a/Documents/Doxygen/html/controls_8h__dep__incl.png b/Documents/Doxygen/html/controls_8h__dep__incl.png new file mode 100644 index 0000000..3b6597a Binary files /dev/null and b/Documents/Doxygen/html/controls_8h__dep__incl.png differ diff --git a/Documents/Doxygen/html/controls_8h__incl.map b/Documents/Doxygen/html/controls_8h__incl.map new file mode 100644 index 0000000..b598325 --- /dev/null +++ b/Documents/Doxygen/html/controls_8h__incl.map @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/Documents/Doxygen/html/controls_8h__incl.md5 b/Documents/Doxygen/html/controls_8h__incl.md5 new file mode 100644 index 0000000..8856809 --- /dev/null +++ b/Documents/Doxygen/html/controls_8h__incl.md5 @@ -0,0 +1 @@ +668d12185d21d4bd94b83eadaa80a14b \ No newline at end of file diff --git a/Documents/Doxygen/html/controls_8h__incl.png b/Documents/Doxygen/html/controls_8h__incl.png new file mode 100644 index 0000000..7a72ebe Binary files /dev/null and b/Documents/Doxygen/html/controls_8h__incl.png differ diff --git a/Documents/Doxygen/html/controls_8h_source.html b/Documents/Doxygen/html/controls_8h_source.html new file mode 100644 index 0000000..1625bfc --- /dev/null +++ b/Documents/Doxygen/html/controls_8h_source.html @@ -0,0 +1,156 @@ + + + + + + + +BJ-Keyer: controls.h Quellcode + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
controls.h
+
+
+gehe zur Dokumentation dieser Datei
1 
+
5 #ifndef CONTROLS_H_INCLUDED
+
6 #define CONTROLS_H_INCLUDED
+
7 
+
8 #include "globals.h"
+
9 #include "encoder.h"
+
10 
+
11 // Externe Variablen
+
12 extern struct Config bConfig;
+
13 extern struct MenuCtrl bMenuCtrl;
+
14 extern struct State bState;
+
15 extern uint16_t MenuCtrlTimer;
+
16 extern uint8_t WpM;
+
17 // Externe Funktionen
+
18 extern void Boop(void);
+
19 extern void Beep(void);
+
20 extern void WriteEEprom(void);
+
21 extern void SideToneOff(void);
+
22 extern void DelayMilliSeconds(uint16_t t);
+
23 extern void Tone(uint16_t f, uint8_t t);
+
24 extern void SetRatio(void);
+
25 extern void SetWeight(void);
+
26 extern void SidetoneDisable(void);
+
27 extern void SidetoneEnable(void);
+
28 extern void SidetoneOff(void);
+
29 // Prototypes
+
30 void Drehencoder(void);
+
31 void ConfigMenue(void);
+
32 void UpdateDisplay(void);
+
33 void DisplayVersion(void);
+
34 
+
35 #endif
+
void Boop(void)
Boop Ton ausgeben.
Definition: functions.c:688
+
uint16_t MenuCtrlTimer
Diverse Zähler für Timer 0.
Definition: globals.h:218
+
uint8_t WpM
Aktuelle Zeichengeschwindigkeit.
Definition: globals.h:194
+
void Beep(void)
Beep Ton ausgeben.
Definition: functions.c:698
+
void Tone(uint16_t f, uint8_t t)
Ausgabe eines Tons mit Dauer und Frequenz.
Definition: functions.c:674
+
struct State bState
Struktur für den aktuellen Status.
Definition: main.h:18
+
void DelayMilliSeconds(uint16_t t)
Zeitschleife von 1-65535 Millisekunden.
Definition: functions.c:33
+
void ConfigMenue(void)
Ausgabe des Menues für die Einstellungen.
Definition: controls.c:285
+
void WriteEEprom(void)
Akt. Einstellungen in EEPROM schreiben.
Definition: functions.c:102
+
void SidetoneEnable(void)
Audioverstärker einschalten.
Definition: functions.c:279
+
struct MenuCtrl bMenuCtrl
Struktur für die Menuesteuerung.
Definition: main.h:17
+
struct Config bConfig
Struktur für die Einstellungen.
Definition: main.h:16
+
void DisplayVersion(void)
Ausgabe der Softwareversion des BJ-Keyers.
Definition: controls.c:418
+
void SetRatio(void)
Berechnung der Zeitdauer für Punkt und Strich.
Definition: functions.c:525
+
void Drehencoder(void)
Mit dieser Funktion wird per Polling der Drehencoder abgefragt.
Definition: controls.c:46
+
void UpdateDisplay(void)
UpdateDisplay.
Definition: controls.c:440
+
void SidetoneOff(void)
Mithörton ausschalten.
Definition: functions.c:256
+
void SidetoneDisable(void)
Audioverstärker abschalten.
Definition: functions.c:268
+
Globale Variablen, Definitionen und Prototypen.
+
Definition: globals.h:151
+
Definition: globals.h:138
+
Definition: globals.h:121
+
+
+ + + + diff --git a/Documents/Doxygen/html/dl7bj-logo.eps b/Documents/Doxygen/html/dl7bj-logo.eps new file mode 100644 index 0000000..873b71a --- /dev/null +++ b/Documents/Doxygen/html/dl7bj-logo.eps @@ -0,0 +1,515 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: GIMP PostScript file plugin V 1,17 by Peter Kirchgessner +%%Title: DL7BJ website logo.eps +%%CreationDate: Tue May 13 14:47:37 2014 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 14 14 483 75 +%%EndComments +%%BeginProlog +% Use own dictionary to avoid conflicts +10 dict begin +%%EndProlog +%%Page: 1 1 +% Translate for offset +14.173228346456694 14.173228346456694 translate +% Translate to begin of first scanline +0 59.992500937382829 translate +467.94150731158607 -59.992500937382829 scale +% Image geometry +468 60 8 +% Transformation matrix +[ 468 0 0 60 0 0 ] +% Strings to hold RGB-samples per scanline +/rstr 468 string def +/gstr 468 string def +/bstr 468 string def +{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} +true 3 +%%BeginData: 29288 ASCII Bytes +colorimage +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +_>jQ7nc&ajqtg-dl2Lb^p\t6mJcC<$W;hA~> +_Z'`4l0nQArrr5S`2oNVlMgqakPY/U!W2Vbrri?!s82eHs,I&/~> +_Z'`.fAcYurrr&2PA![ilMgq^eG8q?!Vl/Xrri;srqQGCs,I&/~> +aSuAAq=saapAt'brq?EfrqQTiq>U6jq>9mdr9=4^p\Fdf!r_ujrq?Hirq$-lqZ$Qor;QitrVZKg +!;uiqs8W,uj8],X&,lD$qu$ +r;QcpcMnaSUm@-qJ:NTNJ:WE8R%9e5R'EouVjN0hrI=mplMgq`JYE&B!oC/BrdY$NlLY#YW;-#Y +qYpL1qt&js`4j"$^rOI3c0=`gqZ$9`qtp?TrtPD&oBbVYUqG$SS_Nf7p#+,shl)>-J,l9os,I&/~> +r;Qform1T]lrlY6*Z,_H;&C5q1IOr35"'F2C1'FR)uUTRWp9TcqAWH5rrU)W2#\ +rr3)uq"OO^q>^6`pAk!^pB13dqY]^['E.e(q=jX\r;66_q"jd\q>0m\r;QZoroj@mq"OggrV?6d +q"OR[p\=^cpAYBsp\=RZp\=R^pBgWhp\=OXp\=LWr:p6b"Shijr;Q*`!<)]e!;Q6]"o8#mrVc_H +s,I&/~> +rr3GKML^>HTp^suJUrE*JbsrtMY;Q'M4CouqsXP"r:nsOYGZr&`6#lHJ#pg?sOlNW4M~> +rr3Fr.Ms3o<(/Sk)]B_<)Z(?O.eX\^.8+f^q!\4tqXM+=DI=A%PamgP(clmi4%=KB-DLLh!nlJa +kl2/N*;oiO +rVlotr;HKmq>U*hq"jj]')M@uqY^?krVlfprVQ?ap\=R]li.Ilp\b$dq>L9dq>C3ep\j(N#Q"2o +r:g'eq#0phrV-'apAY0jqYU9nrqcWgrqHNkq>U*grVQTsrr)fmrV-?e!rDionGiLd&cVh0r;69c +q"OX`q"X^[q"OZ:s+^Q(~> +rVm8he\f&8\Xe;%J<$c.J.o5@UUJY@guRebjQ=:6Mh$___t`Tu%`EqKm@U$+hhRiOjdC\[iVs.] +JEk4-Xm_ANJ-:MXKRh\JrrKs9qu6]f[/PR]N0KRCVLa8NjSSrZp#Y5FrI>$,NjHq'nGa6Vg>MAn +m*EM1Z&aI7g5hE(L5LMopjrI#s*t~> +rVm8UZ]^'%In^dt(c#k&(_^s3=F.12^WkK_c-hUu/Jp$EOn%f<%[7j:h,$ta`$J6]cUAesiVs-j +(tb;tC>h)M(^(nj*uMK\rrJ0lqu6][G5`oOV'c27MCmEj(/r>5Ya13B5ZnGa66]>rdu +h5HAoEASSB]/)Hk,:XOanU^^qs*t~> +pAY9nq=j[Zq=amepAY0lq>Bsfqu6!_&,Q%rrr;ihqYpEep\=aeqW%S[qtKj[q>9scpB:Bhq"OXZ +rrW/nqtg=$rqH0_q"ss_p\=LWq=jmirV69a!VlZYrsSi$q=sd\r;QWlp\KI@L&ZZ~> +pAY929*[t1jNbCtJ1nF`pDrs$DlKT2bGNW"A1_4d'E +[J0\&k(15Brs\4GKq+CA\VG^!JUsTkrrW2_P5Bb1QLX5>$hT@HOe@``l-[q2Z%;q/s*t~> +pAY8f<@01LqA95PXnMbq]NG+L![`WdmJd]7(fo2_Hl@([THY46j6^UArs"])+#$f_0`;gkO&\4] +H2%=?d2@`9rs[X'+\Y%UIjGpn)];`PrrW/K3r9`p5iq81$gT?82c;B6euYtnEe47Es*t~> +o`"pgq"Fd`oD\gfrV$Bgp\jO[&,Q&!rqcKjrqZ?ep\FdarT!nXr;$'kqYU$`s8)NbrrW&kqt^9l +p^-cnq"OU]q"OU`p&>'lq"sddq"s@V$iKbsqu6Wqqtp0`rIP!'s*t~> +o`"s.K)'osO7WAO_#AidL5gu@mf*g,JD0:hW9`cCNmEUhbQ(P^HJ>Br)N,rrW/jQi)@8Koih0rsR80aLgm?s2M[3P2CijLAuc~> +o`"rQ*;LEO1\C\Jrf$gn"!]KG\F0A-Hl0KKAmsHJId6q@XX'?fhuE\CKJY^-JcCK)J,~> +o`"pirV-?e"8DZhqssamqtKj]qY0d\rpTjqq=sd`s8;ZfrVQ?brSdbZrV-'_q#0plr;$3gr;-0b +q>UQqp\4X_rs/Gqr;$*]qt^6c!;uHg#laVnp\Fa_p\j@V$MaAps8DckqY0daJcCK)J,~> +o`"pErI>';OFaaQ](5k,`INTAWIg&$p[A+jUm@Orr76t(ikL#8g#;r6hLL-WP5]t +o`"p%r>5]'2&^UpK(K!Krfn<@B4;i3;Xj/T$sGnhV>7MV +o`#9np\4IYq"OU\q"sU]#l=;iqYg3`qYp!a$i0SsrqcBdrVlWerS[\Ur;HBip^6ipqYC*dqtp?e +q>1*mq=s^\rs\l'qYKs]qY0aZqtL$Zrs/Dpqtp0_p\="Q$2OQ"rVQTmrqHDCs+UK'~> +o`#8]J:NWSQ@Yp9NkFr_$3%;dJuRIeJ?nn+Ks4k?YhX5p]JcCH(J,~> +o`#7Y(`4r.5T*jC0o#9!$2o&n*+QTA(j#-7rsM^Zkj*(/K?WCS(s(Y8!1s-+%5^(DX)q^aI?oH% +3^`Z>rri7&.4"H\rsZbs@VHZDH6a=oIjCcZrs3rmKp"#)(ao.Ers;01s1jKQ_qu +p&>$jrq?Znq"t$dp\4LRrs8Psq>C$_p\4ORrs\f#r:p*ds8;cmp\XmIrtG;(p\=X_q"sj]p\Xdc +r;Z`iq#13l"TJ5lqtg-g$NBhpq"XUYrVZHcnG`Ucp\4XcpAk-Vrs8E!r;Q`rrqcD@s+LE&~> +p&>E_K7e]CQH.[WL4H/krs75.V:(0WJ:P)trsZK3bDMhPs2r7;JA07drtDtoJ;UkJMS>73KYjVU +aS=MEN8=L5"RMqH^TdP6$M'7.Od(BYf[Q"Anc&akNIZQ7rdY!jlMh0Sn]^:us6QkNpjrI!s*t~> +p&>EL*Zc.h5af2k,8a_Vrs6%R>HK5%(`7SgrsXKXTdrdargo:m(l>$HrtBu$(b0ud.u?;<+-9gi +S+=6;0#7Jd"Pd0?Mf8Fk$Kj5_2`qp9\?IhCnc&aj0GkYArYPX*lMh/Pk+gT/s4qEMnq$gps*t~> +p&G'k$2F8lrqcEdqY0mVrr`2np\=^]!;c6c%/T_or;ZcorVZNdq>0(M"SqffrqlZg')DG#p\4L\ +q"jj^q>:$_p\Oa`qYpj"q"OOXq"jsbrqGs_$N0YnrVZKeqY0gbm/I+]qu-Nsqu6BfJcCH(J,~> +p&>Hcl&^P:n#2&HZ%0C_nc&a7J:NH0rdY!Snc'$,J=Y-fn'U%>[=OmUiVs%SJ=Z&;rdYZ7R^ef? +JtBlAY-j+\^9)s:Yc,D7rsRY@LObVUXQQC0J;3Uo$IaTij3X3gW.q)7m/IBN\c)R.prDTb`e"/D +s*t~> +p&>HRf/4S6iF+'PEYs<%nc&`a(`4VErYPZWrpp'tHl,S[rSjlrWd#CUGN&Q)<>\HcJ,U8u*_1ZM ++rsIA2/@Fc4kP(`4OgrsGqM3m4Nl=(!7Sh +oD]-lqYU'brVQBcqsXR]pB(-aqt'jfq?d3$qYL*crVcKei;X&Xp](*aq>L3grs&K$q=jXZqYg-j +q"sjcqYq!&rqlHbqtp-`q"a^^o)B$qq"O[as8Dihq +oD],RXMBh/iQ%"I_XRR+qM5!!"+l_i\b#k$Z3pKr\$NfMinT*gq;M>ZTRlsFJ=k]8q>L +oD]+FBoOg%adP%UORW8Nod9SR!us?DJ+N^?EshZtI!(6Zb.nm3oAT]T;Ao1L(fA24oDS[on@)%- +(eAlnrYP_qO!s#arscHhLDqaqR3P?O8L]PpoD]0P3?*atrQpiP;#9PY!@"uOrrg_a3]pJps+UK'~> +oD]0nq#(*eq"OUZp\XI[!;uij"o.upr:g$YrsSZ#qt^-grr;olp\s+N"Sqijp\XX`$2sbtq=sd` +s7lNdrsJ\uqYBp]p\4LYq==OhqtKserV?He!;Pm[$2=K"qYL$drqQJDs+UK'~> +oD]/dOOW6gNJ*d[JA^mV!71Xp#*d%$bCH)]o`#;qf=[Tdkj\VsUO_^hrro'Sd=o:4p\tTqh7T\T +NMY2&QHf1($IF@1R>d5YJXVCco)Am(L8k46R/VU9Q0eMXre1:NZEBYPl\XtZs+UK'~> +oD].f2R1A50H`q>(m=Cg!2of5#!A%?TGU9!o`#;([Y7;.e`?b+"e75$P:)+Q#Jo)AlC,\-l!7/e#'54&:Vr#kq;F)4@^g*tg.s+UK'~> +oD]-lqtg'`rVlckqsOLapBUTpr;-0_p\FI]#5IreqYpNnrqQThqr%JVq=jX]mJd4bq"F^prV-'^ +q=ja`q=jdVrrW/pq>Bseq!A"frqHHkp\Y!hq"ao?s+UK'~> +o`#9tPK'qZZ/Y3/UUopo$M].,_=lHcJWt_To`#;bJUk)us4Wm5U4Bu9rr]0MK[fDh!m6i+p\tTQ +KRokiJ?$b`J@b:N!p?)Ir."g(qsFCjmXb;kJ\;$CQCdPrs+UK'~> +o`#9r3gXq*EQ[1W=For@$h>,]Npa;r)a,*2rq6:!5T1J^kl87`:f\Ehi;Wme)BZ3NrrScWq"Odq +\0)\k;&El::De]RrrUYC +o`#9sp\4L^s8Voip\aIZ$2FJuq"OR\qtKsZrsSVtrr;upp\Fdap\j%M!rDZemJd7ep\aab!W;]k +q$$Zjp\OX]nc&Ueq=amgmJdOlq>0pds8Minqu20HL&ZZ~> +o`#9UJ:OHTqY-G7JCa2h$iZ%;pQ^8la1d)'rq6:!M4a&4n%=@GgSo__i;WkeJ=c0.!pkZkpAYKB +J=`:$^QjJQJB%-Z!6Ftd!;>g[$J_2WV!\3PV!,DSJcCH(J,~> +o`#9:(`6H!p$kO"(q&i4$iMQfn37aMR>Dbir:U't.8e[rieAUP]j_i$i;Wk*(f'Ju!o,$*pAYJk +(f*duME`1q(msjn!1N^#!:T=T$G]AU=l',>>1A,SJcCH(J,~> +p&>F!p\4UbrV6-^q>'mTrsAPtp\Fgdq#1-do`#9mrr;ljqZ$Nip\3SF!rDZhmJd4_qXsjqr:fs_ +qY0g_q"XaVrrE#spAt0hrqPj[$N0\ss8W&or:p$bJcCH(J,~> +p&>EhJV2DAgm +p&>E[)'5pC^Hrtt>"!f,rsE4:,[fH75.R7lr:U't*TQjU-=lYq?l0pVi;Wjs(o-Ku!a'79pAYJl ++=;VH,Z][R/;Ncq!71W]"e)D?-nPAbrsGAZV#UJ(FIP6,d=M=Os*t~> +o`#*jq#'p]r;QNnp\F7Ws7Zfss8)Tlrr)Tfp&>6jq=j^as82ch!<(jU!rVflmf*@dq#:!e%0$(t +qY0a\q"aa[q#9ja#lXMpr;-9gs7u$]$N']"s82Zgr;-3eJcCH(J,~> +p&>EqSWqN[J^Us7W.:K.rs\gZK?X7l[J9:LJ?&J>rsOLXLSaS?_hEVkKB(ni!m6)emf*@=QhU4R% +/--NWJ,l$PFeM$NV)fA#j-cRe#BM1s.o#]$G!8hJcCH(J,~> +p&>El9g,O.)6J.1?l2Z-rs\]I*M`F +o`#9qp\F[\r;HNep\XCY"T/#mqY^?m!r_lipAYO"p\=^erV60bqY0dBrrN,nmf*@ep\jdb!WMln +pBUKjqY0pap\j[_"9%uhp\sshs7u$]s8**%qYC'hr;?HjJcG]K"9&/pr/L`,~> +o`#<>J=aiqEXJcG`L"o6rq_peIBs*t~> +o`#;f(eAa-S[k1+(k2DOrreEYW+r[X$A"NBE*]./SYLq`JcG`L"n]R"OfnA;s*t~> +o`#U*f$hsW"qY0gbq>C$^q;;2Qp\s[^!r_ljo`"pj +rqHHh#5@ogq"XU^oD\jjq#'mdq#Luq=sg. +s*t~> +o`#=?rsQ8cJ>i)>pTT4!U%A$Y%JbP8rNq-OnYF +o`#<":b]GV@N-.V1`2_NrsO,i(h)\/nS]?`<9a/W%J1L_qK<`Zk#n<2)+XM]rrW!Ag[P4Ec5qW1 +rs\<@(`IU5+[SaW5p">CrrLt6r"oK'@"dnH$XofYDqY##P5IifQ/2H@p6qr["8]<+*W6fT:s8kA +l^D*7F34H4~> +o`#9rp\Xpap\Fgdp\O=X#5S#hs8VukrV$UEjrVlWeq:tuNqt[5k$2jSnqu-Nos8;Z:rrrAtp\=Xa +aT$b~> +o`#9EKtZ3&J>_\XJZeG@#+U4As7jBcrI=mjpAYMNh4p%O\:K:BXb4=ErrL3mnc&[_Nh#_@$h&V4 +UQg:ZM8RDoeFNV>Sc+'ALRNmH[dF)&reHH/pAV,TkbE['h#@DkTrS,"rQC7Y\_?EFr5b,Irs%Ye +JrmM"rQ5(i~> +o`#8r+c!]i(gu$o)f+mA#"oe@s72*rr>5O,pAYL;_,iF]I2X,TC*&/frrJRsnc&[V0h_-<$fW!i +=?IE;.$C#QYk%eo:&Pn3-:f6rHgUhAr?a1&n,-hGeQ3Sirn[STN`E+Z$MpGQ."Jtdo(ne +o`#rr;??epAk0crsSStr;HEcqu6Nfq#9.M!<2Ng!r;Wjo)B'kq"X[Z +qY^-aq#'^_!;uij"Shlhq>KXZ$MXQ"rqZKiq"OO\h>[QUq"ibF!WN#Grr`5pp\Ode!VlT=rri>t +p\OjarrN,smJd4dr8ms/~> +o`#J,tAdpAYMRZ-(dcQGN%=L5GBVrrN,ko)AgjT8<.2rsSd\ +PDkl\[F(86O3$nl$-RjLKpTE5RGRr1rsSXQo)JaOC.liKSkmq#13o +pQX:UrrhkmLU?. +o`#;s5WU-=aJ:k/;^es?rrh4ESY7S3(]bi.pAYLBEhC!.6'(!.,UhX/rrN&`o)Agh;((Z#rsS]N +3\Ec>H)s521n+"8$)&1Q,!pr@7Do)krsSH9kPsaOW220e,e)V0!pVIQg]%<,S(%B?a?:ANo)8Ri +nNFA-rrhIs-?m`1rrLcAmJd4>S)s[#~> +o`#:!rM`ho)A^erq?Zor;$0e +rqQK`rs&8pqYBm[qs+1hrV-[QQqtf(I!W)]Crr`/mp\Fae!ri#nli."_roa:_ +rV6 +o`# +o`#<8,*CreH$?4B=":WGrsNW[(aU"9*Ec;X+li=s$S[2n?GlZ'.RtTuWQtMFIi+LBrsP,0(a`_" +:.N"R0\u@##k:'!Gu,h,L%O^2$d0CKd>u7X8q*F/K\cY0G*dX3rrHtfeGfZ8)]`&ZrVlrZ7]#GN +!Jp1,rr]enSFlRU!H!DTrrHtfjo9i~> +o`#9qp\FX^rr2chp\X@X$N'Smp\4L_rqQ6`pAYKoq#(0kq>:0gq"N)6!r_lhnc'!pp\=^ap\Xpa +q"OaYs8VltrVQ?brTX=irV-3aq#($cqY^3bhZ!]Wq#C3FrrMlmeGfXLrqZQlrrW/prTjIbrqHET +rrDlerrMlmmJd4]rT4'0~> +o`#9;Z7$dsQbjM6Pi +hj94NiUm-TqP9t@]RZL6l2M.RJB!J'aMG9`afU]^rr_VJqlSZR!r7Q5eGfX1m@!PDrrUi@i9UCE +n:L/nrrW"`q"F^hq1\#"rrW"MkN2_o~> +o`#8b,YhF*m+QV7(k:rQ$BH,h+;eD@h`)H[p\t[",:92ak=q#nPr0]Xci4'Z(g->.$`t7"c&=!7 +`'Ppjan5T

+p&>Eup\4UcrqlQdp\=UPrsJ`!p\=[cqY:!cq=jmtrqHBkqt^3hp\ap_rQkKFq"OaWrsSc#r:p'b +q>'s`p\smd#Q=Mnp\=X`rTF1gr:fs]rqlWirVlTihZ!]Sr;ZTWrrE&tqtU0lr;"e@!WDlorrW2r +qtpBnrr2fdrrMukrr3#tr9O@arVQQfrrN&nqYpQprqlKj!W;ckrrN)rli2J~> +p&>ERJq28Go#.edJVpDnrsIS4J;V_IZ&I#JS+lpko75Wr_4'65J^hAaj3[f.qiH?inc'!IR*1YY +c(giQQ%8N$rs8GZWIfY_^sLs$rsQr!J=uSNc*#mmMp1&X"/s<@U$;R[n$om@rqZQpd@J_c!T(0^ +rr_kr]__R+"Rik1^&I[(!Oe +p&>E4*#PaOkEL!/)_5@arsHRZ(b2QSE\F>U9)&>okSV)7N_%$s)R+u8bg?@lpGEf7nc'!'6_QP, +UfU9a58`_\rsA;<@iZCGNN'hpkl2$](`60 +p&>0mq>($crq?Njq"X[PrsJc"qu6NgqZ$Tpp\+Upp\Xa\rVcKcrquNhd/O1Cp\F=Y#Q+8iqYKs` +r;QHjqYp9oq"OU[q"Xg^!;kgV$iKbrrqlZls8W#or87MWrV6ElqUKkr;6KtrV?Hmp\Xdd +!VuZkrrN,tli2J~> +p&>EFSt58AL4OoNPEVC$rsJLOa7ml=Wr;taLA1]Vqgc;>PN1SRMX/N;jO!o.V1>9/rt`+qJ?QG; +`QNjaJ?,]=R$j1nS"Q%3Jc:0%\c)R)k5Ph3JA_#mjOF50f!s5errh8?r:Z]HrrqD[p&'?Zq>UJn +anbr;jiHrk"S]a%Q07`<#,(#Vo"DR&qu6iZVtKt<`V'64oRtQirrM]IlMh"bbbWDZqYpSoanu)A +ihuJIJAq?a!N4';rrM]Ili2J~> +p&>Dr:/0PB,8hA#4$#dsrsJ66Rdd.-AGcD_,PV3Hp_\W>43PYb/)-j:c-ZIl>8UB0rt^##(i=XI +QD#<:(hR;K6Ua-_8Q%c;)ZCQUJ,90UJ' +Sb`9dd$sP)"RqFD5L]3'##i_FkD+NIqu6iB@.!b,QM(7ZlQE/*rrM<#lMh"`U04,bqYpS(SbrEj +b$aW4(mb!t!FVJrrrM<#li2J~> +o`#9sq=s^Zq"OR\q"X4U$2FJpp\Xj`p\jj\rsSi#p\Og_q"t'iqY/A:"8hlgrUBgpqY0j]q#'s_ +qt^!^rV$Ehq>:*hr<)uop\4[^!Vu`YrsSc!rqZNms8Dcgp\WkJ"SquqrqZ'`s8N#t#6+Gus8Mcg +q>UKirVHNqqtKj_rrE#ss8W)rrr`8qq#0a_"o\2lqYU9grs&Jus8W)mq=XagqtTmb!<2Bc!rVon +qu6]krVZ["rqZTorqH6arrMlmp&>$kr;Qcqrr3)uqY:$gs*t~> +o`#9SU5XVdP_PC9LmIE-$C';6JAo$eK\V+Qq#:`cJ:OrKOI!ZLnZ.2err^'$NnEk$+0gO$P*=+a +MoVZERXfp>LQSLSf%f*6b,^&COH,3lo]Z;_eU[%_f`2!3S!Sc>i;Wu[R*YfrSac[ZmJd+in##s] +pOK1*+O8\kR +!r_`hn,ELhe>_R-rrW"Lhu*KYn##s]pOK1 +o`#97<\G:O4X3"D-:$qt$9c*o(m]V@+M\ibq#:`O(`7=e2F35Yj_#FWrr\3B0t?`Q+*&Q=3]j*< +/=B`[8/N0^-9,D#[(jGdSn8fV2DQd^lKJ6UZ5DG%\GuTP8OFMNi;WuZ7&^.9:%8/`hVJ22#3&q^ +s6pk4qYpWh+2n'V"8mZe+8u3?rQ5'=!Unb?rr_1?6-Sm!"iV='C5qKSrs%IgpAaV!?hOF#Kf&]% +rrW&]qsXOerNThXr;Qij+2n*W#3&q^s6pk4qYpWh+2mmQ!rD0YrVm, +o`"pirq?ZmqYgUEmrVlfjdJj=Jq#1!Vrseo#p\F^\ +qu6Egq"jpfpAYBrp\4LXp\OjQrsS_uq#(0lrV-3gqY]:O"oS2rs8Dcjrri>ts8MlmrrW)lqYpL! +q>UEorV-0crr`8sp\4[^#5eH#q=sm_rVloqqYpKqq>C6ls8E&oq="@`q#LBfrs&;us8W&lqYC-p +rqu`op\agd!<)ol!<) +o`#rsRh;J:NmJDp;'$eBiiMP0P>in3tkJEHk3rpB^gnqbqSrp]ps +aG,55]RmrbUV`%oc0k<*#hXoaR=Kjrh>HR<$bV"QfDkm4J]@>hbM`C(c'eS2fq&$?"R`DlnZ_ul% +K=>!X8i5!U\"Nchgi*3rso"lZ[dacNf^sSqko_/M>dGY_Q3_:rL_42rri)hNhH7 +o`#<:*?c7cB>fiY(a#sLrsQsf(`4B2:DeMN(s)LP$agg/.oPR/b.$iq)!:hur9aLek9mber:'^r +Rj/b=KcH*+=HG:RUu21Grs6+\*(:\^H,9=ArsOMt3k,.hcPr59G+ddn"f+Tcs11r%rrh7ps5n7u +rsepm*bPHPr)i1_s25atr;R9(eoV`Q-8IK7s7]nbYUKJM#*`T"k^;seKpjdrrDimrrg+s68?.@rtYHn\c;^,eoV`Q-8IK7r)i1_s25atr;R-$ +eoV`Q-8IK7s7lQm&&:.k0tdPdk;<4h>I4?MZMslS~> +o`#-pp\4O_qYC-b!VlW]rsSc!p\Omcp\4LYp\agd$iKbnqu?Zlr;ZfqpZDJUq!J+]q>pQjn,Ego +q"jd\rV?3`q=j^ao`"phrqQHd!W2l_rsSVrr;Zcmq#1-jrVPRR#6+Drs8Vrkqu6fqr;HEcrr39' +q>:!cs8W#prr3&rp\k'j!;lci!Vu]lrri/orqZEirseu%rVuoop\t3mrV63`n,EIfp\FR`s8;lr +!rDZiqu6m!q"ag`p\=^es8;lr"o\5qs8Mi\rrW,tqu6L9ls8;lr!rDZirVllprq?HhrVccr +r;Q^-rV6BlrqZToqYL*arr<#orr2qJ~> +o`#-\J;1;d\#0.T!K6./rsR2(J?J+;J:aM^JBdlh$eBiZ^\[E$ec5[+JEQq5plFhB"1#)hVsjWo +cAnreP2iBkV4)q*p%87dc]+9PrdY')_:tp5A&4qmW-nrrfCRieiis +rs87m^7E[Os2rgirrTWZgAV$U_M!GiRGn)Crrr=oWV!$grr3JnKAuq2[".KBs5B05P54VI"5A?r +r:p9mb1$@i!k*X5qu6o^Q__9sJW'F)rrLWprr3/UOmE&8R-ahYbO`T(J:O'Hr;Q]sb1$@i!k*X5 +rVm)=KReT@iV`]T!S#Eort*nHli6C?s8TI.`0K`is.o8cs*t~> +o`#-K(aF"?I9lgh!A)agrsPeC(i.W8(`cXD(o6s,$agfjMY?%EZN'sA)!Co"nhfb6"*88#?gn"' +VD;aA3QkYJ>Y#]+m.C;[V_CFnrYP\]O4N[t$SE9qs6Ob_b-UcPN8ad@mk)lcpj>g5rrcrAaso:J +rs7mmM+t&Ns.6CmrrRK`]`%j7O<>AW7`bH*rrr3u@d733rr3J\*QnE^Fr8s5s2d>t3V2b?"2,OE +q=ssjT!&(m!dY]rqu6oG6 +o`#9tp\t$`q>9p_r;#a[%K?,#qtTs`rVH9_q"Xgars&8mqu?Znrr2our:fCS!WDc\rri>qrqcN\ +rs/Jsp\Fa]p\Fg_!<2Qh$2XDkqYKs]p\4RPrsS_urr;ckrqZEeq"WhJ#5\,kq=jXZr;R3(q#1'e +qZ$Toq>Lup\k$is7ufpq"t$i#5S,qs8;Werr3)tp\4XTrri/qr;$?f +rrDoprrW2oq"t'rqY:$hs8McirVm6"rVuosq#:u +p\k$i'_qY,s8Mfms8W)ns8Mceq#: +o`#9jJa0IiVn.Sjb*hYs%I8W#a,#\efr]dTNfi)nrs/C\KuEu^eaNM;!nVu%kl1_EJGAU5"RLp0 +ZcDP7$d4WbS'6P9R"U!?o()efY(2P?W/$7\Kt73NrsQ\on+Vgdn>*@sMN?`r#-j2qSqMWbr;R>k +Q.W:kW;lnYRcO%+rr;hprr3)pLPc$/rrh`2l\FBrrs&J%ZHncMr;Q^#TmGQ#I]]Us8VS?_uBZDrfQ@Cs6l9Cs8VJPm/I:]b3e*YLYr(1!W&hq +rr`"NM>mJR"RX=sLYr(1(&j?Xs8VPRnGiOUQN-K-JsH!.s7WAhs*t~> +o`#9`)q]*H?\0JJT1//I%GMo;RO9_A\S;ru1,uuErs/3O+d;igZf:ua!k0$Ekl1_-)"I(p"Pb?Y +Fd_^u$_]F"8Y[CF6m!6_kOSW[CD\gP?m[??+b9LYrsOo*ipe^uj'$MI.Pp&`#&uAA:*:BJr;R>X +5.>F:@/p8O8BpUBu;02d;S/>'$rr[cg*6msP +"A6&0>iY\\!VU+(rr_a:.K',D#CA;Us8V+"P5bIhr&<%'s5H<(s8Uq@m/I:RTAINP-,oi_!VU+( +rr_a:.K'/E"Q#['-,oi_(&U# +oDejbrV6Qmrr)WZrs\l#q"Xgdq"X^`p\4R[rri,nq"t'hrrW)lroj@_rV,a["Sqrnp\jR\$i0Pn +qY0a\p\=^^qsj[mq"ja\qY9j[p\aIZ$iKbrqYpHhqY^Biqr@\^r;-0_qYgHmq>C7(qY9mdqtpEk +q>UEkr;ZfprVlfuqY0jarr`/orV6UBns8)*^s8;os!WMllrrN&rrr3&rp\Ogf"8hom +q#(-mr:p9k!Vu`os8Vous8)Kbrr2ouqu-KnJ,~> +o`#9nJ;0PfURK-gh3@=,%HW/(NoAi]Mm1BTJ@bURrrr:_Xcg6brVlrS +rsPKMZ)iM2WJ?DiQc/Ip$MoscJYof8Mh$E1mf*[>JASA\gS(t#ql%HorsASNXaubHg%aHqr;R>- +Lo(*d]`69Inc-2Is8UO1rr3&,J?&SJ"oZ<*jc09rs.8 +o`#9h(aM^T=@\S2_*%,b%F?"S1!%7!/9%7!(kVGWrrr-XC,pe*rVlqa)"$Pe!k]QQn,EMqMRa_R +n,Eeo(ij:/,[r&Oa$Q!hoD]0k3b'(7G;Lif*OY>8$`"W$B(*E5FfG+DPiViNpT80J5CL*4`D-:1 +&7[(mrJZI1V+]tNJuSeMXjd:L!d5DkrVm&uO@.AKrVca!Fr2'0jo,2a].rmV\JlBfrr3$k(l.S[ +#JX7 +o`#9tp\FRXqYpHkqYBOY$iKbqrqcBdrr2`fqY:'mrqH0crVm$"qtKjakl1\]q="=dr:p6hq!S.i +q"k!bq>0m`rqcBgnc&spq"jg`qY9m^p\jR\$iKf"rqlKerr)`irT*t\rqZ:$arr2unrr2uqrr3*!p\4O`rrrArq>UU?m!;lcq"9%ugqYpL$rV6-bs8W)oq=jjf"o8&qs8DlprrW/nrU'UhrV6Bls8;clrrDrqrr`5o +p\Omh"o\5lrquZkrrr5qs8W&qrr33$p\k*cq#:6l!;ZQmJ,~> +o`#9_J=21H[di>#\!ZR_$dsX3n#h>TmcpBoX8)\sl\'rGrVm#g\:B;)kl1\5SF?I]er/GAQi6FR% +/uTnmuO*AO2LFiJFN+/$K6iLR)H@hSXP5an,Eg?MuN.WQF-#@]VaK_jo5GTTRt\krrAqprt+IHN +VLi9rr3.t]`8#laSu2@gO\PTrs%YMpAb06\GZ@,` +W#l>g44m`rr3/\QDXAs\GZ@1UqHa-j2h6"#2=^lnq3+srr3&sS,WBdJ,~> +o`#9M(e#bqHKN>EI7*E%$`tFiibKWehq1^AB))B.g)hEMrVm#XIMa6lkl1[f9^hubZn9546Mp9P% +/iM'i\XJD1m-a7)!(5e$HOW@6^2dF9h6A9n,Efk/c=O]6$D&2KjDIijo5GJ;B<%?rr?C(rt*j$0 +^o$9Lj)qms7&8Ks8SA`rr]kM+a*ea"irr8n!eb(rr^%R3Q_0u%8O#)^a>`nkPtSZ*\R*RrrH$*r +r3*!RTJ2@rrA>`rr]kM+a*ea$HPILXoJFi93iD4rr3.)L&_1rRf< +o`#*op\4OarquNXrsJc"q"O[cs8;fjq=jmsq=jdbrr;urrV?3_kPkS[qX=Feq#(!bp[8%grVHQm +q>1*gqtp0WrsJPtr:p*cqt^$]rUBgqr:p6cqZ$TnrVcNeqrIbXqu$?k!;cZo#Q"2ns8VifqYpKq +r;6Kn&H)S.rqQL6eq#(0lq>L9l!rMclr;Zfq%/Bl#q#16frr<#tp\aL[!WMlkrrW2pqu6U0 +r;Zfrq"apbrVZKdr:g6krqZKlq#:9srqHEls82fq!r_limJd7cq#13l!Vu]lrt,,.s8MfhrqZNj +q=smfs7uWlrrrDrrr<#qrr33$p\Opeq#:6l!W;ims*t~> +o`#Jqa'hrsS7FM1W86r5m3WRJlp\%&8?ejluO.jPu_[Mu2`U#nG`i\W6:6ieAI`@K&cA#%F^EoN3N<\ceRK8U;?chrrKm_qu6])qYpL' +Y(>F/rI]X$r;Zf<\c2U?e,TI8MP'C/g@P*S_DGcP1,']s66!$regOOs7M$6s8Tt4s8V)4[I4%srlg8Urr3"p +hu*Kce,TI8MP'C/g +o`#$];\jlYlF`,`Vofs6Ulgs8S2Rs8U4cGjbS6rLtdWrr3"& +`Vf`IYQ+XY.oG>$];\jlYlF`,`VofIm2k?gs,cpRs2lO1s*d,orVlo'PPkH2~> +oD\pequ?KhpAk0[rsJc"p\k-krVuomq"F^pq=jaarVl`jqtKpLrrMrlnG`[hq"sj\qL^Hmqt^$arqH3_rr<#qqu?]oq!S1^qt^74 +q>1-krVuikq>^Kor;6Hms7lQiqYpNpqtpEnr;-Em"oJ?"r:g'[rrN#qrr*'!qtU!drVllmqu7$% +s8D`gs8W)rqu-Kn!;QKl!W;fnrsAT&s8;Wfs8W#rr;QforqueH~> +o`#'jK"LoRqg\\0mf*[YJ:ubYn_4$CO,s86rsP6IZ.mpqbaZ5"Rf;ON!MZgfrroop]Tn&:mf*[G +\B^Arg9\c8J:Q_MrsQr!R)?dtX3%*-UYu(M"1!]De,'(Pc[^PRs8V*-\,!D_jSo8=^&%a;f#@[h +n:J7Os6P9@rr2ouS)F;G$Jb[CNM61Jo>nl1rr3&tN;`_T(=]/Zp>nl1s8S&=_liP0s1H8Ls37_Grs$F>s3l_(rUp0s^>APUmG>L; +RcsbN!rS#Ur;R,Zs5f66q>^'-`8gjs!rS#UrVloCY5\G-`;KYaL91@RaS5W4!O_:ls*t~> +o`#'f*J=)cq\T=_mf*[F(a$Qnk.L]n1Gen%rsM7:Ek]'8UIp.b8,VTN!EO1/rrmg0L-?PImf*^' +I\oR8rrrCC-8ht*qu7&&(`7PurlVEloQI_)rrL/qqYpu3 +QN.!F*.e.ih&(/1rr3!j`r>uL_#Mb8>S_sQjI +_hL$>eGfILq(MXCrt*!GcnJJls65u9bPqPAq(MXDrrJp2rr3:gq>[TBC&@q!nGN:eGhi5sJ,~> +oD\jcq"j^bq!J(gqY0pdqYC0kr:g-`rsSf"p\=[cqu$Bfq#'@U!rhrjnc&gmp\=U^p\F7W%/p)$ +rV??fqY9m\p\s[^"Shihqu$Hj!rVfkrr3#uq>L$gq>Uuq=sjXrs&Dsp\4IZrVZZrrVHEk"9&)kqtL*krVHHl!W)fprri>u +q=sj]rrDuos*t~> +oD\lEQ\PBf!JpaCrsH2cbi,Uus8UQ"c1h5GidlWAeEaZgetA)Hkl1_TKXC:L#5!Y,XLs(]mf*^M +^")85_Rck0R"9hUnc'!nM6NJ`ago4*aarINrrMkbrI=p:lMUYifmpa8n_(=es7(rsjo5DHWrDkp +$N@0es2qDAs8Vf,r;Qebnc&OkfW0hDrV6BnkHb$c%/crQJ<-YUqZ$TLcMRV@"oGQVXj>D_rrKCn +q>Ua!]__Z\X,+Riq>UN`dI-u5"oc$Ds/k\frrr)3S<1_ho`#0paI.a8PHj!BrrM;gqu6fOX,+Ri +q#:BXZMa_'XmQ,f"nf^%ON%4orrLCDr;V9~> +oD\k466uFF!@Ia4rsO/kU<$tNs8K/@V#L/h$d'A)26bhcTX7WST'61Uk9"m;rs%a6-u"AP?gdq& +^5'#A7Z`191.)s!hXUURp*joOLn0'UPFNT7rr3#g:&Pn07G.P<$b7+.s5pn;OT+>j[H7Dif4FmV +rsSa>b5\)Gr;ZfbM>mJR!CQ#KrrfiE-]IrtrrLVjr;R3$>8\87@&ir#s1G3&rr3/rE?&_kXR?)h +ET6fo#lB>Ls0u\hN;NGN!oC$:rVm'!IY@`9hZ!NYm#F^sQMpIU#PslY+Wrje_YjE7e8tNe"Lr(l +N;NDM!Ru2grrHlkrr3/gN_;9rrV6BnV#C5kJ,~> +oD\mdqYL0b"T%lfqtoj^$N0Yoq"k!fq"OO]p\tX"p\4[bqYgBjs7lKTrrW,mq=4IhqtKm_p\4LO +rsSc"q"amaq>C6gp\aO\#5n5mrqlTlrqulnrr2otq#0phr;69frVm'!p\t-er;Q]sqtK4P!ri#p +l2Lb^JcEC_J,~> +oD\lBW3cJR"ba.2N4[*ursI8/U5ZSQc]*I+i:m6Zgjk+Ce#hZbci0-=kl1_,J>_r;#0)=W`IWQ7 +mf*[ +oD\k/@!)Ab"X%e%08#V[rsH"R<\AgbW%]&+`qTK@^_e6HYA27oVu8]-kl1^U(gun6#+-MhQ5^ZC +mf*Zf1-naQ6r9T;?l5a0rstnFKAD3@gV_(L +oDed`#5J#kqtKj_mf*Iep\Ophq#:!fqtC$tqtU!aqZ$Hlrr;chkl1_[qY0O[!r;clrq?Ehn,E[l +q"O^ap\Operq?EhnGa!tq>9scs8Vrps8)`ps8)Zf"8i,rq>L +oDef?#_@f$]YT>QcMI#0"g3BWs6u3NJ,m7UrsQl(S@c'(a7o<%OJ_7A"/DiHq""FhVUWeAJ:O]h +rs\%GJ^M\o[/IanJ:P,ursnIga-YTWqQ'>iW9jQaZi#=U\GapRrVm5VJC0h8s8VoRs/G/\!o8q" +JcDJEJ,~> +o`"pjrYPnY-VB,S,8d9Nn,EQ-(his13rTrrL%bNSROLm^Er)3nn*r;Bkl1`e@iOt/rruf7TH+jd +B(,a.d3fg4U)nOTM]ioSI.7.Gi(f\-^[q,2n,HeOs8I0=(^#6`Z!@8-$FUeQ8$W*ooZ@,Ck5PLu +1X^jSUAo`~> +o`#'kp\4IYrqccqqYBOY#l",nqt^!]p\=C\$MsMprVHNns8;Wgl2Lncq>0jboD]'pp\ssaq"X^S +rs8Mtp\=U`r;$-ep[8%ip\Fddqu?]qrVHNnr;63jq"O[[rVlrtp\Omh"TA>urV5XW"TA>rp\f[C +U&TW~> +o`#9=J:NKO\\lJCWh/VX$&"N2\Y"D6JrBX$rsGfZe(h4ps8UDt`p*L+ka]#1oCMteo7HUrZAOLA +n,Eg5Sq)d"gWPtEJ:NFMnG`slLS!Jd_ts/rk,IbJd/8CtJV]'!KDYZJ$ep32r;ZfTo&\Y_rp'Ld +kNfI.h1>U"s*t~> +o`#8d(`4Z&J!$28A5DXn$N;,.iI=]A2'"7Gp&>A2*j3;!h>dMR*gl3l"Op(f)!UYl#O!2o2018r +D"%B4OA?]GA\Oj+0c1`RnaQPfnKgrOd$"(mi6l)ks/Go5"WA^4PTKW!rsQOX@f$-)`ok[_-iE90 +"Ou.I,/Jj1U&TW~> +p&>Erp\4I^q=sd_rquZ]rr`8prV6Bd!rDZdo`#GmET`9N~> +p&>E#J:O!RVN.1`pW:&8rsA7HgQR/BL95ufo`#<6Q/g?js6RP@J=50WrreplZ@ME8rs-f2]98)W +nXJtH"IFYYeWp,a"+u2Xp$_nsXKnG_rOnrAqi9;.Rt-$QKX.\iR%9?'rr3>[JFig?_Y9nIc]IDk +"0mQNk(3Q*s*t~> +p&>D3(`5Tq?8>39n=5.!rs@j*^,d)U,\e/So`#;W50U2(s4iR#(e24(rrc))EuZKK1T' +k">(A"@>)!V(uORQJCW&Eo? +"*#MZdXhFks*t~> +p&G'f$2=;nq>'sgs82W[rrW/nq#:!iq"OO\o`#9qp\4[erqcQhp\F+S"oe8nrqH?^s8Viuq=jac +s7lT^rrW)mq>U*kq"ss_q!\5"rqQ9frqcKjrVQEis7c9_q=sg\p\Fd`rVlg(rV- +p&>DlV1>MVR@DP&s1+llrs@M5Oaqt7NIZQ)o`#< +p&>Cr>Spk%77sNYs+"2=rs?I\3#EJR0GkY'o`#;a(a7T4ggHt)(f0eirrq9sOOk>EoD](`02rj3 +rr5(8n,EH>5?.V!"?qNh*A$[Z)!O%AmbDl2j1:L_nG+=H.TJ0;(a;\n8^.26$H*eGrHLG'cLEl' +JcCE'J,~> +o`#9sp\4O[rr<#tp\F7W#lFDnp\Og_p\OL]$MjGps8;cns82QglMpn["982krUg*rrqHU*grp]q)rV6 +o`#9QJ:Or!p](9dJ>2K3#e?8(JZHkKJ?neH$DN14rmeRLqo+*3li.1dVPO$TJDg)"$0m,T['&he +oS1!Hrs.8FJUiTrigg!u!9iqP)!?h-aKt$HUp]*Brp,*/a6C4C[_CVuL$\g=$L<5kR=MU@s6lA` +JcCE'J,~> +o`#94(`7 +o`# +p&>I!_gm9PoDejEk+@=Fn,EZoJ;)+RP_b"XoD]00TC\u@h<;PsK&#\l#/l2Cer>3go`#3.SB&PG +YN`*Lmf*^AJ:XWJM2AI+J;_YDnc'F$N/6*8TYT^:rN6,"Q\!lST?t=Fl)0jGrsJ=IJ +p&>HtOr,$okl:XpdSM$Mn,EZ+(a>Js4XVB)oD]/N; +D:`DXrpTjqW#-F\Yp_#=8Jj%SlLFlkoIhQ"Yu?Y0Wr$Q2s$Ia;ePN6%mFP`2rr2p)k85%%ec4QL +i^9_ss+LE&~> +p&>-kp\4L_rrr>tqtTp^n,EXeq"sj`r:g0\rsJYtq>L?jq#16eqX"4erV60^q"a[\p&>Bup\F^c +qYp?ip\jR\%/BSmq=ja_q"ORXp\jX^(]=(*q>:0hqYpBgs8VrlrV?Efrr;ojr;HX&qtKmbs8Dcf +q=ji=s+LE&~> +p&>H8J:O-hrr(9 +n[@eaj+c^brsXd_k4L)e?%uOW;ln&WTC#8VY:&:J^=;p$H@U^m/Q48 +L8KO[JcCE'J,~> +p&>GX(`5mFr;*RELFsEZnG`de+u"s1P-c1?o)B&b,[8%[R3p2X+`H`I#JVi?,pl(uCA%T6ef@25 +k'GiobTkO(rsUA!?:>`DIP)Hc(`gK`rth[cP#-\^Y\;dM@/p7I@aAB#?17fn)5mH5$C;Sph>bkj +,@28-JcCE'J,~> +p&>I!r;$9jr;6?fqY0danG`akp\FRXq"O[UrsJPqrVl`hqY^Bgq!J(]rVlNoqYg3`rUp0sqtL$f +qu6HkqtTUZ$iKeop\FUYqtp0_rUBh&qtKscr;Q`qq=jacs8D`fp\F^`q=j^_rsAYurVufjq=s^\ +JcCB&J,~> +p&>H^c_&M^e\eW-W.C$&nG`aAJ=;"AP(:.7rsSadJD^(EKX]D0N0Wf1#j6kkL9'-mJD'Vq$+YZ4 +m`+^om_XkLrsR#8K864`J]GZkJD0Mm(:essjO*T!n#(]Fs8V,;Q%>aA\YOeQr;R)UJDU=SNgP`V +WIb)%s*t~> +p&>HIW)9DhZ]T3e?l:ffnG``q(e5Dc3>d> +oDejc"T&#lq>($dn,EC`r:^3fnc'!mp\Opeq"t'jqtKmQrs8Jqp\k!drqQ?^rsAGsqu6Nnrr2]j +n,EdoqYg9bqYg6bq=jaUrsJSrq>C-irVQKeq>L +oD],_PH;^%V4=Qd[.""pSG[m;Y4;N#VgtfG_26&%r5F2FqsOIiX+5c^\B"<0WqHB!qLlYpoZd.' +oT7>drsRScj/dd4kFdX"J?nbG%/QcNU"%$YfYP=hSG<*`#Fg;,l,]gBn,*+kc[bTHNS)I*MXc8t +KE$H~> +oD]+_3bagf>YJ[@G45G29DfV,D"7N6?Pm>MO!p+Wq3DjNq!S.fAf)E1I[]^lAbH'1ocT6Dl_O(< +l8>C+rsQP[b@h`,do.Sa(j#9J%/!dA#l^es^!3iqr`^V\nU@0Y!kp.cu<^ +KE$H~> +o`#$lp\4I^pB13fq>9[]#6";kq"OOZnG`pop\FX^s8Vukqu$3cn,E^kp\Ogcqu-Nhq=O[mq=spd +s8Droq!S.irV6-_qtg-dr:p$bo)B'nq=j^`rqZEdp\Fae!r_lkpAYBpp](*hqY0i;s+13#~> +o`#9ZJ:Nf6J;'5uTtg*s#MO`cO+;b_q!n@m^4;]C`q]JHNkEMb_!h:0^OWE9b.QTuO-oS>$)#$a-:UU"\k2\"eMJr;HWsgO[]Ers68gr3>OnJ[>*%s+:9$~> +o`#9D(`5:O(a2"kL +o`#9tp\FXZq#(!`p\XL\!WMlmpAk-[rsei!qZ$Toq"aphrV60enc&smp\FXZrVufnqYBd`#lFJo +s8;lpq>'IY#5n5lqY:!crqHNgr:9jorqQ9eqtg-_p\Xge!rDZip](9h"TSDpq##^CJc>`MJ,~> +o`#9`J>\uhO3b4kJAC^T#5411K7JWtn,Ej(J>rSKj,]i#s4r]sp@8.i[Xb9QK'30bc)@0)rs639 +T)[(.fVb;.rsR&$Wj%E4_NL%DJC=#g$M0=>jh7smJ:P91qu6`%K&l\+#+2:fb(u%uJcC<$!<7Q~> +o`#9O(gp,V1oPXL(l\"b#OaVi*Z-#krpg!urc]2grr:.t:uMAh1,eUlrsSgQ(ggPhe,QhO?qg4m +#_?M]s.o"j?VTtg$_eJLD_/8W3]K&8Xn)K!kqk3CLN?B2(khe`rrR-ZcM.>C6XKea-8:p?s+11M +s*t~> +o`"phrq?WorqZs+14M +s*t~> +o`#9>J:N +o`#8e(`4BZemK@mA:O1M#3J,e(`H`)nc'4"\kO#-p%s(Y=7uE==`tWSqXjdsia"--,AH +p&>$irq?]ss8D`ks8Mfko`"phrq?Hgrq$0irW<#oq#:!uqYU'^p\Xj_p\=[`p\=Xaq#:j%q=jgc +p\=^dqY^6gq"jX_#laSorr;utq>B[\$i0Spq"ag^qu6Ngq=O[frV6Bd"Shllq>L$e!r;Terqufn +#5\,hp\=L[JcC<$rVqB~> +p&>KNJq/R4s4`Onrp#Tpq=agmrlU"HJ4Gkd/CNc'#$ursAPnK;Rr6m/EO&mf*]_MR]"I\raYod$CR,p&>?TP_+O +p&>K+*>fs8P(d$IDrrrAaeuj$IrYQ8^KK9qeLQFD2/Zb-Q4atTQrVZQm% +]r>HT">mneC8W2R%u`Mp&>?lkoF'_s5!WHXR?)s6n<^R +pAY9pq=jX\qYpZqp\=a`rrN,qrq?HirU^$hqYp3qq>:*equ$BgqYpKorr)uqq"X^[rV6?cs7lWi +!;QHc!<2Ti#5n5lrqQ9amf*gqq#:-grV?ElqY:$bq"jmarrrAuq"OX_rV$ +pAY9aV1=*:rr2unrr3)CJhb3J:W?) +JUrN2MN3[LJ:WK4OI2W!J:N3$J;!Uers-r(Wq;RBV>BZ\&D*3;WSl^4ir?-@hP-(8\buC*%/J\j +Q[u*\Kn+]+Y5.bj!r9BZq1&O&[,-B6JcGZJJ,~> +pAY9T>SnOC`O?0@*8*@0k)4A+\[BVR"268C3/5'p\s+/jC^M,(`OM9 +)]9eG.l&e#(`=YL2+(+m(`4/.(a&/:rs,VGAEl?E>kRRc&@OgcA&cMqb5Z33_cAU5JGT3D%.q;f +65j:/+rD.;D"RE#!qUm_q%s/\G/Ah1JcGZJJ,~> +r;R'%r;61'Zs8W)`rs/N#qu$Bks8W)tqu6j!rVZTlrUKmj +rV?3_r:L"/rqu]kqu$?cqY^6fr;6Bfq=sd\p\4IZqYBs`q>L$lqYBm[q"t$[rs8W%qYBm[q"jo> +s+14Gs*t~> +r;R)ee[hTFQ'@]:]`,qd`4rpmZF%3NYGnLmQ&LKQJ;92U[c-cV!rh`^li.CmkKLiheaJj*U_+sa1]^9KsB"B^!FO.YbRMQP(87IX/r+p\!r!KJ-N*KJ:Nlr +j73-Un]8,+KnGJgeGOmtJcGTHJ,~> +r;R)RZ@Q7L5!2;FLAmVVPDb'?F*E4\D.7!M5;+?/(a_%3HHG^W!r_6Hli.Cle"`)&ZebZ[i8O)% +rVm-%hRL#'^!HTHrrgVI,Uo>WruL$kW1&L9Q6L=KOb]lrLN$<[83.S21hLE(@!kNcrYPiQ<>ZQ8 +K?Wlc$0@V$7Nrm2BsIJbs+14Hs*t~> +r;Qp!r;HWolMpn`RK!9aqY(*grV?3eq#pQnrVulqrs\o'q"XUXq"t!dqu$GEs+14+s*t~> +r;Qofbi%^Tli.%_nFi:M!P*m]J.7(/h4]RoUn+RMkPk/Prr3DtZ'U8uLR,Ho]>2qaJcC<$h>`!~> +r;QoXUW1gFli.%[jR8N:!Iu"rVZeGS\0rr3DiEC)#n,sZpSK8d(nJcC<$h>`!~> +JcGBBrVhBJJcEIaJ,~> +JcGBB"SD0MmeVM7JcELbJ,~> +JcGBB"RG((i:_a%JcELbJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +%%EndData +showpage +%%Trailer +end +%%EOF diff --git a/Documents/Doxygen/html/dl7bj-shadow-vert.png b/Documents/Doxygen/html/dl7bj-shadow-vert.png new file mode 100644 index 0000000..86bdb79 Binary files /dev/null and b/Documents/Doxygen/html/dl7bj-shadow-vert.png differ diff --git a/Documents/Doxygen/html/doc.png b/Documents/Doxygen/html/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/Documents/Doxygen/html/doc.png differ diff --git a/Documents/Doxygen/html/doxygen-awesome.css b/Documents/Doxygen/html/doxygen-awesome.css new file mode 100644 index 0000000..0823897 --- /dev/null +++ b/Documents/Doxygen/html/doxygen-awesome.css @@ -0,0 +1,2530 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +html { + /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */ + --primary-color: #1779c4; + --primary-dark-color: #335c80; + --primary-light-color: #70b1e9; + + /* page base colors */ + --page-background-color: #ffffff; + --page-foreground-color: #2f4153; + --page-secondary-foreground-color: #6f7e8e; + + /* color for all separators on the website: hr, borders, ... */ + --separator-color: #dedede; + + /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */ + --border-radius-large: 8px; + --border-radius-small: 4px; + --border-radius-medium: 6px; + + /* default spacings. Most components reference these values for spacing, to provide uniform spacing on the page. */ + --spacing-small: 5px; + --spacing-medium: 10px; + --spacing-large: 16px; + + /* default box shadow used for raising an element above the normal content. Used in dropdowns, search result, ... */ + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); + + --odd-color: rgba(0,0,0,.028); + + /* font-families. will affect all text on the website + * font-family: the normal font for text, headlines, menus + * font-family-monospace: used for preformatted text in memtitle, code, fragments + */ + --font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif; + --font-family-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + + /* font sizes */ + --page-font-size: 15.6px; + --navigation-font-size: 14.4px; + --toc-font-size: 13.4px; + --code-font-size: 14px; /* affects code, fragment */ + --title-font-size: 22px; + + /* content text properties. These only affect the page content, not the navigation or any other ui elements */ + --content-line-height: 27px; + /* The content is centered and constraint in it's width. To make the content fill the whole page, set the variable to auto.*/ + --content-maxwidth: 1050px; + --table-line-height: 24px; + --toc-sticky-top: var(--spacing-medium); + --toc-width: 200px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 85px); + + /* colors for various content boxes: @warning, @note, @deprecated @bug */ + --warning-color: #f8d1cc; + --warning-color-dark: #b61825; + --warning-color-darker: #75070f; + --note-color: #faf3d8; + --note-color-dark: #f3a600; + --note-color-darker: #5f4204; + --todo-color: #e4f3ff; + --todo-color-dark: #1879C4; + --todo-color-darker: #274a5c; + --deprecated-color: #ecf0f3; + --deprecated-color-dark: #5b6269; + --deprecated-color-darker: #43454a; + --bug-color: #e4dafd; + --bug-color-dark: #5b2bdd; + --bug-color-darker: #2a0d72; + --invariant-color: #d8f1e3; + --invariant-color-dark: #44b86f; + --invariant-color-darker: #265532; + + /* blockquote colors */ + --blockquote-background: #f8f9fa; + --blockquote-foreground: #636568; + + /* table colors */ + --tablehead-background: #f1f1f1; + --tablehead-foreground: var(--page-foreground-color); + + /* menu-display: block | none + * Visibility of the top navigation on screens >= 768px. On smaller screen the menu is always visible. + * `GENERATE_TREEVIEW` MUST be enabled! + */ + --menu-display: block; + + --menu-focus-foreground: var(--page-background-color); + --menu-focus-background: var(--primary-color); + --menu-selected-background: rgba(0,0,0,.05); + + + --header-background: var(--page-background-color); + --header-foreground: var(--page-foreground-color); + + /* searchbar colors */ + --searchbar-background: var(--side-nav-background); + --searchbar-foreground: var(--page-foreground-color); + + /* searchbar size + * (`searchbar-width` is only applied on screens >= 768px. + * on smaller screens the searchbar will always fill the entire screen width) */ + --searchbar-height: 33px; + --searchbar-width: 210px; + --searchbar-border-radius: var(--searchbar-height); + + /* code block colors */ + --code-background: #f5f5f5; + --code-foreground: var(--page-foreground-color); + + /* fragment colors */ + --fragment-background: #F8F9FA; + --fragment-foreground: #37474F; + --fragment-keyword: #bb6bb2; + --fragment-keywordtype: #8258b3; + --fragment-keywordflow: #d67c3b; + --fragment-token: #438a59; + --fragment-comment: #969696; + --fragment-link: #5383d6; + --fragment-preprocessor: #46aaa5; + --fragment-linenumber-color: #797979; + --fragment-linenumber-background: #f4f4f5; + --fragment-linenumber-border: #e3e5e7; + --fragment-lineheight: 20px; + + /* sidebar navigation (treeview) colors */ + --side-nav-background: #fbfbfb; + --side-nav-foreground: var(--page-foreground-color); + --side-nav-arrow-opacity: 0; + --side-nav-arrow-hover-opacity: 0.9; + + --toc-background: var(--side-nav-background); + --toc-foreground: var(--side-nav-foreground); + + /* height of an item in any tree / collapsible table */ + --tree-item-height: 30px; + + --memname-font-size: var(--code-font-size); + --memtitle-font-size: 18px; + + --webkit-scrollbar-size: 7px; + --webkit-scrollbar-padding: 4px; + --webkit-scrollbar-color: var(--separator-color); +} + +@media screen and (max-width: 767px) { + html { + --page-font-size: 16px; + --navigation-font-size: 16px; + --toc-font-size: 15px; + --code-font-size: 15px; /* affects code, fragment */ + --title-font-size: 22px; + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.35); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #2e1917; + --warning-color-dark: #ad2617; + --warning-color-darker: #f5b1aa; + --note-color: #3b2e04; + --note-color-dark: #f1b602; + --note-color-darker: #ceb670; + --todo-color: #163750; + --todo-color-dark: #1982D2; + --todo-color-darker: #dcf0fa; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2a2536; + --bug-color-dark: #7661b3; + --bug-color-darker: #ae9ed6; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; + } +} + +/* dark mode variables are defined twice, to support both the dark-mode without and with doxygen-awesome-darkmode-toggle.js */ +html.dark-mode { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.30); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #2e1917; + --warning-color-dark: #ad2617; + --warning-color-darker: #f5b1aa; + --note-color: #3b2e04; + --note-color-dark: #f1b602; + --note-color-darker: #ceb670; + --todo-color: #163750; + --todo-color-dark: #1982D2; + --todo-color-darker: #dcf0fa; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2a2536; + --bug-color-dark: #7661b3; + --bug-color-darker: #ae9ed6; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; +} + +body { + color: var(--page-foreground-color); + background-color: var(--page-background-color); + font-size: var(--page-font-size); +} + +body, table, div, p, dl, #nav-tree .label, .title, +.sm-dox a, .sm-dox a:hover, .sm-dox a:focus, #projectname, +.SelectItem, #MSearchField, .navpath li.navelem a, +.navpath li.navelem a:hover, p.reference, p.definition { + font-family: var(--font-family); +} + +h1, h2, h3, h4, h5 { + margin-top: .9em; + font-weight: 600; + line-height: initial; +} + +p, div, table, dl, p.reference, p.definition { + font-size: var(--page-font-size); +} + +p.reference, p.definition { + color: var(--page-secondary-foreground-color); +} + +a:link, a:visited, a:hover, a:focus, a:active { + color: var(--primary-color) !important; + font-weight: 500; +} + +a.anchor { + scroll-margin-top: var(--spacing-large); + display: block; +} + +/* + Title and top navigation + */ + +#top { + background: var(--header-background); + border-bottom: 1px solid var(--separator-color); +} + +@media screen and (min-width: 768px) { + #top { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + } +} + +#main-nav { + flex-grow: 5; + padding: var(--spacing-small) var(--spacing-medium); +} + +#titlearea { + width: auto; + padding: var(--spacing-medium) var(--spacing-large); + background: none; + color: var(--header-foreground); + border-bottom: none; +} + +@media screen and (max-width: 767px) { + #titlearea { + padding-bottom: var(--spacing-small); + } +} + +#titlearea table tbody tr { + height: auto !important; +} + +#projectname { + font-size: var(--title-font-size); + font-weight: 600; +} + +#projectnumber { + font-family: inherit; + font-size: 60%; +} + +#projectbrief { + font-family: inherit; + font-size: 80%; +} + +#projectlogo { + vertical-align: middle; +} + +#projectlogo img { + max-height: calc(var(--title-font-size) * 2); + margin-right: var(--spacing-small); +} + +.sm-dox, .tabs, .tabs2, .tabs3 { + background: none; + padding: 0; +} + +.tabs, .tabs2, .tabs3 { + border-bottom: 1px solid var(--separator-color); + margin-bottom: -1px; +} + +.main-menu-btn-icon, .main-menu-btn-icon:before, .main-menu-btn-icon:after { + background: var(--page-secondary-foreground-color); +} + +@media screen and (max-width: 767px) { + .sm-dox a span.sub-arrow { + background: var(--code-background); + } + + #main-menu a.has-submenu span.sub-arrow { + color: var(--page-secondary-foreground-color); + border-radius: var(--border-radius-medium); + } + + #main-menu a.has-submenu:hover span.sub-arrow { + color: var(--page-foreground-color); + } +} + +@media screen and (min-width: 768px) { + .sm-dox li, .tablist li { + display: var(--menu-display); + } + + .sm-dox a span.sub-arrow { + border-color: var(--header-foreground) transparent transparent transparent; + } + + .sm-dox a:hover span.sub-arrow { + border-color: var(--menu-focus-foreground) transparent transparent transparent; + } + + .sm-dox ul a span.sub-arrow { + border-color: transparent transparent transparent var(--page-foreground-color); + } + + .sm-dox ul a:hover span.sub-arrow { + border-color: transparent transparent transparent var(--menu-focus-foreground); + } +} + +.sm-dox ul { + background: var(--page-background-color); + box-shadow: var(--box-shadow); + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium) !important; + padding: var(--spacing-small); + animation: ease-out 150ms slideInMenu; +} + +@keyframes slideInMenu { + from { + opacity: 0; + transform: translate(0px, -2px); + } + + to { + opacity: 1; + transform: translate(0px, 0px); + } +} + +.sm-dox ul a { + color: var(--page-foreground-color) !important; + background: var(--page-background-color); + font-size: var(--navigation-font-size); +} + +.sm-dox>li>ul:after { + border-bottom-color: var(--page-background-color) !important; +} + +.sm-dox>li>ul:before { + border-bottom-color: var(--separator-color) !important; +} + +.sm-dox ul a:hover, .sm-dox ul a:active, .sm-dox ul a:focus { + font-size: var(--navigation-font-size) !important; + color: var(--menu-focus-foreground) !important; + text-shadow: none; + background-color: var(--menu-focus-background); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a, .sm-dox a:focus, .tablist li, .tablist li a, .tablist li.current a { + text-shadow: none; + background: transparent; + background-image: none !important; + color: var(--header-foreground) !important; + font-weight: normal; + font-size: var(--navigation-font-size); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a:focus { + outline: auto; +} + +.sm-dox a:hover, .sm-dox a:active, .tablist li a:hover { + text-shadow: none; + font-weight: normal; + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; + border-radius: var(--border-radius-small) !important; + font-size: var(--navigation-font-size); +} + +.tablist li.current { + border-radius: var(--border-radius-small); + background: var(--menu-selected-background); +} + +.tablist li { + margin: var(--spacing-small) 0 var(--spacing-small) var(--spacing-small); +} + +.tablist a { + padding: 0 var(--spacing-large); +} + + +/* + Search box + */ + +#MSearchBox { + height: var(--searchbar-height); + background: var(--searchbar-background); + border-radius: var(--searchbar-border-radius); + border: 1px solid var(--separator-color); + overflow: hidden; + width: var(--searchbar-width); + position: relative; + box-shadow: none; + display: block; + margin-top: 0; +} + +/* until Doxygen 1.9.4 */ +.left img#MSearchSelect { + left: 0; + user-select: none; + padding-left: 8px; +} + +/* Doxygen 1.9.5 */ +.left span#MSearchSelect { + left: 0; + user-select: none; + margin-left: 8px; + padding: 0; +} + +.left #MSearchSelect[src$=".png"] { + padding-left: 0 +} + +.SelectionMark { + user-select: none; +} + +.tabs .left #MSearchSelect { + padding-left: 0; +} + +.tabs #MSearchBox { + position: absolute; + right: var(--spacing-medium); +} + +@media screen and (max-width: 767px) { + .tabs #MSearchBox { + position: relative; + right: 0; + margin-left: var(--spacing-medium); + margin-top: 0; + } +} + +#MSearchSelectWindow, #MSearchResultsWindow { + z-index: 9999; +} + +#MSearchBox.MSearchBoxActive { + border-color: var(--primary-color); + box-shadow: inset 0 0 0 1px var(--primary-color); +} + +#main-menu > li:last-child { + margin-right: 0; +} + +@media screen and (max-width: 767px) { + #main-menu > li:last-child { + height: 50px; + } +} + +#MSearchField { + font-size: var(--navigation-font-size); + height: calc(var(--searchbar-height) - 2px); + background: transparent; + width: calc(var(--searchbar-width) - 64px); +} + +.MSearchBoxActive #MSearchField { + color: var(--searchbar-foreground); +} + +#MSearchSelect { + top: calc(calc(var(--searchbar-height) / 2) - 11px); +} + +#MSearchBox span.left, #MSearchBox span.right { + background: none; + background-image: none; +} + +#MSearchBox span.right { + padding-top: calc(calc(var(--searchbar-height) / 2) - 12px); + position: absolute; + right: var(--spacing-small); +} + +.tabs #MSearchBox span.right { + top: calc(calc(var(--searchbar-height) / 2) - 12px); +} + +@keyframes slideInSearchResults { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } +} + +#MSearchResultsWindow { + left: auto !important; + right: var(--spacing-medium); + border-radius: var(--border-radius-large); + border: 1px solid var(--separator-color); + transform: translate(0, 20px); + box-shadow: var(--box-shadow); + animation: ease-out 280ms slideInSearchResults; + background: var(--page-background-color); +} + +iframe#MSearchResults { + margin: 4px; +} + +iframe { + color-scheme: normal; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) iframe#MSearchResults { + filter: invert() hue-rotate(180deg); + } +} + +html.dark-mode iframe#MSearchResults { + filter: invert() hue-rotate(180deg); +} + +#MSearchResults .SRPage { + background-color: transparent; +} + +#MSearchResults .SRPage .SREntry { + font-size: 10pt; + padding: var(--spacing-small) var(--spacing-medium); +} + +#MSearchSelectWindow { + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + box-shadow: var(--box-shadow); + background: var(--page-background-color); + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); +} + +#MSearchSelectWindow a.SelectItem { + font-size: var(--navigation-font-size); + line-height: var(--content-line-height); + margin: 0 var(--spacing-small); + border-radius: var(--border-radius-small); + color: var(--page-foreground-color) !important; + font-weight: normal; +} + +#MSearchSelectWindow a.SelectItem:hover { + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; +} + +@media screen and (max-width: 767px) { + #MSearchBox { + margin-top: var(--spacing-medium); + margin-bottom: var(--spacing-medium); + width: calc(100vw - 30px); + } + + #main-menu > li:last-child { + float: none !important; + } + + #MSearchField { + width: calc(100vw - 110px); + } + + @keyframes slideInSearchResultsMobile { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: var(--spacing-medium); + overflow: auto; + transform: translate(0, 20px); + animation: ease-out 280ms slideInSearchResultsMobile; + width: auto !important; + } + + /* + * Overwrites for fixing the searchbox on mobile in doxygen 1.9.2 + */ + label.main-menu-btn ~ #searchBoxPos1 { + top: 3px !important; + right: 6px !important; + left: 45px; + display: flex; + } + + label.main-menu-btn ~ #searchBoxPos1 > #MSearchBox { + margin-top: 0; + margin-bottom: 0; + flex-grow: 2; + float: left; + } +} + +/* + Tree view + */ + +#side-nav { + padding: 0 !important; + background: var(--side-nav-background); + min-width: 8px; + max-width: 50vw; +} + +@media screen and (max-width: 767px) { + #side-nav { + display: none; + } + + #doc-content { + margin-left: 0 !important; + } +} + +#nav-tree { + background: transparent; + margin-right: 1px; +} + +#nav-tree .label { + font-size: var(--navigation-font-size); +} + +#nav-tree .item { + height: var(--tree-item-height); + line-height: var(--tree-item-height); +} + +#nav-sync { + bottom: 12px; + right: 12px; + top: auto !important; + user-select: none; +} + +#nav-tree .selected { + text-shadow: none; + background-image: none; + background-color: transparent; + position: relative; +} + +#nav-tree .selected::after { + content: ""; + position: absolute; + top: 1px; + bottom: 1px; + left: 0; + width: 4px; + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + background: var(--primary-color); +} + + +#nav-tree a { + color: var(--side-nav-foreground) !important; + font-weight: normal; +} + +#nav-tree a:focus { + outline-style: auto; +} + +#nav-tree .arrow { + opacity: var(--side-nav-arrow-opacity); +} + +.arrow { + color: inherit; + cursor: pointer; + font-size: 45%; + vertical-align: middle; + margin-right: 2px; + font-family: serif; + height: auto; + text-align: right; +} + +#nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow { + opacity: var(--side-nav-arrow-hover-opacity); +} + +#nav-tree .selected a { + color: var(--primary-color) !important; + font-weight: bolder; + font-weight: 600; +} + +.ui-resizable-e { + width: 4px; + background: transparent; + box-shadow: inset -1px 0 0 0 var(--separator-color); +} + +/* + Contents + */ + +div.header { + border-bottom: 1px solid var(--separator-color); + background-color: var(--page-background-color); + background-image: none; +} + +@media screen and (min-width: 1000px) { + #doc-content > div > div.contents, + .PageDoc > div.contents { + display: flex; + flex-direction: row-reverse; + flex-wrap: nowrap; + align-items: flex-start; + } + + div.contents .textblock { + min-width: 200px; + flex-grow: 1; + } +} + +div.contents, div.header .title, div.header .summary { + max-width: var(--content-maxwidth); +} + +div.contents, div.header .title { + line-height: initial; + margin: calc(var(--spacing-medium) + .2em) auto var(--spacing-medium) auto; +} + +div.header .summary { + margin: var(--spacing-medium) auto 0 auto; +} + +div.headertitle { + padding: 0; +} + +div.header .title { + font-weight: 600; + font-size: 225%; + padding: var(--spacing-medium) var(--spacing-large); + word-break: break-word; +} + +div.header .summary { + width: auto; + display: block; + float: none; + padding: 0 var(--spacing-large); +} + +td.memSeparator { + border-color: var(--separator-color); +} + +span.mlabel { + background: var(--primary-color); + border: none; + padding: 4px 9px; + border-radius: 12px; + margin-right: var(--spacing-medium); +} + +span.mlabel:last-of-type { + margin-right: 2px; +} + +div.contents { + padding: 0 var(--spacing-large); +} + +div.contents p, div.contents li { + line-height: var(--content-line-height); +} + +div.contents div.dyncontent { + margin: var(--spacing-medium) 0; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) div.contents div.dyncontent img, + html:not(.light-mode) div.contents center img, + html:not(.light-mode) div.contents > table img, + html:not(.light-mode) div.contents div.dyncontent iframe, + html:not(.light-mode) div.contents center iframe, + html:not(.light-mode) div.contents table iframe, + html:not(.light-mode) div.contents .dotgraph iframe { + filter: brightness(89%) hue-rotate(180deg) invert(); + } +} + +html.dark-mode div.contents div.dyncontent img, +html.dark-mode div.contents center img, +html.dark-mode div.contents > table img, +html.dark-mode div.contents div.dyncontent iframe, +html.dark-mode div.contents center iframe, +html.dark-mode div.contents table iframe, +html.dark-mode div.contents .dotgraph iframe + { + filter: brightness(89%) hue-rotate(180deg) invert(); +} + +h2.groupheader { + border-bottom: 0px; + color: var(--page-foreground-color); + box-shadow: + 100px 0 var(--page-background-color), + -100px 0 var(--page-background-color), + 100px 0.75px var(--separator-color), + -100px 0.75px var(--separator-color), + 500px 0 var(--page-background-color), + -500px 0 var(--page-background-color), + 500px 0.75px var(--separator-color), + -500px 0.75px var(--separator-color), + 900px 0 var(--page-background-color), + -900px 0 var(--page-background-color), + 900px 0.75px var(--separator-color), + -900px 0.75px var(--separator-color), + 1400px 0 var(--page-background-color), + -1400px 0 var(--page-background-color), + 1400px 0.75px var(--separator-color), + -1400px 0.75px var(--separator-color), + 1900px 0 var(--page-background-color), + -1900px 0 var(--page-background-color), + 1900px 0.75px var(--separator-color), + -1900px 0.75px var(--separator-color); +} + +blockquote { + margin: 0 var(--spacing-medium) 0 var(--spacing-medium); + padding: var(--spacing-small) var(--spacing-large); + background: var(--blockquote-background); + color: var(--blockquote-foreground); + border-left: 0; + overflow: visible; + border-radius: var(--border-radius-medium); + overflow: visible; + position: relative; +} + +blockquote::before, blockquote::after { + font-weight: bold; + font-family: serif; + font-size: 360%; + opacity: .15; + position: absolute; +} + +blockquote::before { + content: "“"; + left: -10px; + top: 4px; +} + +blockquote::after { + content: "”"; + right: -8px; + bottom: -25px; +} + +blockquote p { + margin: var(--spacing-small) 0 var(--spacing-medium) 0; +} +.paramname { + font-weight: 600; + color: var(--primary-dark-color); +} + +.paramname > code { + border: 0; +} + +table.params .paramname { + font-weight: 600; + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + padding-right: var(--spacing-small); + line-height: var(--table-line-height); +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--primary-light-color); +} + +.alphachar a { + color: var(--page-foreground-color); +} + +.dotgraph { + max-width: 100%; + overflow-x: scroll; +} + +.dotgraph .caption { + position: sticky; + left: 0; +} + +/* Wrap Graphviz graphs with the `interactive_dotgraph` class if `INTERACTIVE_SVG = YES` */ +.interactive_dotgraph .dotgraph iframe { + max-width: 100%; +} + +/* + Table of Contents + */ + +div.contents .toc { + max-height: var(--toc-max-height); + min-width: var(--toc-width); + border: 0; + border-left: 1px solid var(--separator-color); + border-radius: 0; + background-color: transparent; + box-shadow: none; + position: sticky; + top: var(--toc-sticky-top); + padding: 0 var(--spacing-large); + margin: var(--spacing-small) 0 var(--spacing-large) var(--spacing-large); +} + +div.toc h3 { + color: var(--toc-foreground); + font-size: var(--navigation-font-size); + margin: var(--spacing-large) 0 var(--spacing-medium) 0; +} + +div.toc li { + padding: 0; + background: none; + line-height: var(--toc-font-size); + margin: var(--toc-font-size) 0 0 0; +} + +div.toc li::before { + display: none; +} + +div.toc ul { + margin-top: 0 +} + +div.toc li a { + font-size: var(--toc-font-size); + color: var(--page-foreground-color) !important; + text-decoration: none; +} + +div.toc li a:hover, div.toc li a.active { + color: var(--primary-color) !important; +} + +div.toc li a.aboveActive { + color: var(--page-secondary-foreground-color) !important; +} + + +@media screen and (max-width: 999px) { + div.contents .toc { + max-height: 45vh; + float: none; + width: auto; + margin: 0 0 var(--spacing-medium) 0; + position: relative; + top: 0; + position: relative; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + background-color: var(--toc-background); + box-shadow: var(--box-shadow); + } + + div.contents .toc.interactive { + max-height: calc(var(--navigation-font-size) + 2 * var(--spacing-large)); + overflow: hidden; + } + + div.contents .toc > h3 { + -webkit-tap-highlight-color: transparent; + cursor: pointer; + position: sticky; + top: 0; + background-color: var(--toc-background); + margin: 0; + padding: var(--spacing-large) 0; + display: block; + } + + div.contents .toc.interactive > h3::before { + content: ""; + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + display: inline-block; + margin-right: var(--spacing-small); + margin-bottom: calc(var(--navigation-font-size) / 4); + transform: rotate(-90deg); + transition: transform 0.25s ease-out; + } + + div.contents .toc.interactive.open > h3::before { + transform: rotate(0deg); + } + + div.contents .toc.interactive.open { + max-height: 45vh; + overflow: auto; + transition: max-height 0.2s ease-in-out; + } + + div.contents .toc a, div.contents .toc a.active { + color: var(--primary-color) !important; + } + + div.contents .toc a:hover { + text-decoration: underline; + } +} + +/* + Code & Fragments + */ + +code, div.fragment, pre.fragment { + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + overflow: hidden; +} + +code { + display: inline; + background: var(--code-background); + color: var(--code-foreground); + padding: 2px 6px; +} + +div.fragment, pre.fragment { + margin: var(--spacing-medium) 0; + padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large); + background: var(--fragment-background); + color: var(--fragment-foreground); + overflow-x: auto; +} + +@media screen and (max-width: 767px) { + div.fragment, pre.fragment { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: 0; + } + + .contents > div.fragment, + .textblock > div.fragment, + .textblock > pre.fragment, + .contents > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + border-radius: 0; + border-left: 0; + } + + .textblock li > .fragment, + .textblock li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + } + + .memdoc li > .fragment, + .memdoc li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + } + + .textblock ul, .memdoc ul { + overflow: initial; + } + + .memdoc > div.fragment, + .memdoc > pre.fragment, + dl dd > div.fragment, + dl dd pre.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > div.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > pre.fragment, + dl dd > .doxygen-awesome-fragment-wrapper > div.fragment, + dl dd .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + border-radius: 0; + border-left: 0; + } +} + +code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size) !important; +} + +div.line:after { + margin-right: var(--spacing-medium); +} + +div.fragment .line, pre.fragment { + white-space: pre; + word-wrap: initial; + line-height: var(--fragment-lineheight); +} + +div.fragment span.keyword { + color: var(--fragment-keyword); +} + +div.fragment span.keywordtype { + color: var(--fragment-keywordtype); +} + +div.fragment span.keywordflow { + color: var(--fragment-keywordflow); +} + +div.fragment span.stringliteral { + color: var(--fragment-token) +} + +div.fragment span.comment { + color: var(--fragment-comment); +} + +div.fragment a.code { + color: var(--fragment-link) !important; +} + +div.fragment span.preprocessor { + color: var(--fragment-preprocessor); +} + +div.fragment span.lineno { + display: inline-block; + width: 27px; + border-right: none; + background: var(--fragment-linenumber-background); + color: var(--fragment-linenumber-color); +} + +div.fragment span.lineno a { + background: none; + color: var(--fragment-link) !important; +} + +div.fragment .line:first-child .lineno { + box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border); +} + +div.line { + border-radius: var(--border-radius-small); +} + +div.line.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +/* + dl warning, attention, note, deprecated, bug, ... + */ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.post, dl.todo, dl.remark { + padding: var(--spacing-medium); + margin: var(--spacing-medium) 0; + color: var(--page-background-color); + overflow: hidden; + margin-left: 0; + border-radius: var(--border-radius-small); +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color); + border-left: 8px solid var(--warning-color-dark); + color: var(--warning-color-darker); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-dark); +} + +dl.note, dl.remark { + background: var(--note-color); + border-left: 8px solid var(--note-color-dark); + color: var(--note-color-darker); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-dark); +} + +dl.todo { + background: var(--todo-color); + border-left: 8px solid var(--todo-color-dark); + color: var(--todo-color-darker); +} + +dl.todo dt { + color: var(--todo-color-dark); +} + +dl.bug dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug { + background: var(--bug-color); + border-left: 8px solid var(--bug-color-dark); + color: var(--bug-color-darker); +} + +dl.bug dt a { + color: var(--bug-color-dark) !important; +} + +dl.deprecated { + background: var(--deprecated-color); + border-left: 8px solid var(--deprecated-color-dark); + color: var(--deprecated-color-darker); +} + +dl.deprecated dt a { + color: var(--deprecated-color-dark) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color); + border-left: 8px solid var(--invariant-color-dark); + color: var(--invariant-color-darker); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-dark); +} + +/* + memitem + */ + +div.memdoc, div.memproto, h2.memtitle { + box-shadow: none; + background-image: none; + border: none; +} + +div.memdoc { + padding: 0 var(--spacing-medium); + background: var(--page-background-color); +} + +h2.memtitle, div.memitem { + border: 1px solid var(--separator-color); + box-shadow: var(--box-shadow); +} + +h2.memtitle { + box-shadow: 0px var(--spacing-medium) 0 -1px var(--fragment-background), var(--box-shadow); +} + +div.memitem { + transition: none; +} + +div.memproto, h2.memtitle { + background: var(--fragment-background); +} + +h2.memtitle { + font-weight: 500; + font-size: var(--memtitle-font-size); + font-family: var(--font-family-monospace); + border-bottom: none; + border-top-left-radius: var(--border-radius-medium); + border-top-right-radius: var(--border-radius-medium); + word-break: break-all; + position: relative; +} + +h2.memtitle:after { + content: ""; + display: block; + background: var(--fragment-background); + height: var(--spacing-medium); + bottom: calc(0px - var(--spacing-medium)); + left: 0; + right: -14px; + position: absolute; + border-top-right-radius: var(--border-radius-medium); +} + +h2.memtitle > span.permalink { + font-size: inherit; +} + +h2.memtitle > span.permalink > a { + text-decoration: none; + padding-left: 3px; + margin-right: -4px; + user-select: none; + display: inline-block; + margin-top: -6px; +} + +h2.memtitle > span.permalink > a:hover { + color: var(--primary-dark-color) !important; +} + +a:target + h2.memtitle, a:target + h2.memtitle + div.memitem { + border-color: var(--primary-light-color); +} + +div.memitem { + border-top-right-radius: var(--border-radius-medium); + border-bottom-right-radius: var(--border-radius-medium); + border-bottom-left-radius: var(--border-radius-medium); + overflow: hidden; + display: block !important; +} + +div.memdoc { + border-radius: 0; +} + +div.memproto { + border-radius: 0 var(--border-radius-small) 0 0; + overflow: auto; + border-bottom: 1px solid var(--separator-color); + padding: var(--spacing-medium); + margin-bottom: -1px; +} + +div.memtitle { + border-top-right-radius: var(--border-radius-medium); + border-top-left-radius: var(--border-radius-medium); +} + +div.memproto table.memname { + font-family: var(--font-family-monospace); + color: var(--page-foreground-color); + font-size: var(--memname-font-size); + text-shadow: none; +} + +div.memproto div.memtemplate { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--memname-font-size); + margin-left: 2px; + text-shadow: none; +} + +table.mlabels, table.mlabels > tbody { + display: block; +} + +td.mlabels-left { + width: auto; +} + +td.mlabels-right { + margin-top: 3px; + position: sticky; + left: 0; +} + +table.mlabels > tbody > tr:first-child { + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.memname, .memitem span.mlabels { + margin: 0 +} + +/* + reflist + */ + +dl.reflist { + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-medium); + border: 1px solid var(--separator-color); + overflow: hidden; + padding: 0; +} + + +dl.reflist dt, dl.reflist dd { + box-shadow: none; + text-shadow: none; + background-image: none; + border: none; + padding: 12px; +} + + +dl.reflist dt { + font-weight: 500; + border-radius: 0; + background: var(--code-background); + border-bottom: 1px solid var(--separator-color); + color: var(--page-foreground-color) +} + + +dl.reflist dd { + background: none; +} + +/* + Table + */ + +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname), +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: inline-block; + max-width: 100%; +} + +.contents > table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):not(.classindex) { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); +} + +table.fieldtable, +table.markdownTable tbody, +table.doxtable tbody { + border: none; + margin: var(--spacing-medium) 0; + box-shadow: 0 0 0 1px var(--separator-color); + border-radius: var(--border-radius-small); +} + +table.markdownTable, table.doxtable, table.fieldtable { + padding: 1px; +} + +table.doxtable caption { + display: block; +} + +table.fieldtable { + border-collapse: collapse; + width: 100%; +} + +th.markdownTableHeadLeft, +th.markdownTableHeadRight, +th.markdownTableHeadCenter, +th.markdownTableHeadNone, +table.doxtable th { + background: var(--tablehead-background); + color: var(--tablehead-foreground); + font-weight: 600; + font-size: var(--page-font-size); +} + +th.markdownTableHeadLeft:first-child, +th.markdownTableHeadRight:first-child, +th.markdownTableHeadCenter:first-child, +th.markdownTableHeadNone:first-child, +table.doxtable tr th:first-child { + border-top-left-radius: var(--border-radius-small); +} + +th.markdownTableHeadLeft:last-child, +th.markdownTableHeadRight:last-child, +th.markdownTableHeadCenter:last-child, +th.markdownTableHeadNone:last-child, +table.doxtable tr th:last-child { + border-top-right-radius: var(--border-radius-small); +} + +table.markdownTable td, +table.markdownTable th, +table.fieldtable td, +table.fieldtable th, +table.doxtable td, +table.doxtable th { + border: 1px solid var(--separator-color); + padding: var(--spacing-small) var(--spacing-medium); +} + +table.markdownTable td:last-child, +table.markdownTable th:last-child, +table.fieldtable td:last-child, +table.fieldtable th:last-child, +table.doxtable td:last-child, +table.doxtable th:last-child { + border-right: none; +} + +table.markdownTable td:first-child, +table.markdownTable th:first-child, +table.fieldtable td:first-child, +table.fieldtable th:first-child, +table.doxtable td:first-child, +table.doxtable th:first-child { + border-left: none; +} + +table.markdownTable tr:first-child td, +table.markdownTable tr:first-child th, +table.fieldtable tr:first-child td, +table.fieldtable tr:first-child th, +table.doxtable tr:first-child td, +table.doxtable tr:first-child th { + border-top: none; +} + +table.markdownTable tr:last-child td, +table.markdownTable tr:last-child th, +table.fieldtable tr:last-child td, +table.fieldtable tr:last-child th, +table.doxtable tr:last-child td, +table.doxtable tr:last-child th { + border-bottom: none; +} + +table.markdownTable tr, table.doxtable tr { + border-bottom: 1px solid var(--separator-color); +} + +table.markdownTable tr:last-child, table.doxtable tr:last-child { + border-bottom: none; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) { + display: block; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: table; + width: 100%; +} + +table.fieldtable th { + font-size: var(--page-font-size); + font-weight: 600; + background-image: none; + background-color: var(--tablehead-background); + color: var(--tablehead-foreground); +} + +table.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fielddoc, .fieldtable th { + border-bottom: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); +} + +table.fieldtable tr:last-child td:first-child { + border-bottom-left-radius: var(--border-radius-small); +} + +table.fieldtable tr:last-child td:last-child { + border-bottom-right-radius: var(--border-radius-small); +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +table.memberdecls { + display: block; + -webkit-tap-highlight-color: transparent; +} + +table.memberdecls tr[class^='memitem'] { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); +} + +table.memberdecls tr[class^='memitem'] .memTemplParams { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + color: var(--primary-dark-color); + white-space: normal; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memItemRight, +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight, +table.memberdecls .memTemplParams { + transition: none; + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + background-color: var(--fragment-background); +} + +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight { + padding-top: 2px; +} + +table.memberdecls .memTemplParams { + border-bottom: 0; + border-left: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + padding-bottom: var(--spacing-small); +} + +table.memberdecls .memTemplItemLeft { + border-radius: 0 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + border-top: 0; +} + +table.memberdecls .memTemplItemRight { + border-radius: 0 0 var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-left: 0; + border-top: 0; +} + +table.memberdecls .memItemLeft { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + padding-left: var(--spacing-medium); + padding-right: 0; +} + +table.memberdecls .memItemRight { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-right: var(--spacing-medium); + padding-left: 0; + +} + +table.memberdecls .mdescLeft, table.memberdecls .mdescRight { + background: none; + color: var(--page-foreground-color); + padding: var(--spacing-small) 0; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memTemplItemLeft { + padding-right: var(--spacing-medium); +} + +table.memberdecls .memSeparator { + background: var(--page-background-color); + height: var(--spacing-large); + border: 0; + transition: none; +} + +table.memberdecls .groupheader { + margin-bottom: var(--spacing-large); +} + +table.memberdecls .inherit_header td { + padding: 0 0 var(--spacing-medium) 0; + text-indent: -12px; + color: var(--page-secondary-foreground-color); +} + +table.memberdecls img[src="closed.png"], +table.memberdecls img[src="open.png"], +div.dynheader img[src="open.png"], +div.dynheader img[src="closed.png"] { + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + margin-top: 8px; + display: block; + float: left; + margin-left: -10px; + transition: transform 0.25s ease-out; +} + +table.memberdecls img { + margin-right: 10px; +} + +table.memberdecls img[src="closed.png"], +div.dynheader img[src="closed.png"] { + transform: rotate(-90deg); + +} + +.compoundTemplParams { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--code-font-size); +} + +@media screen and (max-width: 767px) { + + table.memberdecls .memItemLeft, + table.memberdecls .memItemRight, + table.memberdecls .mdescLeft, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemLeft, + table.memberdecls .memTemplItemRight, + table.memberdecls .memTemplParams { + display: block; + text-align: left; + padding-left: var(--spacing-large); + margin: 0 calc(0px - var(--spacing-large)) 0 calc(0px - var(--spacing-large)); + border-right: none; + border-left: none; + border-radius: 0; + white-space: normal; + } + + table.memberdecls .memItemLeft, + table.memberdecls .mdescLeft, + table.memberdecls .memTemplItemLeft { + border-bottom: 0; + padding-bottom: 0; + } + + table.memberdecls .memTemplItemLeft { + padding-top: 0; + } + + table.memberdecls .mdescLeft { + margin-bottom: calc(0px - var(--page-font-size)); + } + + table.memberdecls .memItemRight, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemRight { + border-top: 0; + padding-top: 0; + padding-right: var(--spacing-large); + overflow-x: auto; + } + + table.memberdecls tr[class^='memitem']:not(.inherit) { + display: block; + width: calc(100vw - 2 * var(--spacing-large)); + } + + table.memberdecls .mdescRight { + color: var(--page-foreground-color); + } + + table.memberdecls tr.inherit { + visibility: hidden; + } + + table.memberdecls tr[style="display: table-row;"] { + display: block !important; + visibility: visible; + width: calc(100vw - 2 * var(--spacing-large)); + animation: fade .5s; + } + + @keyframes fade { + 0% { + opacity: 0; + max-height: 0; + } + + 100% { + opacity: 1; + max-height: 200px; + } + } +} + + +/* + Horizontal Rule + */ + +hr { + margin-top: var(--spacing-large); + margin-bottom: var(--spacing-large); + height: 1px; + background-color: var(--separator-color); + border: 0; +} + +.contents hr { + box-shadow: 100px 0 0 var(--separator-color), + -100px 0 0 var(--separator-color), + 500px 0 0 var(--separator-color), + -500px 0 0 var(--separator-color), + 1500px 0 0 var(--separator-color), + -1500px 0 0 var(--separator-color), + 2000px 0 0 var(--separator-color), + -2000px 0 0 var(--separator-color); +} + +.contents img, .contents .center, .contents center, .contents div.image object { + max-width: 100%; + overflow: auto; +} + +@media screen and (max-width: 767px) { + .contents .dyncontent > .center, .contents > center { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); + } +} + +/* + Directories + */ +div.directory { + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + width: auto; +} + +table.directory { + font-family: var(--font-family); + font-size: var(--page-font-size); + font-weight: normal; + width: 100%; +} + +table.directory td.entry, table.directory td.desc { + padding: calc(var(--spacing-small) / 2) var(--spacing-small); + line-height: var(--table-line-height); +} + +table.directory tr.even td:last-child { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; +} + +table.directory tr.even td:first-child { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); +} + +table.directory tr.even:last-child td:last-child { + border-radius: 0 var(--border-radius-small) 0 0; +} + +table.directory tr.even:last-child td:first-child { + border-radius: var(--border-radius-small) 0 0 0; +} + +table.directory td.desc { + min-width: 250px; +} + +table.directory tr.even { + background-color: var(--odd-color); +} + +table.directory tr.odd { + background-color: transparent; +} + +.icona { + width: auto; + height: auto; + margin: 0 var(--spacing-small); +} + +.icon { + background: var(--primary-color); + border-radius: var(--border-radius-small); + font-size: var(--page-font-size); + padding: calc(var(--page-font-size) / 5); + line-height: var(--page-font-size); + transform: scale(0.8); + height: auto; + width: var(--page-font-size); + user-select: none; +} + +.iconfopen, .icondoc, .iconfclosed { + background-position: center; + margin-bottom: 0; + height: var(--table-line-height); +} + +.icondoc { + filter: saturate(0.2); +} + +@media screen and (max-width: 767px) { + div.directory { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) .iconfopen, html:not(.light-mode) .iconfclosed { + filter: hue-rotate(180deg) invert(); + } +} + +html.dark-mode .iconfopen, html.dark-mode .iconfclosed { + filter: hue-rotate(180deg) invert(); +} + +/* + Class list + */ + +.classindex dl.odd { + background: var(--odd-color); + border-radius: var(--border-radius-small); +} + +.classindex dl.even { + background-color: transparent; +} + +/* + Class Index Doxygen 1.8 +*/ + +table.classindex { + margin-left: 0; + margin-right: 0; + width: 100%; +} + +table.classindex table div.ah { + background-image: none; + background-color: initial; + border-color: var(--separator-color); + color: var(--page-foreground-color); + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-large); + padding: var(--spacing-small); +} + +div.qindex { + background-color: var(--odd-color); + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + padding: var(--spacing-small) 0; +} + +/* + Footer and nav-path + */ + +#nav-path { + width: 100%; +} + +#nav-path ul { + background-image: none; + background: var(--page-background-color); + border: none; + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + border-bottom: 0; + box-shadow: 0 0.75px 0 var(--separator-color); + font-size: var(--navigation-font-size); +} + +img.footer { + width: 60px; +} + +.navpath li.footer { + color: var(--page-secondary-foreground-color); +} + +address.footer { + color: var(--page-secondary-foreground-color); + margin-bottom: var(--spacing-large); +} + +#nav-path li.navelem { + background-image: none; + display: flex; + align-items: center; +} + +.navpath li.navelem a { + text-shadow: none; + display: inline-block; + color: var(--primary-color) !important; +} + +.navpath li.navelem b { + color: var(--primary-dark-color); + font-weight: 500; +} + +li.navelem { + padding: 0; + margin-left: -8px; +} + +li.navelem:first-child { + margin-left: var(--spacing-large); +} + +li.navelem:first-child:before { + display: none; +} + +#nav-path li.navelem:after { + content: ''; + border: 5px solid var(--page-background-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(4.2); + z-index: 10; + margin-left: 6px; +} + +#nav-path li.navelem:before { + content: ''; + border: 5px solid var(--separator-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(3.2); + margin-right: var(--spacing-small); +} + +.navpath li.navelem a:hover { + color: var(--primary-color); +} + +/* + Scrollbars for Webkit +*/ + +#nav-tree::-webkit-scrollbar, +div.fragment::-webkit-scrollbar, +pre.fragment::-webkit-scrollbar, +div.memproto::-webkit-scrollbar, +.contents center::-webkit-scrollbar, +.contents .center::-webkit-scrollbar, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar, +div.contents .toc::-webkit-scrollbar, +.contents .dotgraph::-webkit-scrollbar, +.contents .tabs-overview-container::-webkit-scrollbar { + background: transparent; + width: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + height: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); +} + +#nav-tree::-webkit-scrollbar-thumb, +div.fragment::-webkit-scrollbar-thumb, +pre.fragment::-webkit-scrollbar-thumb, +div.memproto::-webkit-scrollbar-thumb, +.contents center::-webkit-scrollbar-thumb, +.contents .center::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-thumb, +div.contents .toc::-webkit-scrollbar-thumb, +.contents .dotgraph::-webkit-scrollbar-thumb, +.contents .tabs-overview-container::-webkit-scrollbar-thumb { + background-color: transparent; + border: var(--webkit-scrollbar-padding) solid transparent; + border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + background-clip: padding-box; +} + +#nav-tree:hover::-webkit-scrollbar-thumb, +div.fragment:hover::-webkit-scrollbar-thumb, +pre.fragment:hover::-webkit-scrollbar-thumb, +div.memproto:hover::-webkit-scrollbar-thumb, +.contents center:hover::-webkit-scrollbar-thumb, +.contents .center:hover::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody:hover::-webkit-scrollbar-thumb, +div.contents .toc:hover::-webkit-scrollbar-thumb, +.contents .dotgraph:hover::-webkit-scrollbar-thumb, +.contents .tabs-overview-container:hover::-webkit-scrollbar-thumb { + background-color: var(--webkit-scrollbar-color); +} + +#nav-tree::-webkit-scrollbar-track, +div.fragment::-webkit-scrollbar-track, +pre.fragment::-webkit-scrollbar-track, +div.memproto::-webkit-scrollbar-track, +.contents center::-webkit-scrollbar-track, +.contents .center::-webkit-scrollbar-track, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-track, +div.contents .toc::-webkit-scrollbar-track, +.contents .dotgraph::-webkit-scrollbar-track, +.contents .tabs-overview-container::-webkit-scrollbar-track { + background: transparent; +} + +#nav-tree::-webkit-scrollbar-corner { + background-color: var(--side-nav-background); +} + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc { + overflow-x: auto; + overflow-x: overlay; +} + +#nav-tree { + overflow-x: auto; + overflow-y: auto; + overflow-y: overlay; +} + +/* + Scrollbars for Firefox +*/ + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc, +.contents .dotgraph, +.contents .tabs-overview-container { + scrollbar-width: thin; +} + +/* + Optional Dark mode toggle button +*/ + +doxygen-awesome-dark-mode-toggle { + display: inline-block; + margin: 0 0 0 var(--spacing-small); + padding: 0; + width: var(--searchbar-height); + height: var(--searchbar-height); + background: none; + border: none; + border-radius: var(--searchbar-height); + vertical-align: middle; + text-align: center; + line-height: var(--searchbar-height); + font-size: 22px; + display: flex; + align-items: center; + justify-content: center; + user-select: none; + cursor: pointer; +} + +doxygen-awesome-dark-mode-toggle > svg { + transition: transform .1s ease-in-out; +} + +doxygen-awesome-dark-mode-toggle:active > svg { + transform: scale(.5); +} + +doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.03); +} + +html.dark-mode doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.18); +} + +/* + Optional fragment copy button +*/ +.doxygen-awesome-fragment-wrapper { + position: relative; +} + +doxygen-awesome-fragment-copy-button { + opacity: 0; + background: var(--fragment-background); + width: 28px; + height: 28px; + position: absolute; + right: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + top: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + border: 1px solid var(--fragment-foreground); + cursor: pointer; + border-radius: var(--border-radius-small); + display: flex; + justify-content: center; + align-items: center; +} + +.doxygen-awesome-fragment-wrapper:hover doxygen-awesome-fragment-copy-button, doxygen-awesome-fragment-copy-button.success { + opacity: .28; +} + +doxygen-awesome-fragment-copy-button:hover, doxygen-awesome-fragment-copy-button.success { + opacity: 1 !important; +} + +doxygen-awesome-fragment-copy-button:active:not([class~=success]) svg { + transform: scale(.91); +} + +doxygen-awesome-fragment-copy-button svg { + fill: var(--fragment-foreground); + width: 18px; + height: 18px; +} + +doxygen-awesome-fragment-copy-button.success svg { + fill: rgb(14, 168, 14); +} + +doxygen-awesome-fragment-copy-button.success { + border-color: rgb(14, 168, 14); +} + +@media screen and (max-width: 767px) { + .textblock > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .textblock li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + dl dd > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button { + right: 0; + } +} + +/* + Optional paragraph link button +*/ + +a.anchorlink { + font-size: 90%; + margin-left: var(--spacing-small); + color: var(--page-foreground-color) !important; + text-decoration: none; + opacity: .15; + display: none; + transition: opacity .1s ease-in-out, color .1s ease-in-out; +} + +a.anchorlink svg { + fill: var(--page-foreground-color); +} + +h3 a.anchorlink svg, h4 a.anchorlink svg { + margin-bottom: -3px; + margin-top: -4px; +} + +a.anchorlink:hover { + opacity: .45; +} + +h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.anchorlink { + display: inline-block; +} + +/* + Optional tab feature +*/ + +.tabbed { + margin: var(--spacing-medium) auto; +} + +.tabbed ul { + padding-inline-start: 0px; + margin: 0; + padding: var(--spacing-small) 0; + border-bottom: 1px solid var(--separator-color); +} + +.tabbed li { + display: none; +} + +.tabbed li.selected { + display: block; +} + +.tabs-overview-container { + overflow-x: auto; + display: block; + overflow-y: visible; +} + +.tabs-overview { + border-bottom: 1px solid var(--separator-color); + display: flex; + flex-direction: row; +} + +.tabs-overview button.tab-button { + color: var(--page-foreground-color); + margin: 0; + border: none; + background: transparent; + padding: var(--spacing-small) 0; + display: inline-block; + font-size: var(--page-font-size); + cursor: pointer; + box-shadow: 0 1px 0 0 var(--separator-color); + position: relative; +} + +.tabs-overview button.tab-button .tab-title { + float: left; + white-space: nowrap; + padding: var(--spacing-small) var(--spacing-large); + border-radius: var(--border-radius-medium); +} + +.tabs-overview button.tab-button:not(:last-child) .tab-title { + box-shadow: 8px 0 0 -7px var(--separator-color); +} + +.tabs-overview button.tab-button:hover .tab-title { + background: var(--separator-color); + box-shadow: none; +} + +.tabs-overview button.tab-button.active { + color: var(--primary-color); +} + +.tabs-overview button.tab-button.active::after { + content: ''; + display: block; + position: absolute; + left: 0px; + bottom: 0; + right: 0px; + height: 3px; + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + background-color: var(--primary-color); +} diff --git a/Documents/Doxygen/html/doxygen.css b/Documents/Doxygen/html/doxygen.css new file mode 100644 index 0000000..ffbff02 --- /dev/null +++ b/Documents/Doxygen/html/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/Documents/Doxygen/html/doxygen.svg b/Documents/Doxygen/html/doxygen.svg new file mode 100644 index 0000000..d42dad5 --- /dev/null +++ b/Documents/Doxygen/html/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Documents/Doxygen/html/dynsections.js b/Documents/Doxygen/html/dynsections.js new file mode 100644 index 0000000..3174bd7 --- /dev/null +++ b/Documents/Doxygen/html/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +BJ-Keyer: encoder.c-Dateireferenz + + + + + + + + + + + + + + +

+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
encoder.c-Dateireferenz
+
+
+ +

Drehencoder Library. +Mehr ...

+
#include <avr/io.h>
+#include <avr/interrupt.h>
+#include "encoder.h"
+
+Include-Abhängigkeitsdiagramm für encoder.c:
+
+
+ + + + + + +
+
+ + + +

+Typdefinitionen

+typedef enum EButtonState tEButtonState
 
+ + + +

+Aufzählungen

enum  EButtonState { ButtonState_Unpressed +, ButtonState_Pressed +, ButtonState_Hold +, ButtonState_Released + }
 
+ + + + + + + + + + + + + + + + +

+Funktionen

+void EncoderInit (void)
 
void EncoderPolling (void)
 EncoderPolling. Mehr ...
 
+int8_t EncodeRead (void)
 
+int8_t EncoderRead (char Ueberlauf)
 
+void EncoderWrite (int8_t EncoderPos)
 
+void EncoderMinMax (int8_t EncoderMin, int8_t EncoderMax)
 
+tEButtonPressedState EncoderGetButtonState (void)
 
+ + + + + + + + + + + + + + + + + + + + + +

+Variablen

+int8_t DrehgeberPosition
 
+int8_t DrehgeberMax = 127
 
+int8_t DrehgeberMin = -127
 
+volatile int16_t iButtonPressedCounter = 0
 
+volatile int16_t iButtonDebounceCycles = 0
 
+volatile int16_t iButtonPressedLongCycles = 0
 
+volatile int8_t enc_delta
 
+static int8_t last
 
+volatile tEButtonState buttonState = ButtonState_Unpressed
 
+volatile tEButtonPressedState buttonPressed = ButtonPressed_Unpressed
 
+

Ausführliche Beschreibung

+

Drehencoder Library.

+
Datum
2014-12-04
+
Autor
Frank Klee
    Basisroutinen zum Abfragen eines Drehencoders mittels Polling.
+    Quelle: https://www.mikrocontroller.net/articles/Drehgeber
+
+
+Tom, DL7BJ
+
Datum
2023-03-23
+

Formatierungen und Umbenennungen der Funktionen

+

Dokumentation der Funktionen

+ +

◆ EncoderPolling()

+ +
+
+ + + + + + + + +
void EncoderPolling (void )
+
+ +

EncoderPolling.

+
    Abfrage des Drehencoders und des Tasters
+    Wird vom Timer 0 aufgerufen
+
Parameter
+ + +
none
+
+
+
Rückgabe
none
+ +
+
+
+
+ + + + diff --git a/Documents/Doxygen/html/encoder_8c.js b/Documents/Doxygen/html/encoder_8c.js new file mode 100644 index 0000000..98904c7 --- /dev/null +++ b/Documents/Doxygen/html/encoder_8c.js @@ -0,0 +1,27 @@ +var encoder_8c = +[ + [ "tEButtonState", "encoder_8c.html#aedeed12448cdc285bc8c21763ae9f1a0", null ], + [ "EButtonState", "encoder_8c.html#a7e7392f1e24ef55450099d5e7d095c4b", [ + [ "ButtonState_Unpressed", "encoder_8c.html#a7e7392f1e24ef55450099d5e7d095c4baa6d3bd33730cea4d3d97c7bb97611d0f", null ], + [ "ButtonState_Pressed", "encoder_8c.html#a7e7392f1e24ef55450099d5e7d095c4bab17e4582ae92a602546a5ed70116b344", null ], + [ "ButtonState_Hold", "encoder_8c.html#a7e7392f1e24ef55450099d5e7d095c4ba1ed28d4e307eb4999f1deaf3fa07f4d9", null ], + [ "ButtonState_Released", "encoder_8c.html#a7e7392f1e24ef55450099d5e7d095c4ba19d35c76d8d53f420fd3106123d67a16", null ] + ] ], + [ "EncodeRead", "encoder_8c.html#aaf6a92358a883c87b032984732655084", null ], + [ "EncoderGetButtonState", "encoder_8c.html#a2de57e0e3c5f3e0ab176c11363a58bf1", null ], + [ "EncoderInit", "encoder_8c.html#a80ec2c177aa9c2636f797ca881381827", null ], + [ "EncoderMinMax", "encoder_8c.html#ab5afede50bbce8aae40f3d02be64a374", null ], + [ "EncoderPolling", "encoder_8c.html#a660e5b11dce82f5b307f628def81d188", null ], + [ "EncoderRead", "encoder_8c.html#a9ec6df4b13c9134f1c61546b718cd563", null ], + [ "EncoderWrite", "encoder_8c.html#ac9e955efd05fd5f6579bb5e179b506c7", null ], + [ "buttonPressed", "encoder_8c.html#a32833c1bd4da805038b020ba58750218", null ], + [ "buttonState", "encoder_8c.html#a9031f1bbc45388b7f4d7a6d534114e64", null ], + [ "DrehgeberMax", "encoder_8c.html#aa7c6a2827b1cc4fcb2c5ff33d8d05300", null ], + [ "DrehgeberMin", "encoder_8c.html#af734dbab527768cb6207a4a5bd90bd1d", null ], + [ "DrehgeberPosition", "encoder_8c.html#abdbce2c910e9ca583dbbf74a99d50d72", null ], + [ "enc_delta", "encoder_8c.html#a3f5ba1853e96736d1ffcc756e9138849", null ], + [ "iButtonDebounceCycles", "encoder_8c.html#a93ec6852319d923e71003f50ad073327", null ], + [ "iButtonPressedCounter", "encoder_8c.html#a25f7e7becdadc23b1f28f301dbf0325d", null ], + [ "iButtonPressedLongCycles", "encoder_8c.html#aa12d33a8833ab123443cfe09d8c385e8", null ], + [ "last", "encoder_8c.html#a904a7151d59a45adae73c4e0a68b5a1f", null ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/encoder_8c__incl.map b/Documents/Doxygen/html/encoder_8c__incl.map new file mode 100644 index 0000000..5e4a15d --- /dev/null +++ b/Documents/Doxygen/html/encoder_8c__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/Documents/Doxygen/html/encoder_8c__incl.md5 b/Documents/Doxygen/html/encoder_8c__incl.md5 new file mode 100644 index 0000000..5d8770d --- /dev/null +++ b/Documents/Doxygen/html/encoder_8c__incl.md5 @@ -0,0 +1 @@ +6c6be8a93a81a4b136d2264a89861b9e \ No newline at end of file diff --git a/Documents/Doxygen/html/encoder_8c__incl.png b/Documents/Doxygen/html/encoder_8c__incl.png new file mode 100644 index 0000000..9a403b6 Binary files /dev/null and b/Documents/Doxygen/html/encoder_8c__incl.png differ diff --git a/Documents/Doxygen/html/encoder_8h_source.html b/Documents/Doxygen/html/encoder_8h_source.html new file mode 100644 index 0000000..c66a9c1 --- /dev/null +++ b/Documents/Doxygen/html/encoder_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + +BJ-Keyer: encoder.h Quellcode + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
encoder.h
+
+
+
1 #ifndef ENCODER_H_
+
2 #define ENCODER_H_
+
3 // Art des Drehencoders definieren
+
4 // #define SingleStep
+
5 // #define TwoStep
+
6 #define TwoStep
+
7 
+
8 #define ENC_A_PORT PORTB
+
9 #define ENC_A_PIN PB1
+
10 #define ENC_B_PORT PORTB
+
11 #define ENC_B_PIN PB0
+
12 #define ENC_T_PORT PORTB
+
13 #define ENC_T_PIN PB2
+
15 #define DDR(x) (*(&x-1))
+
16 #define Port(x) (*(&x))
+
17 #define PIN(x) (*(&x-2))
+
18 
+
19 #define PHASE_A PIN(ENC_A_PORT) & (1<<ENC_A_PIN)
+
20 #define PHASE_B PIN(ENC_B_PORT) & (1<<ENC_B_PIN)
+
21 #define BUTTONPRESSED (!(PIN(ENC_T_PORT) & (1<<ENC_T_PIN)))
+
22 
+
32 #define ENCODERTIMER 5
+
33 #define BUTTON_DEBOUNCETIME_MS 30/ENCODERTIMER
+
34 #define BUTTON_PRESSEDLONG_MS 250/ENCODERTIMER
+
35 
+
36 typedef enum EButtonPressedState
+
37 {
+
38  ButtonPressed_Unpressed,
+
39  ButtonPressed_Short,
+
40  ButtonPressed_Long
+
41 }tEButtonPressedState;
+
42 
+
43 // Initialisiert den Encoder und aktiviert den Interrupt + Timer
+
44 void EncoderInit( void );
+
45 // Liest die Position des Encoders aus
+
46 // Wenn Ueberlauf=1 dann zhlt der Encoder nach Max
+
47 // wieder von Min und umgekehrt
+
48 int8_t EncoderRead(char Ueberlauf);
+
49 // Ruft den Status des Encoder-Knopfes
+
50 tEButtonPressedState EncoderGetButtonState(void);
+
51 // Setzt die aktuelle Drehencoderposition
+
52 void EncoderWrite(int8_t EncoderPos);
+
53 // Setzt Min- und Max-Werte fr die Drehgeberposition
+
54 void EncoderMinMax(int8_t EncoderMin,int8_t EncoderMax);
+
55 void EncoderPolling(void);
+
56 #endif /* ENCODER_H_ */
+
void EncoderPolling(void)
EncoderPolling.
Definition: encoder.c:61
+
volatile int8_t EncoderPos
Encoderposition für WpM/BpM.
Definition: globals.h:188
+
+
+ + + + diff --git a/Documents/Doxygen/html/files.html b/Documents/Doxygen/html/files.html new file mode 100644 index 0000000..8edd350 --- /dev/null +++ b/Documents/Doxygen/html/files.html @@ -0,0 +1,115 @@ + + + + + + + +BJ-Keyer: Auflistung der Dateien + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Auflistung der Dateien
+
+
+
Hier folgt die Aufzählung aller dokumentierten Dateien mit einer Kurzbeschreibung:
+ + + + + + + + + + + +
 controls.cDisplay und Bedienelemente
 controls.hHeaderdatei für controls.c
 encoder.cDrehencoder Library
 encoder.h
 functions.cDiverse Funktionen
 functions.hHeaderdatei für functions.c
 globals.hGlobale Variablen, Definitionen und Prototypen
 main.hBJ-Keyer
 vt100.cVT100 Terminalausgabe
 vt100.hVT100 Terminal
+
+
+
+ + + + diff --git a/Documents/Doxygen/html/files_dup.js b/Documents/Doxygen/html/files_dup.js new file mode 100644 index 0000000..1d9f99d --- /dev/null +++ b/Documents/Doxygen/html/files_dup.js @@ -0,0 +1,13 @@ +var files_dup = +[ + [ "controls.c", "controls_8c.html", "controls_8c" ], + [ "controls.h", "controls_8h.html", "controls_8h" ], + [ "encoder.c", "encoder_8c.html", "encoder_8c" ], + [ "encoder.h", "encoder_8h_source.html", null ], + [ "functions.c", "functions_8c.html", "functions_8c" ], + [ "functions.h", "functions_8h.html", "functions_8h" ], + [ "globals.h", "globals_8h.html", "globals_8h" ], + [ "main.h", "main_8h.html", "main_8h" ], + [ "vt100.c", "vt100_8c.html", "vt100_8c" ], + [ "vt100.h", "vt100_8h.html", "vt100_8h" ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/folderclosed.png b/Documents/Doxygen/html/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/Documents/Doxygen/html/folderclosed.png differ diff --git a/Documents/Doxygen/html/folderopen.png b/Documents/Doxygen/html/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/Documents/Doxygen/html/folderopen.png differ diff --git a/Documents/Doxygen/html/functions.html b/Documents/Doxygen/html/functions.html new file mode 100644 index 0000000..6367056 --- /dev/null +++ b/Documents/Doxygen/html/functions.html @@ -0,0 +1,263 @@ + + + + + + + +BJ-Keyer: Datenstruktur-Elemente + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Hier folgt die Aufzählung aller dokumentierten Strukturen und Varianten mit Verweisen auf die Dokumentation zu jedem Element:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- k -

+ + +

- l -

    +
  • LastSymbolWasDit +: State +
  • +
+ + +

- m -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- w -

+
+
+ + + + diff --git a/Documents/Doxygen/html/functions_8c.html b/Documents/Doxygen/html/functions_8c.html new file mode 100644 index 0000000..f2d6a12 --- /dev/null +++ b/Documents/Doxygen/html/functions_8c.html @@ -0,0 +1,1661 @@ + + + + + + + +BJ-Keyer: functions.c-Dateireferenz + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
functions.c-Dateireferenz
+
+
+ +

Diverse Funktionen. +Mehr ...

+
#include "functions.h"
+
+Include-Abhängigkeitsdiagramm für functions.c:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Funktionen

void DelayMilliSeconds (uint16_t ms)
 Zeitschleife von 1-65535 Millisekunden. Mehr ...
 
uint16_t GetMilliSeconds (void)
 Zählerwert für Zeitschleifen auslesen. Mehr ...
 
void ResetMilliSeconds (void)
 Setzt den Millisekundenzähler für Zeitschleifen auf 0. Mehr ...
 
void IntEnable (void)
 Register wieder herstellen und Interrupts erlauben. Mehr ...
 
void IntDisable (void)
 Register sichern und Interrupts verbieten. Mehr ...
 
void WriteEEprom (void)
 Akt. Einstellungen in EEPROM schreiben. Mehr ...
 
void ReadEEpromWpM (void)
 Gespeicherte Einstellung für die Geschwindigkeit aus EEprom lesen. Mehr ...
 
void WriteEEpromWpM (void)
 Akt. Einstellung für die Geschwindigkeit in EEprom schreiben. Mehr ...
 
void SetEEprom (void)
 Standardeinstellungen (bei neuem Controller) Mehr ...
 
void ReadEEprom (void)
 Einstellungen aus dem EEprom lesen. Mehr ...
 
void SerialWriteChar (unsigned char data)
 Ein Zeichen über serielle Schnittstelle ausgeben. Mehr ...
 
+void SerialWriteString (char *s)
 
void SidetoneOn (void)
 Mithörton einschalten. Mehr ...
 
void SidetoneOff (void)
 Mithörton ausschalten. Mehr ...
 
void SidetoneDisable (void)
 Audioverstärker abschalten. Mehr ...
 
void SidetoneEnable (void)
 Audioverstärker einschalten. Mehr ...
 
void TXKey (uint8_t State)
 Gibt ein Symbol aus. Mehr ...
 
void CheckButtons (void)
 Fragt die Taster ab und löst entsprechende Funktion aus. Mehr ...
 
void CheckStraightKey (void)
 Fragt die Handtasteneingänge ab und gibt das entsprechende Symbol aus. Bei der Handtaste findet über einen Timer eine Entprellung statt. Mehr ...
 
void CheckPaddles (void)
 Diese Funktion prüft, ob ein Paddle betätigt wurde. Mehr ...
 
void CheckDitPaddle (void)
 Prüfen, ob das Punkt Paddle betätigt wurde. Mehr ...
 
void CheckDahPaddle (void)
 Prüfen, ob das Strich Paddle betätigt wurde. Mehr ...
 
void SetRatio (void)
 Berechnung der Zeitdauer für Punkt und Strich. Mehr ...
 
+void SetWeight (void)
 
void SendSymbol (uint8_t Dit)
 Symbol senden. Mehr ...
 
void SendDit (void)
 Gibt einen Punkt aus. Mehr ...
 
void SendDah (void)
 Gibt einen Strich aus. Mehr ...
 
void SendIambic (void)
 Wenn beide Paddle betätigt sind, wird alternierend ein Punkt und Strich ausgegeben. Mehr ...
 
void SetFrequency (uint16_t f)
 Verändert die Frequenz des Mithörtons. Mehr ...
 
void Tone (uint16_t f, uint8_t duration)
 Ausgabe eines Tons mit Dauer und Frequenz. Mehr ...
 
void Boop (void)
 Boop Ton ausgeben. Mehr ...
 
void Beep (void)
 Beep Ton ausgeben. Mehr ...
 
void BeepBoop (void)
 BeepBoop Doppelton ausgeben. Mehr ...
 
void SendString (char *s)
 Gibt eine Zeichenkette als Morsecode aus. Mehr ...
 
void SendChar (unsigned char c)
 Gibt ein Zeichen aus. Mehr ...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variablen

+uint8_t Dummy
 
uint8_t ee_Dummy = 0x55
 Dummy for Address 0. Mehr ...
 
uint8_t ee_Trx1 = 0
 TRX 1. Mehr ...
 
uint8_t ee_Trx2 = 0
 TRX 2. Mehr ...
 
uint8_t ee_KeyerMode = 1
 Iambic A, Iambic B oder Ultimatic. Mehr ...
 
uint8_t ee_SidetoneEnabled = 1
 Mithörton eingeschaltet. Mehr ...
 
uint8_t ee_WpMBpM = 0
 WpM oder BpM Anzeige. Mehr ...
 
uint8_t ee_Reverse = 0
 linkes/rechtes Paddle vertauschen Mehr ...
 
uint8_t ee_MemButtonMode = 0
 Funktion des ersten Tasters (MEM5) Mehr ...
 
uint8_t ee_Ratio = 30
 Punkt/Strich Verhältnis 1:3. Mehr ...
 
uint8_t ee_Weight = 50
 Punkt/Strich Gewichtung. Mehr ...
 
uint8_t ee_Memory = 0
 Punkt/Strich Speicher. Mehr ...
 
uint16_t ee_SidetoneFreq = 600
 Frequenz des Mithörtons. Mehr ...
 
uint8_t ee_WpM = 12
 Geschwindigkeit WpM. Mehr ...
 
uint8_t ee_RiseTime = 5
 Anstiegszeit Sinuston. Mehr ...
 
uint8_t ee_RiseTimeCounter = 5
 Anzahl Sinusschwingungen für den Anstieg. Mehr ...
 
uint8_t ee_DebounceTime = 6
 Entprellzeit für Straight Key Eingang. Mehr ...
 
+

Ausführliche Beschreibung

+

Diverse Funktionen.

+

Dokumentation der Funktionen

+ +

◆ Beep()

+ +
+
+ + + + + + + + +
void Beep (void )
+
+ +

Beep Ton ausgeben.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ BeepBoop()

+ +
+
+ + + + + + + + +
void BeepBoop (void )
+
+ +

BeepBoop Doppelton ausgeben.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ Boop()

+ +
+
+ + + + + + + + +
void Boop (void )
+
+ +

Boop Ton ausgeben.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ CheckButtons()

+ +
+
+ + + + + + + + +
void CheckButtons (void )
+
+ +

Fragt die Taster ab und löst entsprechende Funktion aus.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ CheckDahPaddle()

+ +
+
+ + + + + + + + +
void CheckDahPaddle (void )
+
+ +

Prüfen, ob das Strich Paddle betätigt wurde.

+
    Ist dies der Fall, wird das Statusbit gesetzt. Wurde in den 
+    Einstellungen der Reverse Mode aktiviert, werden in der 
+    Abfrage die Paddle vertauscht.
+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ CheckDitPaddle()

+ +
+
+ + + + + + + + +
void CheckDitPaddle (void )
+
+ +

Prüfen, ob das Punkt Paddle betätigt wurde.

+
    Ist dies der Fall, wird das Statusbit gesetzt.Wurde in den 
+    Einstellungen der Reverse Mode aktiviert, werden in der 
+    Abfrage die Paddle vertauscht.
+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ CheckPaddles()

+ +
+
+ + + + + + + + +
void CheckPaddles (void )
+
+ +

Diese Funktion prüft, ob ein Paddle betätigt wurde.

+
    Wenn dies der Fall war, ist das jeweilige Statusbit gesetzt
+    und die Funktion für die Ausgabe des entsprechenden Symbols
+    wird aufgerufen.
+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ CheckStraightKey()

+ +
+
+ + + + + + + + +
void CheckStraightKey (void )
+
+ +

Fragt die Handtasteneingänge ab und gibt das entsprechende Symbol aus. Bei der Handtaste findet über einen Timer eine Entprellung statt.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ DelayMilliSeconds()

+ +
+
+ + + + + + + + +
void DelayMilliSeconds (uint16_t ms)
+
+ +

Zeitschleife von 1-65535 Millisekunden.

+
Parameter
+ + +
msAnzahl Millisekunden
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ GetMilliSeconds()

+ +
+
+ + + + + + + + +
uint16_t GetMilliSeconds (void )
+
+ +

Zählerwert für Zeitschleifen auslesen.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
Millisekunden
+
+
+ +
+
+ +

◆ IntDisable()

+ +
+
+ + + + + + + + +
void IntDisable (void )
+
+ +

Register sichern und Interrupts verbieten.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ IntEnable()

+ +
+
+ + + + + + + + +
void IntEnable (void )
+
+ +

Register wieder herstellen und Interrupts erlauben.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ ReadEEprom()

+ +
+
+ + + + + + + + +
void ReadEEprom (void )
+
+ +

Einstellungen aus dem EEprom lesen.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ ReadEEpromWpM()

+ +
+
+ + + + + + + + +
void ReadEEpromWpM (void )
+
+ +

Gespeicherte Einstellung für die Geschwindigkeit aus EEprom lesen.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ ResetMilliSeconds()

+ +
+
+ + + + + + + + +
void ResetMilliSeconds (void )
+
+ +

Setzt den Millisekundenzähler für Zeitschleifen auf 0.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SendChar()

+ +
+
+ + + + + + + + +
void SendChar (unsigned char c)
+
+ +

Gibt ein Zeichen aus.

+
    Mit dieser Symboltabelle werden die Zeichen
+    der Textspeicher gesendet
+
Parameter
+ + +
cZeichen, das Ausgegeben wird
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SendDah()

+ +
+
+ + + + + + + + +
void SendDah (void )
+
+ +

Gibt einen Strich aus.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SendDit()

+ +
+
+ + + + + + + + +
void SendDit (void )
+
+ +

Gibt einen Punkt aus.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SendIambic()

+ +
+
+ + + + + + + + +
void SendIambic (void )
+
+ +

Wenn beide Paddle betätigt sind, wird alternierend ein Punkt und Strich ausgegeben.

+

Beim Iambic B Mode und Ultimatic Mode wird gegebenenfalls noch ein gegensätzliches Zeichen des zuletzt betätigten Paddle angefügt. Erläuterung und Timing siehe Dokumentation.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SendString()

+ +
+
+ + + + + + + + +
void SendString (char * s)
+
+ +

Gibt eine Zeichenkette als Morsecode aus.

+
    Wenn die Zeichenkette ein Leerzeichen enthält, wird dieses als Pause 
+    zwischen zwei Wörtern interpretiert und eine Pause der Länge von 7
+    Dits (in Abhängigkeit der eingestellten Geschwindigkeit) wird eingefügt
+    Zwischen einzelnen Zeichen wird eine Pause von 3 Dits eingefügt
+
Noch zu erledigen:
Für die Zeichenausgabe der Textspeicher könnte hier noch die Beachtung des eingestellten Ratios und der Gewichtung zugefügt werden.
+
Parameter
+ + +
sZeiger auf die Zeichenkette
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SendSymbol()

+ +
+
+ + + + + + + + +
void SendSymbol (uint8_t Dit)
+
+ +

Symbol senden.

+
Parameter
+ + +
Dit= 1, wenn Symbol ein Punkt ist
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SerialWriteChar()

+ +
+
+ + + + + + + + +
void SerialWriteChar (unsigned char data)
+
+ +

Ein Zeichen über serielle Schnittstelle ausgeben.

+
Parameter
+ + +
dataZeichen, das seriell ausgegeben wird
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SetEEprom()

+ +
+
+ + + + + + + + +
void SetEEprom (void )
+
+ +

Standardeinstellungen (bei neuem Controller)

+
    Wird ein neuer Controller verwendet, gibt es keine 
+    Einstellungswerte im EEprom. Diese Funktion schreibt
+    die initialen Werte in das EEprom. Wird sehr selten
+    benötigt ;-)
+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SetFrequency()

+ +
+
+ + + + + + + + +
void SetFrequency (uint16_t f)
+
+ +

Verändert die Frequenz des Mithörtons.

+
    Durch die Anpassung des Timers 1 für das 
+    Laden der Werte der Sinuskurve wird die 
+    Tonhöhe des Mithörtons verändert.
+
Parameter
+ + +
fFrequenz des Mithörtons in Hz
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SetRatio()

+ +
+
+ + + + + + + + +
void SetRatio (void )
+
+ +

Berechnung der Zeitdauer für Punkt und Strich.

+
    Die Länge eines Symbols ist abhängig von der
+    eingestellten Geschwindigkeit. Intern wird immer
+    mit Wörtern pro Minute gerechnet. Das normale
+    Punkt/Strich Verhältnis ist 1:3. Dies kann durch
+    den Parameter Ratio in den Einstellungen verändert
+    werden.
+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SidetoneDisable()

+ +
+
+ + + + + + + + +
void SidetoneDisable (void )
+
+ +

Audioverstärker abschalten.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SidetoneEnable()

+ +
+
+ + + + + + + + +
void SidetoneEnable (void )
+
+ +

Audioverstärker einschalten.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SidetoneOff()

+ +
+
+ + + + + + + + +
void SidetoneOff (void )
+
+ +

Mithörton ausschalten.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SidetoneOn()

+ +
+
+ + + + + + + + +
void SidetoneOn (void )
+
+ +

Mithörton einschalten.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ Tone()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Tone (uint16_t f,
uint8_t duration 
)
+
+ +

Ausgabe eines Tons mit Dauer und Frequenz.

+
Parameter
+ + + +
fFrequenz des Tons
durationDauer des Tons
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ TXKey()

+ +
+
+ + + + + + + + +
void TXKey (uint8_t State)
+
+ +

Gibt ein Symbol aus.

+
    Je nach Einstellung wird ein oder beide Transceiver
+    getastet oder nur der Mithörton ausgegeben.
+
Parameter
+ + +
StateBitfeld für Transceiver und Tonausgabe
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ WriteEEprom()

+ +
+
+ + + + + + + + +
void WriteEEprom (void )
+
+ +

Akt. Einstellungen in EEPROM schreiben.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ WriteEEpromWpM()

+ +
+
+ + + + + + + + +
void WriteEEpromWpM (void )
+
+ +

Akt. Einstellung für die Geschwindigkeit in EEprom schreiben.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+

Variablen-Dokumentation

+ +

◆ ee_DebounceTime

+ +
+
+ + + + +
uint8_t ee_DebounceTime = 6
+
+ +

Entprellzeit für Straight Key Eingang.

+ +
+
+ +

◆ ee_Dummy

+ +
+
+ + + + +
uint8_t ee_Dummy = 0x55
+
+ +

Dummy for Address 0.

+ +
+
+ +

◆ ee_KeyerMode

+ +
+
+ + + + +
uint8_t ee_KeyerMode = 1
+
+ +

Iambic A, Iambic B oder Ultimatic.

+ +
+
+ +

◆ ee_MemButtonMode

+ +
+
+ + + + +
uint8_t ee_MemButtonMode = 0
+
+ +

Funktion des ersten Tasters (MEM5)

+ +
+
+ +

◆ ee_Memory

+ +
+
+ + + + +
uint8_t ee_Memory = 0
+
+ +

Punkt/Strich Speicher.

+ +
+
+ +

◆ ee_Ratio

+ +
+
+ + + + +
uint8_t ee_Ratio = 30
+
+ +

Punkt/Strich Verhältnis 1:3.

+ +
+
+ +

◆ ee_Reverse

+ +
+
+ + + + +
uint8_t ee_Reverse = 0
+
+ +

linkes/rechtes Paddle vertauschen

+ +
+
+ +

◆ ee_RiseTime

+ +
+
+ + + + +
uint8_t ee_RiseTime = 5
+
+ +

Anstiegszeit Sinuston.

+ +
+
+ +

◆ ee_RiseTimeCounter

+ +
+
+ + + + +
uint8_t ee_RiseTimeCounter = 5
+
+ +

Anzahl Sinusschwingungen für den Anstieg.

+ +
+
+ +

◆ ee_SidetoneEnabled

+ +
+
+ + + + +
uint8_t ee_SidetoneEnabled = 1
+
+ +

Mithörton eingeschaltet.

+ +
+
+ +

◆ ee_SidetoneFreq

+ +
+
+ + + + +
uint16_t ee_SidetoneFreq = 600
+
+ +

Frequenz des Mithörtons.

+ +
+
+ +

◆ ee_Trx1

+ +
+
+ + + + +
uint8_t ee_Trx1 = 0
+
+ +

TRX 1.

+ +
+
+ +

◆ ee_Trx2

+ +
+
+ + + + +
uint8_t ee_Trx2 = 0
+
+ +

TRX 2.

+ +
+
+ +

◆ ee_Weight

+ +
+
+ + + + +
uint8_t ee_Weight = 50
+
+ +

Punkt/Strich Gewichtung.

+ +
+
+ +

◆ ee_WpM

+ +
+
+ + + + +
uint8_t ee_WpM = 12
+
+ +

Geschwindigkeit WpM.

+ +
+
+ +

◆ ee_WpMBpM

+ +
+
+ + + + +
uint8_t ee_WpMBpM = 0
+
+ +

WpM oder BpM Anzeige.

+ +
+
+
+
+ + + + diff --git a/Documents/Doxygen/html/functions_8c.js b/Documents/Doxygen/html/functions_8c.js new file mode 100644 index 0000000..55208de --- /dev/null +++ b/Documents/Doxygen/html/functions_8c.js @@ -0,0 +1,55 @@ +var functions_8c = +[ + [ "Beep", "functions_8c.html#a2f616a93763b4bc437c4311d653c0491", null ], + [ "BeepBoop", "functions_8c.html#a72913eefa74c0c044d815a0b759577fa", null ], + [ "Boop", "functions_8c.html#a0366eaeb4aab61562dcd5b24994d0103", null ], + [ "CheckButtons", "functions_8c.html#a4010a7257caeca55f68c98ee199d3ea2", null ], + [ "CheckDahPaddle", "functions_8c.html#ac0bccd022514697217eaf063b1b2c0fa", null ], + [ "CheckDitPaddle", "functions_8c.html#a7783dcd27ef486bce541c85e10131394", null ], + [ "CheckPaddles", "functions_8c.html#a9bd61bc3c9e38f6b325e4ba3f96d9472", null ], + [ "CheckStraightKey", "functions_8c.html#a68bed2cd125260e9c6eb7f6f8e0c9106", null ], + [ "DelayMilliSeconds", "functions_8c.html#ada3125b546b3115e7afc2e51bc7db894", null ], + [ "GetMilliSeconds", "functions_8c.html#a682e380769f82867a41c13d632bb3cca", null ], + [ "IntDisable", "functions_8c.html#ae2f4a274ba95c3e94edd58ce6f129de4", null ], + [ "IntEnable", "functions_8c.html#ab321d23dfab578b6a40f3c5e8894c280", null ], + [ "ReadEEprom", "functions_8c.html#adf7f3486f66ae3386f330a5172dfdf52", null ], + [ "ReadEEpromWpM", "functions_8c.html#a3435bb0409b2c91ab253f4bd4cdc03e1", null ], + [ "ResetMilliSeconds", "functions_8c.html#a318f7eb176f7797e0166cbd652855a3c", null ], + [ "SendChar", "functions_8c.html#a49e16203823a4921910161bd2610987a", null ], + [ "SendDah", "functions_8c.html#a3dfd0f785e0377a124c423ac5ef8ddde", null ], + [ "SendDit", "functions_8c.html#a22d2dd23cb17e53e75c7d6366d9205d6", null ], + [ "SendIambic", "functions_8c.html#a683e588b64df83d67f1342ed5eeb099b", null ], + [ "SendString", "functions_8c.html#a33edcf2aa23f97390659434ead6ef593", null ], + [ "SendSymbol", "functions_8c.html#a3e6e9a204e6bac15fdc0fe500390517c", null ], + [ "SerialWriteChar", "functions_8c.html#a8684d17e55772fc84a10c9e778705eda", null ], + [ "SerialWriteString", "functions_8c.html#ac2bac61999066f61501cd244a237192e", null ], + [ "SetEEprom", "functions_8c.html#a4e592b116ccf5c55bbb5979bb7193981", null ], + [ "SetFrequency", "functions_8c.html#af3375f394993997701d75ee441810edc", null ], + [ "SetRatio", "functions_8c.html#aa0e063cf32b840a3ed51ae9aa677e2be", null ], + [ "SetWeight", "functions_8c.html#a7a31f60576d112eca1abddf447df8248", null ], + [ "SidetoneDisable", "functions_8c.html#ae8011166e9324f9f3c6948249eb15fd1", null ], + [ "SidetoneEnable", "functions_8c.html#a60f2f041b0803584ba5fc2e0a373ed50", null ], + [ "SidetoneOff", "functions_8c.html#ad82537f7ea58b4eb375952ce52615c4d", null ], + [ "SidetoneOn", "functions_8c.html#aa037229dc16e974a22eedcd6990a7b9d", null ], + [ "Tone", "functions_8c.html#a859cf4a556750b8aa340761627fb6c42", null ], + [ "TXKey", "functions_8c.html#aafcd99a76b601d8b43b6827d414ccddb", null ], + [ "WriteEEprom", "functions_8c.html#a586bc00ad3164def7ec76ac9bda4f1bc", null ], + [ "WriteEEpromWpM", "functions_8c.html#a838ffc3ce94fc8c85429e5297a185022", null ], + [ "Dummy", "functions_8c.html#a763e48e059d99b10646ca16a7e177df8", null ], + [ "ee_DebounceTime", "functions_8c.html#af46a7ac73709b59ac331e84016c6600f", null ], + [ "ee_Dummy", "functions_8c.html#a42f0b8f91ce6b2a23dd6ff8672d13b95", null ], + [ "ee_KeyerMode", "functions_8c.html#a169f1099862f2dc874d344eb240fd8c2", null ], + [ "ee_MemButtonMode", "functions_8c.html#a3f1e9ffbb5d98febdd58a4fa82b01f30", null ], + [ "ee_Memory", "functions_8c.html#a5f69205a6897625598ead5ab6a740fc7", null ], + [ "ee_Ratio", "functions_8c.html#a8814741a33f0a4f2e14eee14d8c00dad", null ], + [ "ee_Reverse", "functions_8c.html#ad5a1c7f3fe4cc3af1873519f70586866", null ], + [ "ee_RiseTime", "functions_8c.html#acde6a28c5a5747443f823ff09dce682b", null ], + [ "ee_RiseTimeCounter", "functions_8c.html#a138d8a4a73593b01e9ffdfebc7134c89", null ], + [ "ee_SidetoneEnabled", "functions_8c.html#a8f9b2a72d7b1d5f1c28673c36a51a33a", null ], + [ "ee_SidetoneFreq", "functions_8c.html#a025c31b4a3c9adca80df2782808579a7", null ], + [ "ee_Trx1", "functions_8c.html#a1c70858b9aea8006017b70d201604a96", null ], + [ "ee_Trx2", "functions_8c.html#a6f6cc3866f25698f6f9185e422ce7b8c", null ], + [ "ee_Weight", "functions_8c.html#ac8f8c751bbe43f711df2e1ba13f79994", null ], + [ "ee_WpM", "functions_8c.html#af636ee63fad94f56f61f334e0c2e46b0", null ], + [ "ee_WpMBpM", "functions_8c.html#a7c955b77d04539b88678e94d72deeef0", null ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/functions_8c__incl.map b/Documents/Doxygen/html/functions_8c__incl.map new file mode 100644 index 0000000..52b05d3 --- /dev/null +++ b/Documents/Doxygen/html/functions_8c__incl.map @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Documents/Doxygen/html/functions_8c__incl.md5 b/Documents/Doxygen/html/functions_8c__incl.md5 new file mode 100644 index 0000000..fefbc93 --- /dev/null +++ b/Documents/Doxygen/html/functions_8c__incl.md5 @@ -0,0 +1 @@ +8e22ff09b83a0c4366adca0a3d7eca12 \ No newline at end of file diff --git a/Documents/Doxygen/html/functions_8c__incl.png b/Documents/Doxygen/html/functions_8c__incl.png new file mode 100644 index 0000000..f27a297 Binary files /dev/null and b/Documents/Doxygen/html/functions_8c__incl.png differ diff --git a/Documents/Doxygen/html/functions_8h.html b/Documents/Doxygen/html/functions_8h.html new file mode 100644 index 0000000..4703b58 --- /dev/null +++ b/Documents/Doxygen/html/functions_8h.html @@ -0,0 +1,1035 @@ + + + + + + + +BJ-Keyer: functions.h-Dateireferenz + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
functions.h-Dateireferenz
+
+
+ +

Headerdatei für functions.c. +Mehr ...

+
#include "main.h"
+
+Include-Abhängigkeitsdiagramm für functions.h:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:
+
+
+ + + + + + + +
+
+

gehe zum Quellcode dieser Datei

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Funktionen

+void SymbolLoop (uint8_t Len)
 
void CheckPaddles (void)
 Diese Funktion prüft, ob ein Paddle betätigt wurde. Mehr ...
 
void SetRatio (void)
 Berechnung der Zeitdauer für Punkt und Strich. Mehr ...
 
+void SetWeight (void)
 
void SendDit (void)
 Gibt einen Punkt aus. Mehr ...
 
void SendDah (void)
 Gibt einen Strich aus. Mehr ...
 
void SendIambic (void)
 Wenn beide Paddle betätigt sind, wird alternierend ein Punkt und Strich ausgegeben. Mehr ...
 
void SendChar (unsigned char c)
 Gibt ein Zeichen aus. Mehr ...
 
void SendString (char *s)
 Gibt eine Zeichenkette als Morsecode aus. Mehr ...
 
+void SideToneOn (void)
 
+void SideToneOff (void)
 
void Tone (uint16_t f, uint8_t duration)
 Ausgabe eines Tons mit Dauer und Frequenz. Mehr ...
 
void Boop (void)
 Boop Ton ausgeben. Mehr ...
 
void Beep (void)
 Beep Ton ausgeben. Mehr ...
 
void BeepBoop (void)
 BeepBoop Doppelton ausgeben. Mehr ...
 
void IntDisable (void)
 Register sichern und Interrupts verbieten. Mehr ...
 
void IntEnable (void)
 Register wieder herstellen und Interrupts erlauben. Mehr ...
 
+void DisablePinChangeIRQ (void)
 
+void EnablePinChangeIRQ (void)
 
void WriteEEprom (void)
 Akt. Einstellungen in EEPROM schreiben. Mehr ...
 
void ReadEEprom (void)
 Einstellungen aus dem EEprom lesen. Mehr ...
 
void WriteEEpromWpM (void)
 Akt. Einstellung für die Geschwindigkeit in EEprom schreiben. Mehr ...
 
void ReadEEpromWpM (void)
 Gespeicherte Einstellung für die Geschwindigkeit aus EEprom lesen. Mehr ...
 
void SetEEprom (void)
 Standardeinstellungen (bei neuem Controller) Mehr ...
 
+void SerialWriteString (char *s)
 
void SerialWriteChar (unsigned char data)
 Ein Zeichen über serielle Schnittstelle ausgeben. Mehr ...
 
void DelayMilliSeconds (uint16_t ms)
 Zeitschleife von 1-65535 Millisekunden. Mehr ...
 
void ResetMilliSeconds (void)
 Setzt den Millisekundenzähler für Zeitschleifen auf 0. Mehr ...
 
uint16_t GetMilliSeconds (void)
 Zählerwert für Zeitschleifen auslesen. Mehr ...
 
void SendMemory (uint8_t ButtonPressed)
 Sendet den Text eines Speichers. Mehr ...
 
+ + + + +

+Variablen

uint8_t sreg_tmp
 Merker für Registerinhalte. Mehr ...
 
+

Ausführliche Beschreibung

+

Headerdatei für functions.c.

+

Dokumentation der Funktionen

+ +

◆ Beep()

+ +
+
+ + + + + + + + +
void Beep (void )
+
+ +

Beep Ton ausgeben.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ BeepBoop()

+ +
+
+ + + + + + + + +
void BeepBoop (void )
+
+ +

BeepBoop Doppelton ausgeben.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ Boop()

+ +
+
+ + + + + + + + +
void Boop (void )
+
+ +

Boop Ton ausgeben.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ CheckPaddles()

+ +
+
+ + + + + + + + +
void CheckPaddles (void )
+
+ +

Diese Funktion prüft, ob ein Paddle betätigt wurde.

+
    Wenn dies der Fall war, ist das jeweilige Statusbit gesetzt
+    und die Funktion für die Ausgabe des entsprechenden Symbols
+    wird aufgerufen.
+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ DelayMilliSeconds()

+ +
+
+ + + + + + + + +
void DelayMilliSeconds (uint16_t ms)
+
+ +

Zeitschleife von 1-65535 Millisekunden.

+
Parameter
+ + +
msAnzahl Millisekunden
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ GetMilliSeconds()

+ +
+
+ + + + + + + + +
uint16_t GetMilliSeconds (void )
+
+ +

Zählerwert für Zeitschleifen auslesen.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
Millisekunden
+
+
+ +
+
+ +

◆ IntDisable()

+ +
+
+ + + + + + + + +
void IntDisable (void )
+
+ +

Register sichern und Interrupts verbieten.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ IntEnable()

+ +
+
+ + + + + + + + +
void IntEnable (void )
+
+ +

Register wieder herstellen und Interrupts erlauben.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ ReadEEprom()

+ +
+
+ + + + + + + + +
void ReadEEprom (void )
+
+ +

Einstellungen aus dem EEprom lesen.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ ReadEEpromWpM()

+ +
+
+ + + + + + + + +
void ReadEEpromWpM (void )
+
+ +

Gespeicherte Einstellung für die Geschwindigkeit aus EEprom lesen.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ ResetMilliSeconds()

+ +
+
+ + + + + + + + +
void ResetMilliSeconds (void )
+
+ +

Setzt den Millisekundenzähler für Zeitschleifen auf 0.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SendChar()

+ +
+
+ + + + + + + + +
void SendChar (unsigned char c)
+
+ +

Gibt ein Zeichen aus.

+
    Mit dieser Symboltabelle werden die Zeichen
+    der Textspeicher gesendet
+
Parameter
+ + +
cZeichen, das Ausgegeben wird
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SendDah()

+ +
+
+ + + + + + + + +
void SendDah (void )
+
+ +

Gibt einen Strich aus.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SendDit()

+ +
+
+ + + + + + + + +
void SendDit (void )
+
+ +

Gibt einen Punkt aus.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SendIambic()

+ +
+
+ + + + + + + + +
void SendIambic (void )
+
+ +

Wenn beide Paddle betätigt sind, wird alternierend ein Punkt und Strich ausgegeben.

+

Beim Iambic B Mode und Ultimatic Mode wird gegebenenfalls noch ein gegensätzliches Zeichen des zuletzt betätigten Paddle angefügt. Erläuterung und Timing siehe Dokumentation.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SendMemory()

+ +
+
+ + + + + + + + +
void SendMemory (uint8_t MemoryIndex)
+
+ +

Sendet den Text eines Speichers.

+
Parameter
+ + +
Nummerdes Speichers
+
+
+
Rückgabe
none
+ +
+
+ +

◆ SendString()

+ +
+
+ + + + + + + + +
void SendString (char * s)
+
+ +

Gibt eine Zeichenkette als Morsecode aus.

+
    Wenn die Zeichenkette ein Leerzeichen enthält, wird dieses als Pause 
+    zwischen zwei Wörtern interpretiert und eine Pause der Länge von 7
+    Dits (in Abhängigkeit der eingestellten Geschwindigkeit) wird eingefügt
+    Zwischen einzelnen Zeichen wird eine Pause von 3 Dits eingefügt
+
Noch zu erledigen:
Für die Zeichenausgabe der Textspeicher könnte hier noch die Beachtung des eingestellten Ratios und der Gewichtung zugefügt werden.
+
Parameter
+ + +
sZeiger auf die Zeichenkette
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SerialWriteChar()

+ +
+
+ + + + + + + + +
void SerialWriteChar (unsigned char data)
+
+ +

Ein Zeichen über serielle Schnittstelle ausgeben.

+
Parameter
+ + +
dataZeichen, das seriell ausgegeben wird
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SetEEprom()

+ +
+
+ + + + + + + + +
void SetEEprom (void )
+
+ +

Standardeinstellungen (bei neuem Controller)

+
    Wird ein neuer Controller verwendet, gibt es keine 
+    Einstellungswerte im EEprom. Diese Funktion schreibt
+    die initialen Werte in das EEprom. Wird sehr selten
+    benötigt ;-)
+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SetRatio()

+ +
+
+ + + + + + + + +
void SetRatio (void )
+
+ +

Berechnung der Zeitdauer für Punkt und Strich.

+
    Die Länge eines Symbols ist abhängig von der
+    eingestellten Geschwindigkeit. Intern wird immer
+    mit Wörtern pro Minute gerechnet. Das normale
+    Punkt/Strich Verhältnis ist 1:3. Dies kann durch
+    den Parameter Ratio in den Einstellungen verändert
+    werden.
+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ Tone()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Tone (uint16_t f,
uint8_t duration 
)
+
+ +

Ausgabe eines Tons mit Dauer und Frequenz.

+
Parameter
+ + + +
fFrequenz des Tons
durationDauer des Tons
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ WriteEEprom()

+ +
+
+ + + + + + + + +
void WriteEEprom (void )
+
+ +

Akt. Einstellungen in EEPROM schreiben.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ WriteEEpromWpM()

+ +
+
+ + + + + + + + +
void WriteEEpromWpM (void )
+
+ +

Akt. Einstellung für die Geschwindigkeit in EEprom schreiben.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+

Variablen-Dokumentation

+ +

◆ sreg_tmp

+ +
+
+ + + + +
uint8_t sreg_tmp
+
+ +

Merker für Registerinhalte.

+ +
+
+
+
+ + + + diff --git a/Documents/Doxygen/html/functions_8h.js b/Documents/Doxygen/html/functions_8h.js new file mode 100644 index 0000000..36a8ee2 --- /dev/null +++ b/Documents/Doxygen/html/functions_8h.js @@ -0,0 +1,34 @@ +var functions_8h = +[ + [ "Beep", "functions_8h.html#a2f616a93763b4bc437c4311d653c0491", null ], + [ "BeepBoop", "functions_8h.html#a72913eefa74c0c044d815a0b759577fa", null ], + [ "Boop", "functions_8h.html#a0366eaeb4aab61562dcd5b24994d0103", null ], + [ "CheckPaddles", "functions_8h.html#a9bd61bc3c9e38f6b325e4ba3f96d9472", null ], + [ "DelayMilliSeconds", "functions_8h.html#ada3125b546b3115e7afc2e51bc7db894", null ], + [ "DisablePinChangeIRQ", "functions_8h.html#afeb1aaa538ce3d5ffb072786aed23a55", null ], + [ "EnablePinChangeIRQ", "functions_8h.html#a002f7b6558d9508ba71e95c8defd3ab4", null ], + [ "GetMilliSeconds", "functions_8h.html#a682e380769f82867a41c13d632bb3cca", null ], + [ "IntDisable", "functions_8h.html#ae2f4a274ba95c3e94edd58ce6f129de4", null ], + [ "IntEnable", "functions_8h.html#ab321d23dfab578b6a40f3c5e8894c280", null ], + [ "ReadEEprom", "functions_8h.html#adf7f3486f66ae3386f330a5172dfdf52", null ], + [ "ReadEEpromWpM", "functions_8h.html#a3435bb0409b2c91ab253f4bd4cdc03e1", null ], + [ "ResetMilliSeconds", "functions_8h.html#a318f7eb176f7797e0166cbd652855a3c", null ], + [ "SendChar", "functions_8h.html#a49e16203823a4921910161bd2610987a", null ], + [ "SendDah", "functions_8h.html#a3dfd0f785e0377a124c423ac5ef8ddde", null ], + [ "SendDit", "functions_8h.html#a22d2dd23cb17e53e75c7d6366d9205d6", null ], + [ "SendIambic", "functions_8h.html#a683e588b64df83d67f1342ed5eeb099b", null ], + [ "SendMemory", "functions_8h.html#adf505a2f38b0bd35e6030c8e9a82ae2a", null ], + [ "SendString", "functions_8h.html#a33edcf2aa23f97390659434ead6ef593", null ], + [ "SerialWriteChar", "functions_8h.html#a8684d17e55772fc84a10c9e778705eda", null ], + [ "SerialWriteString", "functions_8h.html#ac2bac61999066f61501cd244a237192e", null ], + [ "SetEEprom", "functions_8h.html#a4e592b116ccf5c55bbb5979bb7193981", null ], + [ "SetRatio", "functions_8h.html#aa0e063cf32b840a3ed51ae9aa677e2be", null ], + [ "SetWeight", "functions_8h.html#a7a31f60576d112eca1abddf447df8248", null ], + [ "SideToneOff", "functions_8h.html#a543d0f249e5b505063a706525f99ff3a", null ], + [ "SideToneOn", "functions_8h.html#ab97cfac63db09807e98220a4b660bba1", null ], + [ "SymbolLoop", "functions_8h.html#a2a5677c9c6904f13c1fa4fd1b4bc0fd8", null ], + [ "Tone", "functions_8h.html#a859cf4a556750b8aa340761627fb6c42", null ], + [ "WriteEEprom", "functions_8h.html#a586bc00ad3164def7ec76ac9bda4f1bc", null ], + [ "WriteEEpromWpM", "functions_8h.html#a838ffc3ce94fc8c85429e5297a185022", null ], + [ "sreg_tmp", "functions_8h.html#a82a35872e59db8f8de1f0e42854355dd", null ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/functions_8h__dep__incl.map b/Documents/Doxygen/html/functions_8h__dep__incl.map new file mode 100644 index 0000000..e3070eb --- /dev/null +++ b/Documents/Doxygen/html/functions_8h__dep__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Documents/Doxygen/html/functions_8h__dep__incl.md5 b/Documents/Doxygen/html/functions_8h__dep__incl.md5 new file mode 100644 index 0000000..ea287a4 --- /dev/null +++ b/Documents/Doxygen/html/functions_8h__dep__incl.md5 @@ -0,0 +1 @@ +bd5fb250b9f3838ce3d5452cef103668 \ No newline at end of file diff --git a/Documents/Doxygen/html/functions_8h__dep__incl.png b/Documents/Doxygen/html/functions_8h__dep__incl.png new file mode 100644 index 0000000..b44105b Binary files /dev/null and b/Documents/Doxygen/html/functions_8h__dep__incl.png differ diff --git a/Documents/Doxygen/html/functions_8h__incl.map b/Documents/Doxygen/html/functions_8h__incl.map new file mode 100644 index 0000000..724b18a --- /dev/null +++ b/Documents/Doxygen/html/functions_8h__incl.map @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Documents/Doxygen/html/functions_8h__incl.md5 b/Documents/Doxygen/html/functions_8h__incl.md5 new file mode 100644 index 0000000..646c650 --- /dev/null +++ b/Documents/Doxygen/html/functions_8h__incl.md5 @@ -0,0 +1 @@ +d15570d48d9338d22cf8578fdecc3ed4 \ No newline at end of file diff --git a/Documents/Doxygen/html/functions_8h__incl.png b/Documents/Doxygen/html/functions_8h__incl.png new file mode 100644 index 0000000..d261b2e Binary files /dev/null and b/Documents/Doxygen/html/functions_8h__incl.png differ diff --git a/Documents/Doxygen/html/functions_8h_source.html b/Documents/Doxygen/html/functions_8h_source.html new file mode 100644 index 0000000..d6792ef --- /dev/null +++ b/Documents/Doxygen/html/functions_8h_source.html @@ -0,0 +1,173 @@ + + + + + + + +BJ-Keyer: functions.h Quellcode + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
functions.h
+
+
+gehe zur Dokumentation dieser Datei
1 
+
5 #ifndef FUNCTIONS_H_INCLUDED
+
6 #define FUNCTIONS_H_INCLUDED
+
7 
+
8 #include "main.h"
+
9 
+
10 uint8_t sreg_tmp;
+
11 
+
12 // Prototypes
+
13 void SymbolLoop(uint8_t Len);
+
14 void CheckPaddles(void);
+
15 void SetRatio(void);
+
16 void SetWeight(void);
+
17 void SendDit(void);
+
18 void SendDah(void);
+
19 void SendIambic(void);
+
20 void SendChar(unsigned char c);
+
21 void SendString(char *s);
+
22 // Sidetone
+
23 void SideToneOn(void);
+
24 void SideToneOff(void);
+
25 void Tone(uint16_t f, uint8_t duration);
+
26 void Boop(void);
+
27 void Beep(void);
+
28 void BeepBoop(void);
+
29 // Interrupt
+
30 void IntDisable(void);
+
31 void IntEnable(void);
+
32 void DisablePinChangeIRQ(void);
+
33 void EnablePinChangeIRQ(void);
+
34 // EEPROM
+
35 void WriteEEprom(void);
+
36 void ReadEEprom(void);
+
37 void WriteEEpromWpM(void);
+
38 void ReadEEpromWpM(void);
+
39 void SetEEprom(void);
+
40 // Serielle Schnittstelle
+
41 void SerialWriteString(char *s);
+
42 void SerialWriteChar(unsigned char data);
+
43 // Delay Millis
+
44 void DelayMilliSeconds(uint16_t ms);
+
45 void ResetMilliSeconds(void);
+
46 uint16_t GetMilliSeconds(void);
+
47 // Externals
+
48 extern void SendMemory(uint8_t ButtonPressed);
+
49 #endif
+
void Boop(void)
Boop Ton ausgeben.
Definition: functions.c:688
+
void SendDit(void)
Gibt einen Punkt aus.
Definition: functions.c:570
+
void Beep(void)
Beep Ton ausgeben.
Definition: functions.c:698
+
void ResetMilliSeconds(void)
Setzt den Millisekundenzähler für Zeitschleifen auf 0.
Definition: functions.c:67
+
void SendString(char *s)
Gibt eine Zeichenkette als Morsecode aus.
Definition: functions.c:729
+
void ReadEEpromWpM(void)
Gespeicherte Einstellung für die Geschwindigkeit aus EEprom lesen.
Definition: functions.c:129
+
void SendDah(void)
Gibt einen Strich aus.
Definition: functions.c:588
+
void SendChar(unsigned char c)
Gibt ein Zeichen aus.
Definition: functions.c:759
+
void SetEEprom(void)
Standardeinstellungen (bei neuem Controller)
Definition: functions.c:158
+
void WriteEEprom(void)
Akt. Einstellungen in EEPROM schreiben.
Definition: functions.c:102
+
uint16_t GetMilliSeconds(void)
Zählerwert für Zeitschleifen auslesen.
Definition: functions.c:52
+
void SendIambic(void)
Wenn beide Paddle betätigt sind, wird alternierend ein Punkt und Strich ausgegeben.
Definition: functions.c:612
+
void BeepBoop(void)
BeepBoop Doppelton ausgeben.
Definition: functions.c:708
+
uint8_t sreg_tmp
Merker für Registerinhalte.
Definition: functions.h:10
+
void WriteEEpromWpM(void)
Akt. Einstellung für die Geschwindigkeit in EEprom schreiben.
Definition: functions.c:141
+
void Tone(uint16_t f, uint8_t duration)
Ausgabe eines Tons mit Dauer und Frequenz.
Definition: functions.c:674
+
void SerialWriteChar(unsigned char data)
Ein Zeichen über serielle Schnittstelle ausgeben.
Definition: functions.c:220
+
void CheckPaddles(void)
Diese Funktion prüft, ob ein Paddle betätigt wurde.
Definition: functions.c:436
+
void SetRatio(void)
Berechnung der Zeitdauer für Punkt und Strich.
Definition: functions.c:525
+
void IntEnable(void)
Register wieder herstellen und Interrupts erlauben.
Definition: functions.c:80
+
void DelayMilliSeconds(uint16_t ms)
Zeitschleife von 1-65535 Millisekunden.
Definition: functions.c:33
+
void SendMemory(uint8_t ButtonPressed)
Sendet den Text eines Speichers.
Definition: memory.c:46
+
void ReadEEprom(void)
Einstellungen aus dem EEprom lesen.
Definition: functions.c:187
+
void IntDisable(void)
Register sichern und Interrupts verbieten.
Definition: functions.c:91
+
BJ-Keyer.
+
+
+ + + + diff --git a/Documents/Doxygen/html/functions_vars.html b/Documents/Doxygen/html/functions_vars.html new file mode 100644 index 0000000..b730a47 --- /dev/null +++ b/Documents/Doxygen/html/functions_vars.html @@ -0,0 +1,263 @@ + + + + + + + +BJ-Keyer: Datenstruktur-Elemente - Variablen + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- k -

+ + +

- l -

    +
  • LastSymbolWasDit +: State +
  • +
+ + +

- m -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- w -

+
+
+ + + + diff --git a/Documents/Doxygen/html/globals.html b/Documents/Doxygen/html/globals.html new file mode 100644 index 0000000..e8ed5aa --- /dev/null +++ b/Documents/Doxygen/html/globals.html @@ -0,0 +1,608 @@ + + + + + + + +BJ-Keyer: Globale Elemente + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Hier folgt die Aufzählung aller dokumentierten Funktionen, Variablen, Makros, Aufzählungen und Typdefinitionen mit Verweisen auf die zugehörigen Dateien:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- w -

+ + +

- y -

+
+
+ + + + diff --git a/Documents/Doxygen/html/globals_8h.html b/Documents/Doxygen/html/globals_8h.html new file mode 100644 index 0000000..95f720e --- /dev/null +++ b/Documents/Doxygen/html/globals_8h.html @@ -0,0 +1,1024 @@ + + + + + + + +BJ-Keyer: globals.h-Dateireferenz + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
globals.h-Dateireferenz
+
+
+ +

Globale Variablen, Definitionen und Prototypen. +Mehr ...

+
#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <math.h>
+#include <inttypes.h>
+#include <avr/io.h>
+#include <avr/pgmspace.h>
+#include <avr/wdt.h>
+#include <avr/interrupt.h>
+#include <avr/eeprom.h>
+#include <util/delay.h>
+#include <util/atomic.h>
+#include "oled/i2c.h"
+#include "oled/lcd.h"
+#include "oled/font.h"
+
+Include-Abhängigkeitsdiagramm für globals.h:
+
+
+ + + + + + + + + + + + + + + + + + + +
+
+Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:
+
+
+ + + + + + + + + + +
+
+

gehe zum Quellcode dieser Datei

+ + + + + + + + + + +

+Datenstrukturen

struct  State
 
struct  MenuCtrl
 
struct  Config
 
struct  Message
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Makrodefinitionen

+#define F_CPU   16000000UL
 
+#define PRESCALER   8
 
+#define SINEWAVELENGTH   64
 
+#define F_CPUPRESIN   (F_CPU/(PRESCALER*SINEWAVELENGTH))
 
+#define USART_BAUDRATE   9600
 
+#define UBRR_VALUE   (((F_CPU/(USART_BAUDRATE*16UL)))-1)
 
+#define cbi(sfr, bit)   (_SFR_BYTE(sfr) &= ~_BV(bit))
 
+#define sbi(sfr, bit)   (_SFR_BYTE(sfr) |= _BV(bit))
 
+#define NOINIT   __attribute__ ((section (".noinit")))
 
+#define CALL   " DL7BJ "
 
+#define PRG   " BJ-Keyer "
 
+#define VER   " V1.03 "
 
#define NOTHING   0
 Keying states. Mehr ...
 
+#define DIT_DAH_OFF   1
 
+#define DAH_DIT_OFF   2
 
+#define DIT_DAH_ON   3
 
+#define DAH_DIT_ON   4
 
#define STRAIGHT   0
 Keyer mode. Mehr ...
 
+#define IAMBIC_B   1
 
+#define IAMBIC_A   2
 
+#define ULTIMATIC   3
 
+#define SINGLE_PADDLE   4
 
#define PADDLE_NORMAL   0
 Paddle Mode. Mehr ...
 
+#define PADDLE_REVERSE   1
 
#define SENDING_NOTHING   0
 Sending Mode. Mehr ...
 
+#define SENDING_DIT   1
 
+#define SENDING_DAH   2
 
+#define SENDING_SPC   3
 
+#define SENDING_STRAIGHT   4
 
+#define SENDING_AUTOMATIC   5
 
#define AUTO   0
 Sending Type. Mehr ...
 
+#define MAN   1
 
#define LEFT_PADDLE   PD2
 Ports. Mehr ...
 
+#define RIGHT_PADDLE   PD3
 
+#define STRAIGHT_KEY   PD4
 
+#define MORSE_LED   PC3
 
+#define MEM1   PD5
 
+#define MEM2   PD6
 
+#define MEM3   PD7
 
+#define MEM4   PC0
 
+#define MEM5   PB5
 
+#define TRX1   PC1
 
+#define TRX2   PC2
 
+#define AUDIO   PB3
 
+#define AUDIO_EN   PB4
 
+#define SCL   PC5
 
+#define SDA   PC4
 
+#define ON   1
 
+#define OFF   0
 
+#define DIT   1
 
+#define DAH   0
 
+#define NO_KEY_PRESSED   0
 
+#define KEY_PRESSED_DEBOUNCE   1
 
+#define KEY_PRESSED   2
 
+#define M_TRX1   1
 
+#define M_TRX2   2
 
+#define M_TON   3
 
+#define M_TON_FREQ   4
 
+#define M_IAMBICA   5
 
+#define M_IAMBICB   6
 
+#define M_ULTIMATIC   7
 
+#define M_MEMORY   8
 
+#define M_REVERSE   9
 
+#define M_RATIO   10
 
+#define M_WEIGHT   11
 
+#define M_WPMBPM   12
 
+#define M_MEMBUTTONMODE   13
 
+#define M_RISETIME   14
 
+#define M_DEBOUNCE   15
 
+#define M_MAX   15
 
#define CLEARLINE   " "
 OLED. Mehr ...
 
+#define NORMAL   0
 
#define MSGSIZE   60
 60 Zeichen für jeden Textspeicher Mehr ...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variablen

+uint8_t LastPINDState
 
volatile uint8_t EncoderTimer
 10ms Timer for Encoder Mehr ...
 
volatile int8_t EncoderCounter
 Vor/Rück Zähler. Mehr ...
 
volatile int8_t EncoderPos
 Encoderposition für WpM/BpM. Mehr ...
 
volatile int8_t EncoderPosConfig
 Encoderposition für Einstellungen. Mehr ...
 
volatile int8_t EncoderPosSubConfig
 Encoderposition für Submenues. Mehr ...
 
+uint16_t StoreEEpromTimer
 
uint8_t WpM
 Aktuelle Zeichengeschwindigkeit. Mehr ...
 
uint8_t PaddleMode
 Merker für Links / Rechts vertauscht. Mehr ...
 
uint8_t KeyerMode
 Merker für Iambic A, Iambic B oder Ultimatic. Mehr ...
 
+uint8_t KeyTX
 
+volatile uint8_t icnt
 
+volatile uint8_t ocr2a
 
volatile uint8_t lastButton
 Wert der letzten Buttonabfrage. Mehr ...
 
volatile uint16_t DitMillis
 Dauer eines Dits. Mehr ...
 
volatile uint16_t DahMillis
 Dauer eines Dahs. Mehr ...
 
volatile uint16_t SpcMillis
 Dauer einer Pause zwischen den Zeichen. Mehr ...
 
volatile uint8_t StateStraightKeyPressed
 Merker für StraightKey betätigt. Mehr ...
 
volatile uint8_t TimerStraightKeyPressed
 Timer Variable für Entprellung. Mehr ...
 
volatile uint8_t StatePaddleDitKeyPressed
 Merker für Paddle betätigt. Mehr ...
 
volatile uint8_t TimerPaddleDitKeyPressed
 Timer Variable für Entprellung. Mehr ...
 
volatile uint8_t StatePaddleDahKeyPressed
 Merker für Paddle betätigt. Mehr ...
 
volatile uint8_t TimerPaddleDahKeyPressed
 Timer Variable für Entprellung. Mehr ...
 
volatile uint8_t StateButtonPressed
 Merker für Speichertaste betätigt. Mehr ...
 
volatile uint8_t TimerButtonPressed
 Timer Variable für Entprellung. Mehr ...
 
volatile uint8_t StateRiseTimeCounter
 Zähler für Anstieg des Mithörtons. Mehr ...
 
volatile uint8_t StateRiseTime
 
uint16_t MenuCtrlTimer
 Diverse Zähler für Timer 0. Mehr ...
 
volatile uint16_t t_delayms
 Timer 0 max. 65535ms, all purpose timer variable. Mehr ...
 
volatile uint16_t t_elementlength
 Timer 0 max. 65535ms, element length of dit or dah. Mehr ...
 
+

Ausführliche Beschreibung

+

Globale Variablen, Definitionen und Prototypen.

+

Makro-Dokumentation

+ +

◆ AUTO

+ +
+
+ + + + +
#define AUTO   0
+
+ +

Sending Type.

+ +
+
+ +

◆ CLEARLINE

+ +
+
+ + + + +
#define CLEARLINE   " "
+
+ +

OLED.

+ +
+
+ +

◆ LEFT_PADDLE

+ +
+
+ + + + +
#define LEFT_PADDLE   PD2
+
+ +

Ports.

+ +
+
+ +

◆ MSGSIZE

+ +
+
+ + + + +
#define MSGSIZE   60
+
+ +

60 Zeichen für jeden Textspeicher

+ +
+
+ +

◆ NOTHING

+ +
+
+ + + + +
#define NOTHING   0
+
+ +

Keying states.

+ +
+
+ +

◆ PADDLE_NORMAL

+ +
+
+ + + + +
#define PADDLE_NORMAL   0
+
+ +

Paddle Mode.

+ +
+
+ +

◆ SENDING_NOTHING

+ +
+
+ + + + +
#define SENDING_NOTHING   0
+
+ +

Sending Mode.

+ +
+
+ +

◆ STRAIGHT

+ +
+
+ + + + +
#define STRAIGHT   0
+
+ +

Keyer mode.

+ +
+
+

Variablen-Dokumentation

+ +

◆ DahMillis

+ +
+
+ + + + +
volatile uint16_t DahMillis
+
+ +

Dauer eines Dahs.

+ +
+
+ +

◆ DitMillis

+ +
+
+ + + + +
volatile uint16_t DitMillis
+
+ +

Dauer eines Dits.

+ +
+
+ +

◆ EncoderCounter

+ +
+
+ + + + +
volatile int8_t EncoderCounter
+
+ +

Vor/Rück Zähler.

+ +
+
+ +

◆ EncoderPos

+ +
+
+ + + + +
volatile int8_t EncoderPos
+
+ +

Encoderposition für WpM/BpM.

+ +
+
+ +

◆ EncoderPosConfig

+ +
+
+ + + + +
volatile int8_t EncoderPosConfig
+
+ +

Encoderposition für Einstellungen.

+ +
+
+ +

◆ EncoderPosSubConfig

+ +
+
+ + + + +
volatile int8_t EncoderPosSubConfig
+
+ +

Encoderposition für Submenues.

+ +
+
+ +

◆ EncoderTimer

+ +
+
+ + + + +
volatile uint8_t EncoderTimer
+
+ +

10ms Timer for Encoder

+ +
+
+ +

◆ KeyerMode

+ +
+
+ + + + +
uint8_t KeyerMode
+
+ +

Merker für Iambic A, Iambic B oder Ultimatic.

+ +
+
+ +

◆ lastButton

+ +
+
+ + + + +
volatile uint8_t lastButton
+
+ +

Wert der letzten Buttonabfrage.

+ +
+
+ +

◆ MenuCtrlTimer

+ +
+
+ + + + +
uint16_t MenuCtrlTimer
+
+ +

Diverse Zähler für Timer 0.

+

Wartezeit bis zur Betriebsanzeige nach Config

+ +
+
+ +

◆ PaddleMode

+ +
+
+ + + + +
uint8_t PaddleMode
+
+ +

Merker für Links / Rechts vertauscht.

+ +
+
+ +

◆ SpcMillis

+ +
+
+ + + + +
volatile uint16_t SpcMillis
+
+ +

Dauer einer Pause zwischen den Zeichen.

+ +
+
+ +

◆ StateButtonPressed

+ +
+
+ + + + +
volatile uint8_t StateButtonPressed
+
+ +

Merker für Speichertaste betätigt.

+ +
+
+ +

◆ StatePaddleDahKeyPressed

+ +
+
+ + + + +
volatile uint8_t StatePaddleDahKeyPressed
+
+ +

Merker für Paddle betätigt.

+ +
+
+ +

◆ StatePaddleDitKeyPressed

+ +
+
+ + + + +
volatile uint8_t StatePaddleDitKeyPressed
+
+ +

Merker für Paddle betätigt.

+ +
+
+ +

◆ StateRiseTime

+ +
+
+ + + + +
volatile uint8_t StateRiseTime
+
+

Timer für Anstieg des Mithörtons

+ +
+
+ +

◆ StateRiseTimeCounter

+ +
+
+ + + + +
volatile uint8_t StateRiseTimeCounter
+
+ +

Zähler für Anstieg des Mithörtons.

+ +
+
+ +

◆ StateStraightKeyPressed

+ +
+
+ + + + +
volatile uint8_t StateStraightKeyPressed
+
+ +

Merker für StraightKey betätigt.

+ +
+
+ +

◆ t_delayms

+ +
+
+ + + + +
volatile uint16_t t_delayms
+
+ +

Timer 0 max. 65535ms, all purpose timer variable.

+ +
+
+ +

◆ t_elementlength

+ +
+
+ + + + +
volatile uint16_t t_elementlength
+
+ +

Timer 0 max. 65535ms, element length of dit or dah.

+ +
+
+ +

◆ TimerButtonPressed

+ +
+
+ + + + +
volatile uint8_t TimerButtonPressed
+
+ +

Timer Variable für Entprellung.

+ +
+
+ +

◆ TimerPaddleDahKeyPressed

+ +
+
+ + + + +
volatile uint8_t TimerPaddleDahKeyPressed
+
+ +

Timer Variable für Entprellung.

+ +
+
+ +

◆ TimerPaddleDitKeyPressed

+ +
+
+ + + + +
volatile uint8_t TimerPaddleDitKeyPressed
+
+ +

Timer Variable für Entprellung.

+ +
+
+ +

◆ TimerStraightKeyPressed

+ +
+
+ + + + +
volatile uint8_t TimerStraightKeyPressed
+
+ +

Timer Variable für Entprellung.

+ +
+
+ +

◆ WpM

+ +
+
+ + + + +
uint8_t WpM
+
+ +

Aktuelle Zeichengeschwindigkeit.

+ +
+
+
+
+ + + + diff --git a/Documents/Doxygen/html/globals_8h.js b/Documents/Doxygen/html/globals_8h.js new file mode 100644 index 0000000..2cd09f8 --- /dev/null +++ b/Documents/Doxygen/html/globals_8h.js @@ -0,0 +1,110 @@ +var globals_8h = +[ + [ "State", "structState.html", "structState" ], + [ "MenuCtrl", "structMenuCtrl.html", "structMenuCtrl" ], + [ "Config", "structConfig.html", "structConfig" ], + [ "Message", "structMessage.html", "structMessage" ], + [ "AUDIO", "globals_8h.html#a73ed4be5c2afc6b3c6d872c67f06b27b", null ], + [ "AUDIO_EN", "globals_8h.html#a9aae0b11edb13ba23962062c6310b48a", null ], + [ "AUTO", "globals_8h.html#a0cc6f7717df9fbdc0f33efb88720a639", null ], + [ "CALL", "globals_8h.html#aa980b5e5e502cf62bdca6c0452b97516", null ], + [ "cbi", "globals_8h.html#ae70baf5399951da1e7ad45a0ed890832", null ], + [ "CLEARLINE", "globals_8h.html#ae39a97a19b2e372929dabdc0e3822910", null ], + [ "DAH", "globals_8h.html#a3e7e891ff7a66fac8cbf2d81c91499a5", null ], + [ "DAH_DIT_OFF", "globals_8h.html#a2206cbd4be1ac8deb197ce07f11ee3e5", null ], + [ "DAH_DIT_ON", "globals_8h.html#a979c3e4f92443067e0d4844f11a11f47", null ], + [ "DIT", "globals_8h.html#a1d71d0c10cdc379fc3a1b2f029d3d9c9", null ], + [ "DIT_DAH_OFF", "globals_8h.html#a518c76a915f90d5175ce01e2007b62be", null ], + [ "DIT_DAH_ON", "globals_8h.html#a0486f3908c841216f2b7a08d8fde0098", null ], + [ "F_CPU", "globals_8h.html#a43bafb28b29491ec7f871319b5a3b2f8", null ], + [ "F_CPUPRESIN", "globals_8h.html#a1ff3ba8cf4ac5bd14d4189d600c5d367", null ], + [ "IAMBIC_A", "globals_8h.html#a1887a861cea3b6644def420638c0fc98", null ], + [ "IAMBIC_B", "globals_8h.html#ab4856cba3700d9faf68f3c36c38a64d5", null ], + [ "KEY_PRESSED", "globals_8h.html#a8386b89daf8ec3a1805554fd95b80a9e", null ], + [ "KEY_PRESSED_DEBOUNCE", "globals_8h.html#a9e2cfe84dafa1c4834ff619652d9a64c", null ], + [ "LEFT_PADDLE", "globals_8h.html#a8f0a217b99055286939b536efe9516f1", null ], + [ "M_DEBOUNCE", "globals_8h.html#a80ca77ca3492d1b5046c74dd71f3c0ba", null ], + [ "M_IAMBICA", "globals_8h.html#ae27e8d0e9f4019e3317b663153269b59", null ], + [ "M_IAMBICB", "globals_8h.html#a799f279139320d58849c9b39873bed97", null ], + [ "M_MAX", "globals_8h.html#a61819141b0164a35f4d791b0e696721f", null ], + [ "M_MEMBUTTONMODE", "globals_8h.html#a4ffa488bf9e0bec3211bfc7325ad1adc", null ], + [ "M_MEMORY", "globals_8h.html#a0b7f5f1f400522efde7ac959d42e6acb", null ], + [ "M_RATIO", "globals_8h.html#a935c2d21e455b9b554384acebcff05b0", null ], + [ "M_REVERSE", "globals_8h.html#afa9ef2159f32ec11b39b7408a90d3cf9", null ], + [ "M_RISETIME", "globals_8h.html#aac1d2918a98167deeddc74dfb73e0515", null ], + [ "M_TON", "globals_8h.html#a84501feff2919521b6051a205eb9467c", null ], + [ "M_TON_FREQ", "globals_8h.html#aa6f3b49681da4d4092468fb4dd1fe3d6", null ], + [ "M_TRX1", "globals_8h.html#ad54285de16d1e4eb57197272b15527c2", null ], + [ "M_TRX2", "globals_8h.html#a57235a40744e5ada2d7597832be662f6", null ], + [ "M_ULTIMATIC", "globals_8h.html#a0ef7a9454ad52abf182e22a751f37e9d", null ], + [ "M_WEIGHT", "globals_8h.html#a7cf02cee6c492d10d81fa7f8cd9e75d6", null ], + [ "M_WPMBPM", "globals_8h.html#a3531d6078fac920f06b5d54f073c66c7", null ], + [ "MAN", "globals_8h.html#accc898f427bcfab8f8554d0683a736de", null ], + [ "MEM1", "globals_8h.html#a5e91fefffdc4ae99555253d521d70d42", null ], + [ "MEM2", "globals_8h.html#af81f3155e333a7c017258f1a69949b0b", null ], + [ "MEM3", "globals_8h.html#afbacae6e435d743bef46dfc8369bf7c5", null ], + [ "MEM4", "globals_8h.html#ab305dee14a45b9899420fb017b6b0838", null ], + [ "MEM5", "globals_8h.html#a25a135b8117cdf599cdfe176200df2fa", null ], + [ "MORSE_LED", "globals_8h.html#adb6b98f999edb7b4152f2e3f8785406a", null ], + [ "MSGSIZE", "globals_8h.html#a57332b76331a1bbe1d6807ddbb6d0522", null ], + [ "NO_KEY_PRESSED", "globals_8h.html#aefdcc3e9dbabb74aeb89ff310722ba51", null ], + [ "NOINIT", "globals_8h.html#a2a59d5a77252e56299995f56e137cac6", null ], + [ "NORMAL", "globals_8h.html#a1291f416b069313021b519eea62d5bf1", null ], + [ "NOTHING", "globals_8h.html#aad4a7ebff687dc5228cc3fd4d25067f2", null ], + [ "OFF", "globals_8h.html#a29e413f6725b2ba32d165ffaa35b01e5", null ], + [ "ON", "globals_8h.html#ad76d1750a6cdeebd506bfcd6752554d2", null ], + [ "PADDLE_NORMAL", "globals_8h.html#a0f491a526845fa7f262309a82a0d7190", null ], + [ "PADDLE_REVERSE", "globals_8h.html#ab8fe6659548cbcff654c32b32903beab", null ], + [ "PRESCALER", "globals_8h.html#a0fac869d83ac1a584d6c45cf609f5fe7", null ], + [ "PRG", "globals_8h.html#a687ae7445182571cc179ad43ecd329e6", null ], + [ "RIGHT_PADDLE", "globals_8h.html#a2531fa489a13983ebf61c93e71ec43d5", null ], + [ "sbi", "globals_8h.html#ac4a5536d9bf092116f88b94797ddc882", null ], + [ "SCL", "globals_8h.html#ab5ffc4751921608954bb7a5687566b2d", null ], + [ "SDA", "globals_8h.html#a6890442e1cc24a0d61597a13576b8727", null ], + [ "SENDING_AUTOMATIC", "globals_8h.html#acbf37f526e50d2774c17f10d8d167532", null ], + [ "SENDING_DAH", "globals_8h.html#accfd3eb8f7e07b630344f41ecafc6e79", null ], + [ "SENDING_DIT", "globals_8h.html#a153dd0d1d330ebe85d5681984b690f19", null ], + [ "SENDING_NOTHING", "globals_8h.html#a26467aab195715bb21eca2df8d729078", null ], + [ "SENDING_SPC", "globals_8h.html#acfc4030c7ccaf6767ce25766c334c07b", null ], + [ "SENDING_STRAIGHT", "globals_8h.html#a69c769033e48b3d24d40255e3811a068", null ], + [ "SINEWAVELENGTH", "globals_8h.html#a89bbee3eaf4759d9c2bb75f2cc463c1c", null ], + [ "SINGLE_PADDLE", "globals_8h.html#a21db5f41a6f17da0c82b95cda61b48ff", null ], + [ "STRAIGHT", "globals_8h.html#ae5284d1a5b3e5a009614298e3e7730bc", null ], + [ "STRAIGHT_KEY", "globals_8h.html#a7ce37f67d167ed8deb6c5e0e24c213d8", null ], + [ "TRX1", "globals_8h.html#a23a8a741ec974d3d82de16f4a59af347", null ], + [ "TRX2", "globals_8h.html#a8bf6fec9796ce1a4372b299d2ac6079e", null ], + [ "UBRR_VALUE", "globals_8h.html#a0b029ff580b042a27aaac4bd2ec925e2", null ], + [ "ULTIMATIC", "globals_8h.html#a37afa2db2d5b90d445555f29ed6d44a9", null ], + [ "USART_BAUDRATE", "globals_8h.html#a6a53a6c94a70cc286e300a0ea8f46ba4", null ], + [ "VER", "globals_8h.html#a98ed931f97fef7e06e3ea441d0326c67", null ], + [ "DahMillis", "globals_8h.html#ad4e6326c3ab1d15391fcc416ff86c436", null ], + [ "DitMillis", "globals_8h.html#a2f7701e9783a70804580512902c10ee7", null ], + [ "EncoderCounter", "globals_8h.html#a426d3fb4cd1535f9e7616df2601f4ddc", null ], + [ "EncoderPos", "globals_8h.html#a3a1db669858552a5c21490149c648e12", null ], + [ "EncoderPosConfig", "globals_8h.html#a2b61ba3fb70419b8b5151d7216f6ab87", null ], + [ "EncoderPosSubConfig", "globals_8h.html#a2afbcb36398df196b3205ab28f612edf", null ], + [ "EncoderTimer", "globals_8h.html#a1756e538888c2c722809420489b62a53", null ], + [ "icnt", "globals_8h.html#a5a4807ab81f5583d7c509be8897714a1", null ], + [ "KeyerMode", "globals_8h.html#a9a19b6437a6a56a5855dd3488c6428f8", null ], + [ "KeyTX", "globals_8h.html#ad1fad28daa019aa1084957dd6e7a808a", null ], + [ "lastButton", "globals_8h.html#acee5a37cadaac095a39a4ae4d033df7d", null ], + [ "LastPINDState", "globals_8h.html#a69df8d53e45e7fceeeca61ebeed0c249", null ], + [ "MenuCtrlTimer", "globals_8h.html#a088c685d08447f6614b3aea76cd94582", null ], + [ "ocr2a", "globals_8h.html#a7f2869abff8463c80351c1a4dda05b0d", null ], + [ "PaddleMode", "globals_8h.html#ad7f78d2aebfab57b15aa5bf6e28d8723", null ], + [ "SpcMillis", "globals_8h.html#a7db74a7792308dd1d7c35be61d5ff9e8", null ], + [ "StateButtonPressed", "globals_8h.html#a094f3d15714cd07a3536db03d58cb818", null ], + [ "StatePaddleDahKeyPressed", "globals_8h.html#a92483c848dd64122cc79472ad979f5e5", null ], + [ "StatePaddleDitKeyPressed", "globals_8h.html#a9684e7a5392d3dc5b8436002c3ce1c85", null ], + [ "StateRiseTime", "globals_8h.html#ab36cf30c9e53f719929eba1f738e4b12", null ], + [ "StateRiseTimeCounter", "globals_8h.html#a03249b48d31b6f929b91011f73c3eb56", null ], + [ "StateStraightKeyPressed", "globals_8h.html#a39b1d9792105a52be2c2713ecf044a97", null ], + [ "StoreEEpromTimer", "globals_8h.html#a74c15b62456a6a231784b094c888bb24", null ], + [ "t_delayms", "globals_8h.html#a4a4d36a87b010340a12f80300a0c5f76", null ], + [ "t_elementlength", "globals_8h.html#a8a613665f46a0641e6dc293da130ab23", null ], + [ "TimerButtonPressed", "globals_8h.html#a926757eaf37be188fd6e15410d83c953", null ], + [ "TimerPaddleDahKeyPressed", "globals_8h.html#a57e73db78b59b4d79e72189fb0158f7a", null ], + [ "TimerPaddleDitKeyPressed", "globals_8h.html#a170fcf4ece2368541f1bcb04a3dd1511", null ], + [ "TimerStraightKeyPressed", "globals_8h.html#a0ca92f009021ed55c2f9199cf5bf80c3", null ], + [ "WpM", "globals_8h.html#a28fa6cb1767abefbe9c197700410d946", null ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/globals_8h__dep__incl.map b/Documents/Doxygen/html/globals_8h__dep__incl.map new file mode 100644 index 0000000..20995b4 --- /dev/null +++ b/Documents/Doxygen/html/globals_8h__dep__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/Documents/Doxygen/html/globals_8h__dep__incl.md5 b/Documents/Doxygen/html/globals_8h__dep__incl.md5 new file mode 100644 index 0000000..ff18af6 --- /dev/null +++ b/Documents/Doxygen/html/globals_8h__dep__incl.md5 @@ -0,0 +1 @@ +ac058d8a6d34f88804823531909cc1a3 \ No newline at end of file diff --git a/Documents/Doxygen/html/globals_8h__dep__incl.png b/Documents/Doxygen/html/globals_8h__dep__incl.png new file mode 100644 index 0000000..5c72091 Binary files /dev/null and b/Documents/Doxygen/html/globals_8h__dep__incl.png differ diff --git a/Documents/Doxygen/html/globals_8h__incl.map b/Documents/Doxygen/html/globals_8h__incl.map new file mode 100644 index 0000000..47df302 --- /dev/null +++ b/Documents/Doxygen/html/globals_8h__incl.map @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/Documents/Doxygen/html/globals_8h__incl.md5 b/Documents/Doxygen/html/globals_8h__incl.md5 new file mode 100644 index 0000000..d1c7f2c --- /dev/null +++ b/Documents/Doxygen/html/globals_8h__incl.md5 @@ -0,0 +1 @@ +c8fbade9a88bd8c81194a8a194f53654 \ No newline at end of file diff --git a/Documents/Doxygen/html/globals_8h__incl.png b/Documents/Doxygen/html/globals_8h__incl.png new file mode 100644 index 0000000..674087b Binary files /dev/null and b/Documents/Doxygen/html/globals_8h__incl.png differ diff --git a/Documents/Doxygen/html/globals_8h_source.html b/Documents/Doxygen/html/globals_8h_source.html new file mode 100644 index 0000000..89213ef --- /dev/null +++ b/Documents/Doxygen/html/globals_8h_source.html @@ -0,0 +1,381 @@ + + + + + + + +BJ-Keyer: globals.h Quellcode + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
globals.h
+
+
+gehe zur Dokumentation dieser Datei
1 
+
6 #ifndef GLOBALS_H_INCLUDED
+
7 #define GLOBALS_H_INCLUDED
+
8 
+
9 #define F_CPU 16000000UL
+
10 #define PRESCALER 8
+
11 #define SINEWAVELENGTH 64
+
12 #define F_CPUPRESIN (F_CPU/(PRESCALER*SINEWAVELENGTH))
+
13 #define USART_BAUDRATE 9600
+
14 #define UBRR_VALUE (((F_CPU/(USART_BAUDRATE*16UL)))-1)
+
15 
+
16 #include <stdlib.h>
+
17 #include <stdio.h>
+
18 #include <stdint.h>
+
19 #include <string.h>
+
20 #include <math.h>
+
21 #include <inttypes.h>
+
22 
+
23 #include <avr/io.h>
+
24 #include <avr/pgmspace.h>
+
25 #include <avr/wdt.h>
+
26 #include <avr/interrupt.h>
+
27 #include <avr/eeprom.h>
+
28 #include <util/delay.h>
+
29 #include <util/atomic.h>
+
30 
+
31 #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) // clear bit
+
32 #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) // set bit
+
33 
+
34 #include "oled/i2c.h"
+
35 #include "oled/lcd.h"
+
36 #include "oled/font.h"
+
37 
+
38 #ifndef EEMEM
+
39 #define EEMEM __attribute__ ((section (".eeprom")))
+
40 #endif
+
41 
+
42 #ifndef NOINIT
+
43 #define NOINIT __attribute__ ((section (".noinit")))
+
44 #endif
+
45 
+
46 #define CALL " DL7BJ "
+
47 #define PRG " BJ-Keyer "
+
48 #define VER " V1.03 "
+
49 
+
51 #define NOTHING 0
+
52 #define DIT_DAH_OFF 1
+
53 #define DAH_DIT_OFF 2
+
54 #define DIT_DAH_ON 3
+
55 #define DAH_DIT_ON 4
+
57 #define STRAIGHT 0
+
58 #define IAMBIC_B 1
+
59 #define IAMBIC_A 2
+
60 #define ULTIMATIC 3
+
61 #define SINGLE_PADDLE 4
+
63 #define PADDLE_NORMAL 0
+
64 #define PADDLE_REVERSE 1
+
66 #define SENDING_NOTHING 0
+
67 #define SENDING_DIT 1
+
68 #define SENDING_DAH 2
+
69 #define SENDING_SPC 3
+
70 #define SENDING_STRAIGHT 4
+
71 #define SENDING_AUTOMATIC 5
+
73 #define AUTO 0
+
74 #define MAN 1
+
76 #define LEFT_PADDLE PD2
+
77 #define RIGHT_PADDLE PD3
+
78 #define STRAIGHT_KEY PD4
+
79 #define MORSE_LED PC3
+
80 #define MEM1 PD5
+
81 #define MEM2 PD6
+
82 #define MEM3 PD7
+
83 #define MEM4 PC0
+
84 #define MEM5 PB5
+
85 #define TRX1 PC1
+
86 #define TRX2 PC2
+
87 #define AUDIO PB3
+
88 #define AUDIO_EN PB4
+
89 #define SCL PC5
+
90 #define SDA PC4
+
91 // States
+
92 #define ON 1
+
93 #define OFF 0
+
94 #define DIT 1
+
95 #define DAH 0
+
96 #define NO_KEY_PRESSED 0
+
97 #define KEY_PRESSED_DEBOUNCE 1
+
98 #define KEY_PRESSED 2
+
99 // Menue und Drehencoder
+
100 #define M_TRX1 1
+
101 #define M_TRX2 2
+
102 #define M_TON 3
+
103 #define M_TON_FREQ 4
+
104 #define M_IAMBICA 5
+
105 #define M_IAMBICB 6
+
106 #define M_ULTIMATIC 7
+
107 #define M_MEMORY 8
+
108 #define M_REVERSE 9
+
109 #define M_RATIO 10
+
110 #define M_WEIGHT 11
+
111 #define M_WPMBPM 12
+
112 #define M_MEMBUTTONMODE 13
+
113 #define M_RISETIME 14
+
114 #define M_DEBOUNCE 15
+
115 #define M_MAX 15
+
117 #define CLEARLINE " "
+
118 #define NORMAL 0
+
119 
+
120 struct State
+
121 {
+
122  uint8_t WpMChanged: 1;
+
123  uint8_t WriteWpMEEprom: 1;
+
124  uint8_t WriteEEprom: 1;
+
125  uint8_t WriteMsgEEprom: 2;
+
126  uint8_t SidetoneOff: 1;
+
127  uint8_t SidetoneEnabled: 1;
+
128  uint8_t SendStatus;
+
129  uint8_t Automatic;
+
130  uint8_t LastSymbolWasDit: 1;
+
131  uint8_t DitPressed: 1;
+
132  uint8_t DahPressed: 1;
+
133  uint8_t KeyState:1;
+
134  uint8_t KeyTX:1;
+
135 };
+
136 
+
137 struct MenuCtrl
+
138 {
+
139  uint8_t buttonPressed: 1;
+
140  uint8_t buttonPressedLong: 1;
+
141  uint8_t m_buttonPressed: 2;
+
142  uint8_t m_buttonPressedLong: 1;
+
143  uint8_t ClrScr: 1;
+
144  uint8_t Config: 1;
+
145  uint8_t Update: 1;
+
146  uint8_t CurMenue;
+
147  uint8_t SubMenue: 1;
+
148 };
+
149 
+
150 struct Config
+
151 {
+
152  uint8_t Trx1: 1;
+
153  uint8_t Trx2: 1;
+
154  uint8_t KeyerMode: 3;
+
155  uint8_t SidetoneEnabled: 1;
+
156  uint8_t WpMBpM: 1;
+
157  uint8_t Reverse: 1;
+
158  uint8_t Ratio;
+
159  uint8_t Weight;
+
160  uint8_t Memory:1;
+
161  uint8_t MemButtonMode:1;
+
162  uint16_t SidetoneFreq;
+
163  uint8_t WpM;
+
164  uint8_t RiseTime;
+
165  uint8_t RiseTimeCounter;
+
166  uint8_t DebounceTime;
+
167 };
+
168 
+
169 #define MSGSIZE 60
+
170 
+
171 struct Message
+
172 {
+
173  char Msg1[MSGSIZE];
+
174  char Msg2[MSGSIZE];
+
175  char Msg3[MSGSIZE];
+
176  char Msg4[MSGSIZE];
+
177  char Msg5[MSGSIZE];
+
178 };
+
179 
+
180 
+
181 
+
182 // Pin Change Interrupt Merker für Port
+
183 uint8_t LastPINDState;
+
184 
+
185 // Drehencoder
+
186 volatile uint8_t EncoderTimer;
+
187 volatile int8_t EncoderCounter;
+
188 volatile int8_t EncoderPos;
+
189 volatile int8_t EncoderPosConfig;
+
190 volatile int8_t EncoderPosSubConfig;
+
191 
+
192 uint16_t StoreEEpromTimer;
+
193 
+
194 uint8_t WpM;
+
195 uint8_t PaddleMode;
+
196 uint8_t KeyerMode;
+
197 uint8_t KeyTX;
+
198 
+
199 // Sidetone generation
+
200 volatile uint8_t icnt;
+
201 volatile uint8_t ocr2a;
+
202 volatile uint8_t lastButton;
+
203 volatile uint16_t DitMillis;
+
204 volatile uint16_t DahMillis;
+
205 volatile uint16_t SpcMillis;
+
206 // Zähler und Status für Entprellung der Tasteneingänge und Mithörton
+
207 volatile uint8_t StateStraightKeyPressed;
+
208 volatile uint8_t TimerStraightKeyPressed;
+
209 volatile uint8_t StatePaddleDitKeyPressed;
+
210 volatile uint8_t TimerPaddleDitKeyPressed;
+
211 volatile uint8_t StatePaddleDahKeyPressed;
+
212 volatile uint8_t TimerPaddleDahKeyPressed;
+
213 volatile uint8_t StateButtonPressed;
+
214 volatile uint8_t TimerButtonPressed;
+
215 volatile uint8_t StateRiseTimeCounter;
+
216 volatile uint8_t StateRiseTime;
+
218 uint16_t MenuCtrlTimer;
+
219 volatile uint16_t t_delayms;
+
220 volatile uint16_t t_elementlength;
+
221 #endif
+
volatile uint8_t StateRiseTimeCounter
Zähler für Anstieg des Mithörtons.
Definition: globals.h:215
+
uint16_t MenuCtrlTimer
Diverse Zähler für Timer 0.
Definition: globals.h:218
+
volatile uint8_t StateButtonPressed
Merker für Speichertaste betätigt.
Definition: globals.h:213
+
volatile uint8_t TimerStraightKeyPressed
Timer Variable für Entprellung.
Definition: globals.h:208
+
volatile uint8_t TimerPaddleDitKeyPressed
Timer Variable für Entprellung.
Definition: globals.h:210
+
volatile uint8_t EncoderTimer
10ms Timer for Encoder
Definition: globals.h:186
+
uint8_t WpM
Aktuelle Zeichengeschwindigkeit.
Definition: globals.h:194
+
volatile int8_t EncoderPosSubConfig
Encoderposition für Submenues.
Definition: globals.h:190
+
volatile int8_t EncoderPosConfig
Encoderposition für Einstellungen.
Definition: globals.h:189
+
volatile uint16_t DitMillis
Dauer eines Dits.
Definition: globals.h:203
+
volatile uint8_t StateStraightKeyPressed
Merker für StraightKey betätigt.
Definition: globals.h:207
+
volatile int8_t EncoderPos
Encoderposition für WpM/BpM.
Definition: globals.h:188
+
volatile int8_t EncoderCounter
Vor/Rück Zähler.
Definition: globals.h:187
+
volatile uint16_t t_delayms
Timer 0 max. 65535ms, all purpose timer variable.
Definition: globals.h:219
+
#define MSGSIZE
60 Zeichen für jeden Textspeicher
Definition: globals.h:169
+
volatile uint8_t TimerPaddleDahKeyPressed
Timer Variable für Entprellung.
Definition: globals.h:212
+
volatile uint16_t SpcMillis
Dauer einer Pause zwischen den Zeichen.
Definition: globals.h:205
+
volatile uint16_t t_elementlength
Timer 0 max. 65535ms, element length of dit or dah.
Definition: globals.h:220
+
volatile uint8_t StatePaddleDahKeyPressed
Merker für Paddle betätigt.
Definition: globals.h:211
+
volatile uint8_t TimerButtonPressed
Timer Variable für Entprellung.
Definition: globals.h:214
+
volatile uint8_t StatePaddleDitKeyPressed
Merker für Paddle betätigt.
Definition: globals.h:209
+
uint8_t KeyerMode
Merker für Iambic A, Iambic B oder Ultimatic.
Definition: globals.h:196
+
volatile uint8_t StateRiseTime
Definition: globals.h:216
+
volatile uint8_t lastButton
Wert der letzten Buttonabfrage.
Definition: globals.h:202
+
volatile uint16_t DahMillis
Dauer eines Dahs.
Definition: globals.h:204
+
uint8_t PaddleMode
Merker für Links / Rechts vertauscht.
Definition: globals.h:195
+
Definition: globals.h:151
+
uint8_t Trx2
TRX 2 eingeschaltet.
Definition: globals.h:153
+
uint8_t Memory
Punkt/Strich Speicher.
Definition: globals.h:160
+
uint8_t RiseTimeCounter
Anzahl Sinusschwingungen für den Anstieg.
Definition: globals.h:165
+
uint8_t RiseTime
Anstiegszeit Sinuston.
Definition: globals.h:164
+
uint8_t WpMBpM
WpM oder BpM Anzeige.
Definition: globals.h:156
+
uint8_t Trx1
TRX 1 eingeschaltet.
Definition: globals.h:152
+
uint8_t SidetoneEnabled
Mithörton eingeschaltet.
Definition: globals.h:155
+
uint8_t Reverse
linkes/rechtes Paddle vertauschen
Definition: globals.h:157
+
uint16_t SidetoneFreq
Frequenz des Mithörtons.
Definition: globals.h:162
+
uint8_t Ratio
Punkt/Strich Verhältnis 1:3.
Definition: globals.h:158
+
uint8_t DebounceTime
Entprellzeit für Straight Key Eingang.
Definition: globals.h:166
+
uint8_t Weight
Punkt/Strich Gewichtung.
Definition: globals.h:159
+
uint8_t WpM
WpM.
Definition: globals.h:163
+
uint8_t MemButtonMode
Button 5 als Umschalter TRX oder Speichertaste.
Definition: globals.h:161
+
uint8_t KeyerMode
Iambic A, Iambic B oder Ultimatic.
Definition: globals.h:154
+
Definition: globals.h:138
+
uint8_t m_buttonPressedLong
Merker für Taster Drehencoder lange gedrückt.
Definition: globals.h:142
+
uint8_t SubMenue
im Submenue
Definition: globals.h:147
+
uint8_t CurMenue
aktuelles Menue
Definition: globals.h:146
+
uint8_t buttonPressedLong
Taster Drehencoder lange gedrückt.
Definition: globals.h:140
+
uint8_t Config
Bitmerker für Config geändert.
Definition: globals.h:144
+
uint8_t Update
Bitmerker für Display update.
Definition: globals.h:145
+
uint8_t m_buttonPressed
Merker für Taster Drehencoder gedrückt.
Definition: globals.h:141
+
uint8_t ClrScr
Bitmerker für Display löschen.
Definition: globals.h:143
+
uint8_t buttonPressed
Taster Drehencoder gedrückt.
Definition: globals.h:139
+
Definition: globals.h:172
+
char Msg3[MSGSIZE]
Textspeicher 3.
Definition: globals.h:175
+
char Msg5[MSGSIZE]
Textspeicher 5.
Definition: globals.h:177
+
char Msg1[MSGSIZE]
Textspeicher 1.
Definition: globals.h:173
+
char Msg2[MSGSIZE]
Textspeicher 2.
Definition: globals.h:174
+
char Msg4[MSGSIZE]
Textspeicher 4.
Definition: globals.h:176
+
Definition: globals.h:121
+
uint8_t WriteWpMEEprom
nicht gespeicherte Geschwindigkeit
Definition: globals.h:123
+
uint8_t WriteEEprom
nicht gespeicherte EEprom Werte
Definition: globals.h:124
+
uint8_t LastSymbolWasDit
letztes Symbol war ein Punkt
Definition: globals.h:130
+
uint8_t DitPressed
Dit Hebel betätigt.
Definition: globals.h:131
+
uint8_t WpMChanged
Geschwindigkeit geändert.
Definition: globals.h:122
+
uint8_t SidetoneOff
Mithörton an oder aus.
Definition: globals.h:126
+
uint8_t DahPressed
Dah Hebel betätigt.
Definition: globals.h:132
+
uint8_t Automatic
Speicher wird gesendet.
Definition: globals.h:129
+
uint8_t SidetoneEnabled
Mithörton ein- oder ausgeschaltet.
Definition: globals.h:127
+
uint8_t SendStatus
Status, ob Symbol gesendet wird.
Definition: globals.h:128
+
uint8_t WriteMsgEEprom
nicht gespeicherte Textnachrichten
Definition: globals.h:125
+
+
+ + + + diff --git a/Documents/Doxygen/html/globals_defs.html b/Documents/Doxygen/html/globals_defs.html new file mode 100644 index 0000000..799e317 --- /dev/null +++ b/Documents/Doxygen/html/globals_defs.html @@ -0,0 +1,123 @@ + + + + + + + +BJ-Keyer: Globale Elemente + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/Documents/Doxygen/html/globals_func.html b/Documents/Doxygen/html/globals_func.html new file mode 100644 index 0000000..9d5c531 --- /dev/null +++ b/Documents/Doxygen/html/globals_func.html @@ -0,0 +1,340 @@ + + + + + + + +BJ-Keyer: Globale Elemente + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- i -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- w -

+
+
+ + + + diff --git a/Documents/Doxygen/html/globals_vars.html b/Documents/Doxygen/html/globals_vars.html new file mode 100644 index 0000000..3057ae6 --- /dev/null +++ b/Documents/Doxygen/html/globals_vars.html @@ -0,0 +1,373 @@ + + + + + + + +BJ-Keyer: Globale Elemente + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+ + +

- d -

+ + +

- e -

+ + +

- h -

+ + +

- i -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- w -

+ + +

- y -

+
+
+ + + + diff --git a/Documents/Doxygen/html/graph_legend.html b/Documents/Doxygen/html/graph_legend.html new file mode 100644 index 0000000..9dc46ae --- /dev/null +++ b/Documents/Doxygen/html/graph_legend.html @@ -0,0 +1,161 @@ + + + + + + + +BJ-Keyer: Erklärung des Graphen + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Erklärung des Graphen
+
+
+

Diese Seite erklärt die Interpretation der von doxygen erzeugten Graphen.

+

Beispiel:

/*! Wegen Verkürzung unsichtbare Klasse */
+
class Invisible { };
+
+
/*! Klasse verkürzt dargestellt, Vererbungsbeziehung ist versteckt */
+
class Truncated : public Invisible { };
+
+
/* Nicht mit doxygen-Kommentaren dokumentierte Klasse */
+
class Undocumented { };
+
+
/*! Mithilfe öffentlicher Vererbung vererbte Klasse */
+
class PublicBase : public Truncated { };
+
+
/*! Eine Template-Klasse */
+
template<class T> class Templ { };
+
+
/*! Mithilfe geschützter Vererbung vererbte Klasse */
+
class ProtectedBase { };
+
+
/*! Mithilfe privater Vererbung vererbte Klasse */
+
class PrivateBase { };
+
+
/*! Von der Klasse Inherited benutzte Klasse */
+
class Used { };
+
+
/*! Superklasse, die von mehreren anderen Klassen erbt */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

Dies liefert den folgenden Graphen:

+

Die Rechtecke in obigem Graphen bedeuten:

+
    +
  • +Ein grau gefülltes Rechteck stellt die Struktur oder Klasse dar, für die der Graph erzeugt wurde.
  • +
  • +Ein Rechteck mit schwarzem Rahmen kennzeichnet eine dokumentierte Struktur oder Klasse.
  • +
  • +Ein Rechteck mit grauem Rahmen kennzeichnet eine undokumentierte Struktur oder Klasse.
  • +
  • +Ein Rechteck mit rotem Rahmen kennzeichnet eine dokumentierte Struktur oder Klasse, für die nicht alle Vererbungs-/Enthaltenseinsbeziehungen dargestellt werden. Ein Graph wird gekürzt, wenn er nicht in die angegebenen Schranken passt.
  • +
+

Die Pfeile bedeuten:

+
    +
  • +Ein dunkelblauer Pfeil stellt eine öffentliche Vererbungsbeziehung zwischen zwei Klassen dar.
  • +
  • +Ein dunkelgrüner Pfeil stellt geschützte Vererbung dar.
  • +
  • +Ein dunkelroter Pfeil stellt private Vererbung dar.
  • +
  • +Ein gestrichelter violetter Pfeil bedeutet, dass eine Klasse in einer anderen enthalten ist oder von einer anderen benutzt wird. Am Pfeil stehen die Variable(n), mit deren Hilfe auf die Struktur oder Klasse an der Pfeilspitze zugegriffen werden kann.
  • +
  • +Ein gestrichelter gelber Pfeil kennzeichnet eine Verknüpfung zwischen einer Template-Instanz und der Template-Klasse von welcher es abstammt. Neben dem Pfeil sind die Template-Parameter aufgeführt.
  • +
+
+
+ + + + diff --git a/Documents/Doxygen/html/graph_legend.md5 b/Documents/Doxygen/html/graph_legend.md5 new file mode 100644 index 0000000..99c6574 --- /dev/null +++ b/Documents/Doxygen/html/graph_legend.md5 @@ -0,0 +1 @@ +5664abf673bf1aa03c66c1103d2b8495 \ No newline at end of file diff --git a/Documents/Doxygen/html/graph_legend.png b/Documents/Doxygen/html/graph_legend.png new file mode 100644 index 0000000..140796b Binary files /dev/null and b/Documents/Doxygen/html/graph_legend.png differ diff --git a/Documents/Doxygen/html/index.html b/Documents/Doxygen/html/index.html new file mode 100644 index 0000000..cfa038b --- /dev/null +++ b/Documents/Doxygen/html/index.html @@ -0,0 +1,101 @@ + + + + + + + +BJ-Keyer: Hauptseite + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
BJ-Keyer Dokumentation
+
+
+
+
+ + + + diff --git a/Documents/Doxygen/html/jquery.js b/Documents/Doxygen/html/jquery.js new file mode 100644 index 0000000..103c32d --- /dev/null +++ b/Documents/Doxygen/html/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/Documents/Doxygen/html/main_8h.html b/Documents/Doxygen/html/main_8h.html new file mode 100644 index 0000000..9d39886 --- /dev/null +++ b/Documents/Doxygen/html/main_8h.html @@ -0,0 +1,667 @@ + + + + + + + +BJ-Keyer: main.h-Dateireferenz + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
main.h-Dateireferenz
+
+
+ +

BJ-Keyer. +Mehr ...

+
#include "globals.h"
+#include "encoder.h"
+#include "functions.h"
+#include "controls.h"
+#include "vt100.h"
+
+Include-Abhängigkeitsdiagramm für main.h:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:
+
+
+ + + + + + + +
+
+

gehe zum Quellcode dieser Datei

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Funktionen

void Init (void)
 Initialisierung aller Variablen, Timer. Mehr ...
 
void InitTimer (void)
 Initialsieren der Timer. Mehr ...
 
void ReStart (void)
 Initialisierung bei Reset und Power On. Mehr ...
 
void CheckDahPaddle (void)
 Prüfen, ob das Strich Paddle betätigt wurde. Mehr ...
 
void CheckDitPaddle (void)
 Prüfen, ob das Punkt Paddle betätigt wurde. Mehr ...
 
void CheckStraightKey (void)
 Fragt die Handtasteneingänge ab und gibt das entsprechende Symbol aus. Bei der Handtaste findet über einen Timer eine Entprellung statt. Mehr ...
 
void CheckButtons (void)
 Fragt die Taster ab und löst entsprechende Funktion aus. Mehr ...
 
void SetFrequency (uint16_t f)
 Verändert die Frequenz des Mithörtons. Mehr ...
 
+void DitDahBuffers (void)
 
void SetStandardMsg (void)
 Schreibt Standardnachrichten in den EEprom Speicher wenn dieses leer ist (nach dem Flashen des Controllers) Mehr ...
 
+void DahPaddle (void)
 
+void DitPaddle (void)
 
void ReadMsgEEprom (uint8_t i)
 Textspeicher aus EEprom lesen. Mehr ...
 
void SerialReceive (char c)
 Wird vom UART Interrupt aufgerufen, wenn ein Zeichen empfangen wurde. Mehr ...
 
void SerialReset (void)
 Löscht die Terminalanzeige und gibt Versionsinfo und Menue aus. Mehr ...
 
+ + + + + + + + + + + + + +

+Variablen

struct Config bConfig
 Struktur für die Einstellungen. Mehr ...
 
struct MenuCtrl bMenuCtrl
 Struktur für die Menuesteuerung. Mehr ...
 
struct State bState
 Struktur für den aktuellen Status. Mehr ...
 
struct Message bMessage
 Struktur für die 5 Textspeicher. Mehr ...
 
+

Ausführliche Beschreibung

+

BJ-Keyer.

+

@Author Tom, DL7BJ

+

Dokumentation der Funktionen

+ +

◆ CheckButtons()

+ +
+
+ + + + + + + + +
void CheckButtons (void )
+
+ +

Fragt die Taster ab und löst entsprechende Funktion aus.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ CheckDahPaddle()

+ +
+
+ + + + + + + + +
void CheckDahPaddle (void )
+
+ +

Prüfen, ob das Strich Paddle betätigt wurde.

+
    Ist dies der Fall, wird das Statusbit gesetzt. Wurde in den 
+    Einstellungen der Reverse Mode aktiviert, werden in der 
+    Abfrage die Paddle vertauscht.
+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ CheckDitPaddle()

+ +
+
+ + + + + + + + +
void CheckDitPaddle (void )
+
+ +

Prüfen, ob das Punkt Paddle betätigt wurde.

+
    Ist dies der Fall, wird das Statusbit gesetzt.Wurde in den 
+    Einstellungen der Reverse Mode aktiviert, werden in der 
+    Abfrage die Paddle vertauscht.
+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ CheckStraightKey()

+ +
+
+ + + + + + + + +
void CheckStraightKey (void )
+
+ +

Fragt die Handtasteneingänge ab und gibt das entsprechende Symbol aus. Bei der Handtaste findet über einen Timer eine Entprellung statt.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ Init()

+ +
+
+ + + + + + + + +
void Init (void )
+
+ +

Initialisierung aller Variablen, Timer.

+
Parameter
+ + +
none
+
+
+
Rückgabe
none
+ +
+
+ +

◆ InitTimer()

+ +
+
+ + + + + + + + +
void InitTimer (void )
+
+ +

Initialsieren der Timer.

+
    Alle Parameter der Timer basieren auf 16MHz Systemtakt.
+
+    Timer 0  - 8 Bit timer für 1ms
+    Timer 2  - 8 Bit timer für PWM zur Erzeugung des Sinustons
+    Timer 1A - 16 Bit timer zur Erzeugung der Hüllkurve 
+
Parameter
+ + +
none
+
+
+
Rückgabe
none
+

Timer 2 PWM

+

No prescaling

+

Clear OC2A on compare match

+

Fast PWM Mode

+

Initial value

+ +
+
+ +

◆ ReadMsgEEprom()

+ +
+
+ + + + + + + + +
void ReadMsgEEprom (uint8_t idx)
+
+ +

Textspeicher aus EEprom lesen.

+
Parameter
+ + +
Nummerdes Textspeichers
+
+
+
Rückgabe
none
+ +
+
+ +

◆ ReStart()

+ +
+
+ + + + + + + + +
void ReStart (void )
+
+ +

Initialisierung bei Reset und Power On.

+
Parameter
+ + +
none
+
+
+
Rückgabe
none
+ +
+
+ +

◆ SerialReceive()

+ +
+
+ + + + + + + + +
void SerialReceive (char c)
+
+ +

Wird vom UART Interrupt aufgerufen, wenn ein Zeichen empfangen wurde.

+
Parameter
+ + +
cZeichen, das empfangen wurde
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SerialReset()

+ +
+
+ + + + + + + + +
void SerialReset (void )
+
+ +

Löscht die Terminalanzeige und gibt Versionsinfo und Menue aus.

+
Parameter
+ + +
none
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SetFrequency()

+ +
+
+ + + + + + + + +
void SetFrequency (uint16_t f)
+
+ +

Verändert die Frequenz des Mithörtons.

+
    Durch die Anpassung des Timers 1 für das 
+    Laden der Werte der Sinuskurve wird die 
+    Tonhöhe des Mithörtons verändert.
+
Parameter
+ + +
fFrequenz des Mithörtons in Hz
+
+
+
Rückgabewerte
+ + +
none
+
+
+ +
+
+ +

◆ SetStandardMsg()

+ +
+
+ + + + + + + + +
SetStandardMsg (void )
+
+ +

Schreibt Standardnachrichten in den EEprom Speicher wenn dieses leer ist (nach dem Flashen des Controllers)

+
Parameter
+ + +
none
+
+
+
Rückgabe
none
+ +
+
+

Variablen-Dokumentation

+ +

◆ bConfig

+ +
+
+ + + + +
struct Config bConfig
+
+ +

Struktur für die Einstellungen.

+ +
+
+ +

◆ bMenuCtrl

+ +
+
+ + + + +
struct MenuCtrl bMenuCtrl
+
+ +

Struktur für die Menuesteuerung.

+ +
+
+ +

◆ bMessage

+ +
+
+ + + + +
struct Message bMessage
+
+ +

Struktur für die 5 Textspeicher.

+ +
+
+ +

◆ bState

+ +
+
+ + + + +
struct State bState
+
+ +

Struktur für den aktuellen Status.

+ +
+
+
+
+ + + + diff --git a/Documents/Doxygen/html/main_8h.js b/Documents/Doxygen/html/main_8h.js new file mode 100644 index 0000000..6aed065 --- /dev/null +++ b/Documents/Doxygen/html/main_8h.js @@ -0,0 +1,22 @@ +var main_8h = +[ + [ "CheckButtons", "main_8h.html#a4010a7257caeca55f68c98ee199d3ea2", null ], + [ "CheckDahPaddle", "main_8h.html#ac0bccd022514697217eaf063b1b2c0fa", null ], + [ "CheckDitPaddle", "main_8h.html#a7783dcd27ef486bce541c85e10131394", null ], + [ "CheckStraightKey", "main_8h.html#a68bed2cd125260e9c6eb7f6f8e0c9106", null ], + [ "DahPaddle", "main_8h.html#a4aa7787c88a378a1f9bc76fffd95caa9", null ], + [ "DitDahBuffers", "main_8h.html#a1b32c84d18fc1c6d87f27cb7cb4902ba", null ], + [ "DitPaddle", "main_8h.html#a0a924fe2c35e4222859b1a8e0f2a6df9", null ], + [ "Init", "main_8h.html#a7ce0a14b6e7779fbb2d9a05333792c41", null ], + [ "InitTimer", "main_8h.html#a4472695bac138b033a3d7fcd42dd3153", null ], + [ "ReadMsgEEprom", "main_8h.html#a8e9bfd3675045369fd2f33121ad25e8e", null ], + [ "ReStart", "main_8h.html#ab1f1ff64cfdd7f3c70e793afb9b0e3af", null ], + [ "SerialReceive", "main_8h.html#aed5211def004c592733d721fd1d6c186", null ], + [ "SerialReset", "main_8h.html#aa9e990762ad311b3582c6e7b0c4addf6", null ], + [ "SetFrequency", "main_8h.html#af3375f394993997701d75ee441810edc", null ], + [ "SetStandardMsg", "main_8h.html#a98a0b3effca8690570f5b21b4e4984f4", null ], + [ "bConfig", "main_8h.html#a8c3e2d3135447df0d9e7057fea4ff5b0", null ], + [ "bMenuCtrl", "main_8h.html#a885b2af021946a60a0bd2a271711c17a", null ], + [ "bMessage", "main_8h.html#a29b39b8616c75ea80051354a3a8593da", null ], + [ "bState", "main_8h.html#a44ef5c8aeac95b862dab43408c149f9a", null ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/main_8h__dep__incl.map b/Documents/Doxygen/html/main_8h__dep__incl.map new file mode 100644 index 0000000..144214d --- /dev/null +++ b/Documents/Doxygen/html/main_8h__dep__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Documents/Doxygen/html/main_8h__dep__incl.md5 b/Documents/Doxygen/html/main_8h__dep__incl.md5 new file mode 100644 index 0000000..0d83264 --- /dev/null +++ b/Documents/Doxygen/html/main_8h__dep__incl.md5 @@ -0,0 +1 @@ +9f62523699df35eab2ad3391994eb0e5 \ No newline at end of file diff --git a/Documents/Doxygen/html/main_8h__dep__incl.png b/Documents/Doxygen/html/main_8h__dep__incl.png new file mode 100644 index 0000000..cb458dd Binary files /dev/null and b/Documents/Doxygen/html/main_8h__dep__incl.png differ diff --git a/Documents/Doxygen/html/main_8h__incl.map b/Documents/Doxygen/html/main_8h__incl.map new file mode 100644 index 0000000..c667097 --- /dev/null +++ b/Documents/Doxygen/html/main_8h__incl.map @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Documents/Doxygen/html/main_8h__incl.md5 b/Documents/Doxygen/html/main_8h__incl.md5 new file mode 100644 index 0000000..55ede91 --- /dev/null +++ b/Documents/Doxygen/html/main_8h__incl.md5 @@ -0,0 +1 @@ +3f7598bf35bca4e9118fe5395a272d06 \ No newline at end of file diff --git a/Documents/Doxygen/html/main_8h__incl.png b/Documents/Doxygen/html/main_8h__incl.png new file mode 100644 index 0000000..d30ff51 Binary files /dev/null and b/Documents/Doxygen/html/main_8h__incl.png differ diff --git a/Documents/Doxygen/html/main_8h_source.html b/Documents/Doxygen/html/main_8h_source.html new file mode 100644 index 0000000..45a51a7 --- /dev/null +++ b/Documents/Doxygen/html/main_8h_source.html @@ -0,0 +1,158 @@ + + + + + + + +BJ-Keyer: main.h Quellcode + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BJ-Keyer +  1.03 +
+
Morsekeyer für 2 TRX und 6 Morsetasten
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
main.h
+
+
+gehe zur Dokumentation dieser Datei
1 
+
7 #ifndef MAIN_H_INCLUDED
+
8 #define MAIN_H_INCLUDED
+
9 
+
10 #include "globals.h"
+
11 #include "encoder.h"
+
12 #include "functions.h"
+
13 #include "controls.h"
+
14 #include "vt100.h"
+
15 
+
16 struct Config bConfig;
+
17 struct MenuCtrl bMenuCtrl;
+
18 struct State bState;
+
19 struct Message bMessage;
+
20 // Function prototypes
+
21 void Init(void);
+
22 void InitTimer(void);
+
23 void ReStart(void);
+
24 
+
25 extern void CheckDahPaddle(void);
+
26 extern void CheckDitPaddle(void);
+
27 extern void CheckStraightKey(void);
+
28 extern void CheckButtons(void);
+
29 extern void SetFrequency(uint16_t f);
+
30 extern void DitDahBuffers(void);
+
31 extern void SetStandardMsg(void);
+
32 extern void DahPaddle(void);
+
33 extern void DitPaddle(void);
+
34 extern void ReadMsgEEprom(uint8_t i);
+
35 extern void SerialReceive(char c);
+
36 extern void SerialReset(void);
+
37 #endif // BJ-KEYER_H_INCLUDED
+
Headerdatei für controls.c.
+
Headerdatei für functions.c.
+
Globale Variablen, Definitionen und Prototypen.
+
struct Message bMessage
Struktur für die 5 Textspeicher.
Definition: main.h:19
+
void CheckButtons(void)
Fragt die Taster ab und löst entsprechende Funktion aus.
Definition: functions.c:331
+
void InitTimer(void)
Initialsieren der Timer.
Definition: main.c:81
+
struct State bState
Struktur für den aktuellen Status.
Definition: main.h:18
+
void CheckStraightKey(void)
Fragt die Handtasteneingänge ab und gibt das entsprechende Symbol aus. Bei der Handtaste findet über ...
Definition: functions.c:403
+
void CheckDitPaddle(void)
Prüfen, ob das Punkt Paddle betätigt wurde.
Definition: functions.c:466
+
void Init(void)
Initialisierung aller Variablen, Timer.
Definition: main.c:124
+
struct MenuCtrl bMenuCtrl
Struktur für die Menuesteuerung.
Definition: main.h:17
+
struct Config bConfig
Struktur für die Einstellungen.
Definition: main.h:16
+
void ReadMsgEEprom(uint8_t i)
Textspeicher aus EEprom lesen.
Definition: memory.c:98
+
void SetStandardMsg(void)
Schreibt Standardnachrichten in den EEprom Speicher wenn dieses leer ist (nach dem Flashen des Contro...
Definition: memory.c:24
+
void SerialReset(void)
Löscht die Terminalanzeige und gibt Versionsinfo und Menue aus.
Definition: vt100.c:84
+
void ReStart(void)
Initialisierung bei Reset und Power On.
Definition: main.c:310
+
void CheckDahPaddle(void)
Prüfen, ob das Strich Paddle betätigt wurde.
Definition: functions.c:494
+
void SerialReceive(char c)
Wird vom UART Interrupt aufgerufen, wenn ein Zeichen empfangen wurde.
Definition: vt100.c:98
+
void SetFrequency(uint16_t f)
Verändert die Frequenz des Mithörtons.
Definition: functions.c:661
+
Definition: globals.h:151
+
Definition: globals.h:138
+
Definition: globals.h:172
+
Definition: globals.h:121
+
VT100 Terminal.
+
+
+ + + + diff --git a/Documents/Doxygen/html/menu.js b/Documents/Doxygen/html/menu.js new file mode 100644 index 0000000..2fe2214 --- /dev/null +++ b/Documents/Doxygen/html/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/Documents/Doxygen/html/menudata.js b/Documents/Doxygen/html/menudata.js new file mode 100644 index 0000000..3036899 --- /dev/null +++ b/Documents/Doxygen/html/menudata.js @@ -0,0 +1,110 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Hauptseite",url:"index.html"}, +{text:"Zusätzliche Informationen",url:"pages.html"}, +{text:"Datenstrukturen",url:"annotated.html",children:[ +{text:"Datenstrukturen",url:"annotated.html"}, +{text:"Datenstruktur-Verzeichnis",url:"classes.html"}, +{text:"Datenstruktur-Elemente",url:"functions.html",children:[ +{text:"Alle",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions.html#index_b"}, +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"k",url:"functions.html#index_k"}, +{text:"l",url:"functions.html#index_l"}, +{text:"m",url:"functions.html#index_m"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"u",url:"functions.html#index_u"}, +{text:"w",url:"functions.html#index_w"}]}, +{text:"Variablen",url:"functions_vars.html",children:[ +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars.html#index_b"}, +{text:"c",url:"functions_vars.html#index_c"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"k",url:"functions_vars.html#index_k"}, +{text:"l",url:"functions_vars.html#index_l"}, +{text:"m",url:"functions_vars.html#index_m"}, +{text:"r",url:"functions_vars.html#index_r"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"t",url:"functions_vars.html#index_t"}, +{text:"u",url:"functions_vars.html#index_u"}, +{text:"w",url:"functions_vars.html#index_w"}]}]}]}, +{text:"Dateien",url:"files.html",children:[ +{text:"Auflistung der Dateien",url:"files.html"}, +{text:"Globale Elemente",url:"globals.html",children:[ +{text:"Alle",url:"globals.html",children:[ +{text:"a",url:"globals.html#index_a"}, +{text:"b",url:"globals.html#index_b"}, +{text:"c",url:"globals.html#index_c"}, +{text:"d",url:"globals.html#index_d"}, +{text:"e",url:"globals.html#index_e"}, +{text:"g",url:"globals.html#index_g"}, +{text:"h",url:"globals.html#index_h"}, +{text:"i",url:"globals.html#index_i"}, +{text:"k",url:"globals.html#index_k"}, +{text:"l",url:"globals.html#index_l"}, +{text:"m",url:"globals.html#index_m"}, +{text:"n",url:"globals.html#index_n"}, +{text:"p",url:"globals.html#index_p"}, +{text:"r",url:"globals.html#index_r"}, +{text:"s",url:"globals.html#index_s"}, +{text:"t",url:"globals.html#index_t"}, +{text:"u",url:"globals.html#index_u"}, +{text:"w",url:"globals.html#index_w"}, +{text:"y",url:"globals.html#index_y"}]}, +{text:"Funktionen",url:"globals_func.html",children:[ +{text:"b",url:"globals_func.html#index_b"}, +{text:"c",url:"globals_func.html#index_c"}, +{text:"d",url:"globals_func.html#index_d"}, +{text:"e",url:"globals_func.html#index_e"}, +{text:"g",url:"globals_func.html#index_g"}, +{text:"i",url:"globals_func.html#index_i"}, +{text:"r",url:"globals_func.html#index_r"}, +{text:"s",url:"globals_func.html#index_s"}, +{text:"t",url:"globals_func.html#index_t"}, +{text:"u",url:"globals_func.html#index_u"}, +{text:"w",url:"globals_func.html#index_w"}]}, +{text:"Variablen",url:"globals_vars.html",children:[ +{text:"b",url:"globals_vars.html#index_b"}, +{text:"d",url:"globals_vars.html#index_d"}, +{text:"e",url:"globals_vars.html#index_e"}, +{text:"h",url:"globals_vars.html#index_h"}, +{text:"i",url:"globals_vars.html#index_i"}, +{text:"k",url:"globals_vars.html#index_k"}, +{text:"l",url:"globals_vars.html#index_l"}, +{text:"m",url:"globals_vars.html#index_m"}, +{text:"n",url:"globals_vars.html#index_n"}, +{text:"p",url:"globals_vars.html#index_p"}, +{text:"r",url:"globals_vars.html#index_r"}, +{text:"s",url:"globals_vars.html#index_s"}, +{text:"t",url:"globals_vars.html#index_t"}, +{text:"u",url:"globals_vars.html#index_u"}, +{text:"w",url:"globals_vars.html#index_w"}, +{text:"y",url:"globals_vars.html#index_y"}]}, +{text:"Makrodefinitionen",url:"globals_defs.html"}]}]}]} diff --git a/Documents/Doxygen/html/nav_f.png b/Documents/Doxygen/html/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/Documents/Doxygen/html/nav_f.png differ diff --git a/Documents/Doxygen/html/nav_g.png b/Documents/Doxygen/html/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/Documents/Doxygen/html/nav_g.png differ diff --git a/Documents/Doxygen/html/nav_h.png b/Documents/Doxygen/html/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/Documents/Doxygen/html/nav_h.png differ diff --git a/Documents/Doxygen/html/navtree.css b/Documents/Doxygen/html/navtree.css new file mode 100644 index 0000000..33341a6 --- /dev/null +++ b/Documents/Doxygen/html/navtree.css @@ -0,0 +1,146 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 250px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url("splitbar.png"); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/Documents/Doxygen/html/navtree.js b/Documents/Doxygen/html/navtree.js new file mode 100644 index 0000000..1e272d3 --- /dev/null +++ b/Documents/Doxygen/html/navtree.js @@ -0,0 +1,546 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + +BJ-Keyer: Zusätzliche Informationen + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    BJ-Keyer +  1.03 +
    +
    Morsekeyer für 2 TRX und 6 Morsetasten
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Zusätzliche Informationen
    +
    +
    +
    Hier folgt eine Liste mit zusammengehörigen Themengebieten:
    +
    +
    + + + + diff --git a/Documents/Doxygen/html/resize.js b/Documents/Doxygen/html/resize.js new file mode 100644 index 0000000..e1ad0fe --- /dev/null +++ b/Documents/Doxygen/html/resize.js @@ -0,0 +1,140 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/Documents/Doxygen/html/search/all_0.html b/Documents/Doxygen/html/search/all_0.html new file mode 100644 index 0000000..cca1bd9 --- /dev/null +++ b/Documents/Doxygen/html/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_0.js b/Documents/Doxygen/html/search/all_0.js new file mode 100644 index 0000000..c7830d7 --- /dev/null +++ b/Documents/Doxygen/html/search/all_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['ausstehende_20aufgaben_0',['Ausstehende Aufgaben',['../todo.html',1,'']]], + ['auto_1',['AUTO',['../globals_8h.html#a0cc6f7717df9fbdc0f33efb88720a639',1,'globals.h']]], + ['automatic_2',['Automatic',['../structState.html#a77084e27de545c8c9326e317a8c1edff',1,'State']]] +]; diff --git a/Documents/Doxygen/html/search/all_1.html b/Documents/Doxygen/html/search/all_1.html new file mode 100644 index 0000000..17661d6 --- /dev/null +++ b/Documents/Doxygen/html/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_1.js b/Documents/Doxygen/html/search/all_1.js new file mode 100644 index 0000000..ed26327 --- /dev/null +++ b/Documents/Doxygen/html/search/all_1.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['bconfig_3',['bConfig',['../controls_8h.html#a8c3e2d3135447df0d9e7057fea4ff5b0',1,'bConfig(): main.h'],['../main_8h.html#a8c3e2d3135447df0d9e7057fea4ff5b0',1,'bConfig(): main.h']]], + ['beep_4',['Beep',['../controls_8h.html#a2f616a93763b4bc437c4311d653c0491',1,'Beep(void): functions.c'],['../functions_8c.html#a2f616a93763b4bc437c4311d653c0491',1,'Beep(void): functions.c'],['../functions_8h.html#a2f616a93763b4bc437c4311d653c0491',1,'Beep(void): functions.c']]], + ['beepboop_5',['BeepBoop',['../functions_8c.html#a72913eefa74c0c044d815a0b759577fa',1,'BeepBoop(void): functions.c'],['../functions_8h.html#a72913eefa74c0c044d815a0b759577fa',1,'BeepBoop(void): functions.c']]], + ['bmenuctrl_6',['bMenuCtrl',['../controls_8h.html#a885b2af021946a60a0bd2a271711c17a',1,'bMenuCtrl(): main.h'],['../main_8h.html#a885b2af021946a60a0bd2a271711c17a',1,'bMenuCtrl(): main.h']]], + ['bmessage_7',['bMessage',['../main_8h.html#a29b39b8616c75ea80051354a3a8593da',1,'main.h']]], + ['boop_8',['Boop',['../controls_8h.html#a0366eaeb4aab61562dcd5b24994d0103',1,'Boop(void): functions.c'],['../functions_8c.html#a0366eaeb4aab61562dcd5b24994d0103',1,'Boop(void): functions.c'],['../functions_8h.html#a0366eaeb4aab61562dcd5b24994d0103',1,'Boop(void): functions.c']]], + ['bstate_9',['bState',['../main_8h.html#a44ef5c8aeac95b862dab43408c149f9a',1,'bState(): main.h'],['../controls_8h.html#a44ef5c8aeac95b862dab43408c149f9a',1,'bState(): main.h']]], + ['buttonpressed_10',['buttonPressed',['../structMenuCtrl.html#aee5679939884de604d3e5ad970ec0cbb',1,'MenuCtrl']]], + ['buttonpressedlong_11',['buttonPressedLong',['../structMenuCtrl.html#a45ed8ad2a9ae8803b446e599fb66fa78',1,'MenuCtrl']]] +]; diff --git a/Documents/Doxygen/html/search/all_10.html b/Documents/Doxygen/html/search/all_10.html new file mode 100644 index 0000000..e60bf3f --- /dev/null +++ b/Documents/Doxygen/html/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_10.js b/Documents/Doxygen/html/search/all_10.js new file mode 100644 index 0000000..aa59bc8 --- /dev/null +++ b/Documents/Doxygen/html/search/all_10.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['t_5fdelayms_144',['t_delayms',['../globals_8h.html#a4a4d36a87b010340a12f80300a0c5f76',1,'globals.h']]], + ['t_5felementlength_145',['t_elementlength',['../globals_8h.html#a8a613665f46a0641e6dc293da130ab23',1,'globals.h']]], + ['timerbuttonpressed_146',['TimerButtonPressed',['../globals_8h.html#a926757eaf37be188fd6e15410d83c953',1,'globals.h']]], + ['timerpaddledahkeypressed_147',['TimerPaddleDahKeyPressed',['../globals_8h.html#a57e73db78b59b4d79e72189fb0158f7a',1,'globals.h']]], + ['timerpaddleditkeypressed_148',['TimerPaddleDitKeyPressed',['../globals_8h.html#a170fcf4ece2368541f1bcb04a3dd1511',1,'globals.h']]], + ['timerstraightkeypressed_149',['TimerStraightKeyPressed',['../globals_8h.html#a0ca92f009021ed55c2f9199cf5bf80c3',1,'globals.h']]], + ['ton_150',['Ton',['../controls_8c.html#a5d84b58ef20baadc27efb09bca3d8d98',1,'controls.c']]], + ['tonan_151',['TonAn',['../controls_8c.html#a8a6e687fe4fb9e5aea3ac1e69b599330',1,'controls.c']]], + ['tonaus_152',['TonAus',['../controls_8c.html#ab1d7bb6c3e5c9967ffc4668fafb03c4f',1,'controls.c']]], + ['tone_153',['Tone',['../controls_8h.html#a378d56bf0e68310b700bd4dbdc652803',1,'Tone(uint16_t f, uint8_t t): functions.c'],['../functions_8c.html#a859cf4a556750b8aa340761627fb6c42',1,'Tone(uint16_t f, uint8_t duration): functions.c'],['../functions_8h.html#a859cf4a556750b8aa340761627fb6c42',1,'Tone(uint16_t f, uint8_t duration): functions.c']]], + ['trx1_154',['Trx1',['../structConfig.html#a69e7d809f90ded45fed3d7511f5145dd',1,'Config']]], + ['trx2_155',['Trx2',['../structConfig.html#a4401df925b1dc135a26043c0809db461',1,'Config']]], + ['txkey_156',['TXKey',['../functions_8c.html#aafcd99a76b601d8b43b6827d414ccddb',1,'functions.c']]] +]; diff --git a/Documents/Doxygen/html/search/all_11.html b/Documents/Doxygen/html/search/all_11.html new file mode 100644 index 0000000..894f67b --- /dev/null +++ b/Documents/Doxygen/html/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_11.js b/Documents/Doxygen/html/search/all_11.js new file mode 100644 index 0000000..4f17248 --- /dev/null +++ b/Documents/Doxygen/html/search/all_11.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['ultimatic_157',['Ultimatic',['../controls_8c.html#a3dc8c998dd6a5d1d71831a7fd8fa1ee7',1,'controls.c']]], + ['update_158',['Update',['../structMenuCtrl.html#ab5689421bcc8b519acde95507a30261d',1,'MenuCtrl']]], + ['updatedisplay_159',['UpdateDisplay',['../controls_8c.html#ace58ee95637a8f220527dc8b20dbb662',1,'UpdateDisplay(void): controls.c'],['../controls_8h.html#ace58ee95637a8f220527dc8b20dbb662',1,'UpdateDisplay(void): controls.c']]] +]; diff --git a/Documents/Doxygen/html/search/all_12.html b/Documents/Doxygen/html/search/all_12.html new file mode 100644 index 0000000..5eaba33 --- /dev/null +++ b/Documents/Doxygen/html/search/all_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_12.js b/Documents/Doxygen/html/search/all_12.js new file mode 100644 index 0000000..db4b712 --- /dev/null +++ b/Documents/Doxygen/html/search/all_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vt100_2ec_160',['vt100.c',['../vt100_8c.html',1,'']]], + ['vt100_2eh_161',['vt100.h',['../vt100_8h.html',1,'']]] +]; diff --git a/Documents/Doxygen/html/search/all_13.html b/Documents/Doxygen/html/search/all_13.html new file mode 100644 index 0000000..cf06058 --- /dev/null +++ b/Documents/Doxygen/html/search/all_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_13.js b/Documents/Doxygen/html/search/all_13.js new file mode 100644 index 0000000..d1530c7 --- /dev/null +++ b/Documents/Doxygen/html/search/all_13.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['weight_162',['Weight',['../structConfig.html#ace909792695e3949303df7fc26668739',1,'Config::Weight()'],['../controls_8c.html#abf38c2d2e8e887110f9092afbc1f9ff6',1,'Weight(): controls.c']]], + ['wpm_163',['WpM',['../structConfig.html#ad897d01be9484ac915e8d545c5937e16',1,'Config::WpM()'],['../controls_8h.html#a28fa6cb1767abefbe9c197700410d946',1,'WpM(): globals.h'],['../globals_8h.html#a28fa6cb1767abefbe9c197700410d946',1,'WpM(): globals.h']]], + ['wpmbpm_164',['WpMBpM',['../structConfig.html#a663b40e9d018ada8d4b6b97b4b2f5be0',1,'Config']]], + ['wpmchanged_165',['WpMChanged',['../structState.html#a52ffc38efd1a9798d8d92014fe664e62',1,'State']]], + ['writeeeprom_166',['WriteEEprom',['../structState.html#a0589ba8e59b2a9a246ce8d14f783577b',1,'State::WriteEEprom()'],['../controls_8h.html#a586bc00ad3164def7ec76ac9bda4f1bc',1,'WriteEEprom(void): functions.c'],['../functions_8c.html#a586bc00ad3164def7ec76ac9bda4f1bc',1,'WriteEEprom(void): functions.c'],['../functions_8h.html#a586bc00ad3164def7ec76ac9bda4f1bc',1,'WriteEEprom(void): functions.c']]], + ['writeeepromwpm_167',['WriteEEpromWpM',['../functions_8c.html#a838ffc3ce94fc8c85429e5297a185022',1,'WriteEEpromWpM(void): functions.c'],['../functions_8h.html#a838ffc3ce94fc8c85429e5297a185022',1,'WriteEEpromWpM(void): functions.c']]], + ['writemsgeeprom_168',['WriteMsgEEprom',['../structState.html#acbc62fb74e564116927efe2f2147b8b9',1,'State::WriteMsgEEprom()'],['../vt100_8h.html#a77266197e015c3320c0aa4f491101903',1,'WriteMsgEEprom(): memory.c']]], + ['writewpmeeprom_169',['WriteWpMEEprom',['../structState.html#a0213cd5057520f3b652f3755dcdc0e70',1,'State']]] +]; diff --git a/Documents/Doxygen/html/search/all_14.html b/Documents/Doxygen/html/search/all_14.html new file mode 100644 index 0000000..2e491ce --- /dev/null +++ b/Documents/Doxygen/html/search/all_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_14.js b/Documents/Doxygen/html/search/all_14.js new file mode 100644 index 0000000..546f03e --- /dev/null +++ b/Documents/Doxygen/html/search/all_14.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['yes_170',['Yes',['../controls_8c.html#a3e1e7c928529ce5b265eb617b0e4e4b8',1,'controls.c']]] +]; diff --git a/Documents/Doxygen/html/search/all_2.html b/Documents/Doxygen/html/search/all_2.html new file mode 100644 index 0000000..0c78c72 --- /dev/null +++ b/Documents/Doxygen/html/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_2.js b/Documents/Doxygen/html/search/all_2.js new file mode 100644 index 0000000..f87fa7c --- /dev/null +++ b/Documents/Doxygen/html/search/all_2.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['checkbuttons_12',['CheckButtons',['../functions_8c.html#a4010a7257caeca55f68c98ee199d3ea2',1,'CheckButtons(void): functions.c'],['../main_8h.html#a4010a7257caeca55f68c98ee199d3ea2',1,'CheckButtons(void): functions.c']]], + ['checkdahpaddle_13',['CheckDahPaddle',['../functions_8c.html#ac0bccd022514697217eaf063b1b2c0fa',1,'CheckDahPaddle(void): functions.c'],['../main_8h.html#ac0bccd022514697217eaf063b1b2c0fa',1,'CheckDahPaddle(void): functions.c']]], + ['checkditpaddle_14',['CheckDitPaddle',['../functions_8c.html#a7783dcd27ef486bce541c85e10131394',1,'CheckDitPaddle(void): functions.c'],['../main_8h.html#a7783dcd27ef486bce541c85e10131394',1,'CheckDitPaddle(void): functions.c']]], + ['checkpaddles_15',['CheckPaddles',['../functions_8c.html#a9bd61bc3c9e38f6b325e4ba3f96d9472',1,'CheckPaddles(void): functions.c'],['../functions_8h.html#a9bd61bc3c9e38f6b325e4ba3f96d9472',1,'CheckPaddles(void): functions.c']]], + ['checkstraightkey_16',['CheckStraightKey',['../functions_8c.html#a68bed2cd125260e9c6eb7f6f8e0c9106',1,'CheckStraightKey(void): functions.c'],['../main_8h.html#a68bed2cd125260e9c6eb7f6f8e0c9106',1,'CheckStraightKey(void): functions.c']]], + ['clearline_17',['CLEARLINE',['../globals_8h.html#ae39a97a19b2e372929dabdc0e3822910',1,'globals.h']]], + ['clrscr_18',['ClrScr',['../structMenuCtrl.html#ad890262e118180236b9eb54f7611b47c',1,'MenuCtrl']]], + ['config_19',['Config',['../structConfig.html',1,'Config'],['../structMenuCtrl.html#a47430d7c1484d7e5e18ae5a7fc4f8335',1,'MenuCtrl::Config()']]], + ['configmenue_20',['ConfigMenue',['../controls_8h.html#a582148370499a6b91171ed6134cc7041',1,'ConfigMenue(void): controls.c'],['../controls_8c.html#a582148370499a6b91171ed6134cc7041',1,'ConfigMenue(void): controls.c']]], + ['controls_2ec_21',['controls.c',['../controls_8c.html',1,'']]], + ['controls_2eh_22',['controls.h',['../controls_8h.html',1,'']]], + ['curmenue_23',['CurMenue',['../structMenuCtrl.html#a458df051e05029982d088d98ac1a8069',1,'MenuCtrl']]] +]; diff --git a/Documents/Doxygen/html/search/all_3.html b/Documents/Doxygen/html/search/all_3.html new file mode 100644 index 0000000..d2c67fc --- /dev/null +++ b/Documents/Doxygen/html/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_3.js b/Documents/Doxygen/html/search/all_3.js new file mode 100644 index 0000000..0855c69 --- /dev/null +++ b/Documents/Doxygen/html/search/all_3.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['dahmillis_24',['DahMillis',['../globals_8h.html#ad4e6326c3ab1d15391fcc416ff86c436',1,'globals.h']]], + ['dahpressed_25',['DahPressed',['../structState.html#a76bff5a7c3dd312851c50afccd017b33',1,'State']]], + ['debouncetime_26',['DebounceTime',['../structConfig.html#ace4e1403e52d3d19aa9f2470a13cfaa3',1,'Config::DebounceTime()'],['../controls_8c.html#a14d2686ee95132d4d7c740d23f38677b',1,'DebounceTime(): controls.c']]], + ['delaymilliseconds_27',['DelayMilliSeconds',['../controls_8h.html#a4e03330a0d63dbc5c8c0ce8a3ba10ff7',1,'DelayMilliSeconds(uint16_t t): functions.c'],['../functions_8c.html#ada3125b546b3115e7afc2e51bc7db894',1,'DelayMilliSeconds(uint16_t ms): functions.c'],['../functions_8h.html#ada3125b546b3115e7afc2e51bc7db894',1,'DelayMilliSeconds(uint16_t ms): functions.c']]], + ['displayversion_28',['DisplayVersion',['../controls_8c.html#a9dec45875121142b6466b9475691b40a',1,'DisplayVersion(void): controls.c'],['../controls_8h.html#a9dec45875121142b6466b9475691b40a',1,'DisplayVersion(void): controls.c']]], + ['ditmillis_29',['DitMillis',['../globals_8h.html#a2f7701e9783a70804580512902c10ee7',1,'globals.h']]], + ['ditpressed_30',['DitPressed',['../structState.html#a0e3dcd5d2b54a5256fd71a1d956a2a0d',1,'State']]], + ['drehencoder_31',['Drehencoder',['../controls_8c.html#aaf6c1bd6cb225efe37f9762de8a0c3d1',1,'Drehencoder(void): controls.c'],['../controls_8h.html#ac6dc8b683fdf1a5fc24b2a509279f887',1,'Drehencoder(void): controls.c']]] +]; diff --git a/Documents/Doxygen/html/search/all_4.html b/Documents/Doxygen/html/search/all_4.html new file mode 100644 index 0000000..31a74c2 --- /dev/null +++ b/Documents/Doxygen/html/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_4.js b/Documents/Doxygen/html/search/all_4.js new file mode 100644 index 0000000..59089e1 --- /dev/null +++ b/Documents/Doxygen/html/search/all_4.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['ee_5fdebouncetime_32',['ee_DebounceTime',['../functions_8c.html#af46a7ac73709b59ac331e84016c6600f',1,'functions.c']]], + ['ee_5fdummy_33',['ee_Dummy',['../functions_8c.html#a42f0b8f91ce6b2a23dd6ff8672d13b95',1,'functions.c']]], + ['ee_5fkeyermode_34',['ee_KeyerMode',['../functions_8c.html#a169f1099862f2dc874d344eb240fd8c2',1,'functions.c']]], + ['ee_5fmembuttonmode_35',['ee_MemButtonMode',['../functions_8c.html#a3f1e9ffbb5d98febdd58a4fa82b01f30',1,'functions.c']]], + ['ee_5fmemory_36',['ee_Memory',['../functions_8c.html#a5f69205a6897625598ead5ab6a740fc7',1,'functions.c']]], + ['ee_5fratio_37',['ee_Ratio',['../functions_8c.html#a8814741a33f0a4f2e14eee14d8c00dad',1,'functions.c']]], + ['ee_5freverse_38',['ee_Reverse',['../functions_8c.html#ad5a1c7f3fe4cc3af1873519f70586866',1,'functions.c']]], + ['ee_5frisetime_39',['ee_RiseTime',['../functions_8c.html#acde6a28c5a5747443f823ff09dce682b',1,'functions.c']]], + ['ee_5frisetimecounter_40',['ee_RiseTimeCounter',['../functions_8c.html#a138d8a4a73593b01e9ffdfebc7134c89',1,'functions.c']]], + ['ee_5fsidetoneenabled_41',['ee_SidetoneEnabled',['../functions_8c.html#a8f9b2a72d7b1d5f1c28673c36a51a33a',1,'functions.c']]], + ['ee_5fsidetonefreq_42',['ee_SidetoneFreq',['../functions_8c.html#a025c31b4a3c9adca80df2782808579a7',1,'functions.c']]], + ['ee_5ftrx1_43',['ee_Trx1',['../functions_8c.html#a1c70858b9aea8006017b70d201604a96',1,'functions.c']]], + ['ee_5ftrx2_44',['ee_Trx2',['../functions_8c.html#a6f6cc3866f25698f6f9185e422ce7b8c',1,'functions.c']]], + ['ee_5fweight_45',['ee_Weight',['../functions_8c.html#ac8f8c751bbe43f711df2e1ba13f79994',1,'functions.c']]], + ['ee_5fwpm_46',['ee_WpM',['../functions_8c.html#af636ee63fad94f56f61f334e0c2e46b0',1,'functions.c']]], + ['ee_5fwpmbpm_47',['ee_WpMBpM',['../functions_8c.html#a7c955b77d04539b88678e94d72deeef0',1,'functions.c']]], + ['einstellungen_48',['Einstellungen',['../controls_8c.html#a3776d070bf17ce9a6dca80728d44a800',1,'controls.c']]], + ['encoder_2ec_49',['encoder.c',['../encoder_8c.html',1,'']]], + ['encodercounter_50',['EncoderCounter',['../globals_8h.html#a426d3fb4cd1535f9e7616df2601f4ddc',1,'globals.h']]], + ['encoderpolling_51',['EncoderPolling',['../encoder_8c.html#a660e5b11dce82f5b307f628def81d188',1,'encoder.c']]], + ['encoderpos_52',['EncoderPos',['../globals_8h.html#a3a1db669858552a5c21490149c648e12',1,'globals.h']]], + ['encoderposconfig_53',['EncoderPosConfig',['../globals_8h.html#a2b61ba3fb70419b8b5151d7216f6ab87',1,'globals.h']]], + ['encoderpossubconfig_54',['EncoderPosSubConfig',['../globals_8h.html#a2afbcb36398df196b3205ab28f612edf',1,'globals.h']]], + ['encodertimer_55',['EncoderTimer',['../globals_8h.html#a1756e538888c2c722809420489b62a53',1,'globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/all_5.html b/Documents/Doxygen/html/search/all_5.html new file mode 100644 index 0000000..a8e5d1c --- /dev/null +++ b/Documents/Doxygen/html/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_5.js b/Documents/Doxygen/html/search/all_5.js new file mode 100644 index 0000000..32b720d --- /dev/null +++ b/Documents/Doxygen/html/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['functions_2ec_56',['functions.c',['../functions_8c.html',1,'']]], + ['functions_2eh_57',['functions.h',['../functions_8h.html',1,'']]] +]; diff --git a/Documents/Doxygen/html/search/all_6.html b/Documents/Doxygen/html/search/all_6.html new file mode 100644 index 0000000..e7a9df1 --- /dev/null +++ b/Documents/Doxygen/html/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_6.js b/Documents/Doxygen/html/search/all_6.js new file mode 100644 index 0000000..6db5769 --- /dev/null +++ b/Documents/Doxygen/html/search/all_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['getmilliseconds_58',['GetMilliSeconds',['../functions_8c.html#a682e380769f82867a41c13d632bb3cca',1,'GetMilliSeconds(void): functions.c'],['../functions_8h.html#a682e380769f82867a41c13d632bb3cca',1,'GetMilliSeconds(void): functions.c']]], + ['globals_2eh_59',['globals.h',['../globals_8h.html',1,'']]] +]; diff --git a/Documents/Doxygen/html/search/all_7.html b/Documents/Doxygen/html/search/all_7.html new file mode 100644 index 0000000..a29a875 --- /dev/null +++ b/Documents/Doxygen/html/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_7.js b/Documents/Doxygen/html/search/all_7.js new file mode 100644 index 0000000..fb283d8 --- /dev/null +++ b/Documents/Doxygen/html/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hz_60',['Hz',['../controls_8c.html#ac7c916eae39a6ea3de6c5e47cda3700e',1,'controls.c']]] +]; diff --git a/Documents/Doxygen/html/search/all_8.html b/Documents/Doxygen/html/search/all_8.html new file mode 100644 index 0000000..b75873e --- /dev/null +++ b/Documents/Doxygen/html/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_8.js b/Documents/Doxygen/html/search/all_8.js new file mode 100644 index 0000000..350d3df --- /dev/null +++ b/Documents/Doxygen/html/search/all_8.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['iambica_61',['IambicA',['../controls_8c.html#a3cf9a4ac7c32126e64feeb09468c4f16',1,'controls.c']]], + ['iambicb_62',['IambicB',['../controls_8c.html#a204380c13e522446a26c5becb474d872',1,'controls.c']]], + ['init_63',['Init',['../main_8h.html#a7ce0a14b6e7779fbb2d9a05333792c41',1,'main.c']]], + ['inittimer_64',['InitTimer',['../main_8h.html#a4472695bac138b033a3d7fcd42dd3153',1,'main.c']]], + ['intdisable_65',['IntDisable',['../functions_8c.html#ae2f4a274ba95c3e94edd58ce6f129de4',1,'IntDisable(void): functions.c'],['../functions_8h.html#ae2f4a274ba95c3e94edd58ce6f129de4',1,'IntDisable(void): functions.c']]], + ['intenable_66',['IntEnable',['../functions_8c.html#ab321d23dfab578b6a40f3c5e8894c280',1,'IntEnable(void): functions.c'],['../functions_8h.html#ab321d23dfab578b6a40f3c5e8894c280',1,'IntEnable(void): functions.c']]] +]; diff --git a/Documents/Doxygen/html/search/all_9.html b/Documents/Doxygen/html/search/all_9.html new file mode 100644 index 0000000..846ea1f --- /dev/null +++ b/Documents/Doxygen/html/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_9.js b/Documents/Doxygen/html/search/all_9.js new file mode 100644 index 0000000..4170632 --- /dev/null +++ b/Documents/Doxygen/html/search/all_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['keyermode_67',['KeyerMode',['../structConfig.html#aef4f69db097a750c80f3b719bc14f341',1,'Config::KeyerMode()'],['../globals_8h.html#a9a19b6437a6a56a5855dd3488c6428f8',1,'KeyerMode(): globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/all_a.html b/Documents/Doxygen/html/search/all_a.html new file mode 100644 index 0000000..5958fcf --- /dev/null +++ b/Documents/Doxygen/html/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_a.js b/Documents/Doxygen/html/search/all_a.js new file mode 100644 index 0000000..598a884 --- /dev/null +++ b/Documents/Doxygen/html/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['lastbutton_68',['lastButton',['../globals_8h.html#acee5a37cadaac095a39a4ae4d033df7d',1,'globals.h']]], + ['lastsymbolwasdit_69',['LastSymbolWasDit',['../structState.html#a0b10c2ed83f730ab25f808ca4159e0a1',1,'State']]], + ['left_5fpaddle_70',['LEFT_PADDLE',['../globals_8h.html#a8f0a217b99055286939b536efe9516f1',1,'globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/all_b.html b/Documents/Doxygen/html/search/all_b.html new file mode 100644 index 0000000..43be02f --- /dev/null +++ b/Documents/Doxygen/html/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_b.js b/Documents/Doxygen/html/search/all_b.js new file mode 100644 index 0000000..1811575 --- /dev/null +++ b/Documents/Doxygen/html/search/all_b.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['m_5fbuttonpressed_71',['m_buttonPressed',['../structMenuCtrl.html#ac934eaf7540f23d8f603938031f95e10',1,'MenuCtrl']]], + ['m_5fbuttonpressedlong_72',['m_buttonPressedLong',['../structMenuCtrl.html#a143a285e1e4805feb057173b9116dcd0',1,'MenuCtrl']]], + ['main_2eh_73',['main.h',['../main_8h.html',1,'']]], + ['meman_74',['MemAn',['../controls_8c.html#a1c5d85aa97ec15c2308e5c688d8d297c',1,'controls.c']]], + ['memaus_75',['MemAus',['../controls_8c.html#ae3163144fae43c843de52bb19a73fc4c',1,'controls.c']]], + ['membuttonmode_76',['MemButtonMode',['../structConfig.html#adfbadb3847cb30d90b89f2db5b4850e4',1,'Config']]], + ['memory_77',['Memory',['../structConfig.html#a471840b99ff046bf1404f8640a8193a8',1,'Config::Memory()'],['../controls_8c.html#ab89e4faa251feb81fa4cc7d9de2e3fcd',1,'Memory(): controls.c']]], + ['menuctrl_78',['MenuCtrl',['../structMenuCtrl.html',1,'']]], + ['menuctrltimer_79',['MenuCtrlTimer',['../globals_8h.html#a088c685d08447f6614b3aea76cd94582',1,'MenuCtrlTimer(): globals.h'],['../controls_8h.html#a088c685d08447f6614b3aea76cd94582',1,'MenuCtrlTimer(): globals.h']]], + ['message_80',['Message',['../structMessage.html',1,'']]], + ['msg1_81',['Msg1',['../structMessage.html#ab381872a2fb6867d57478a88a760bf02',1,'Message']]], + ['msg2_82',['Msg2',['../structMessage.html#ac49356fe1ae9961bfa1dbe49f043f6f6',1,'Message']]], + ['msg3_83',['Msg3',['../structMessage.html#a1c740c8f5879720483a483c36656e3f8',1,'Message']]], + ['msg4_84',['Msg4',['../structMessage.html#aca26aa7f7c5432ceef8aabd2711b8f47',1,'Message']]], + ['msg5_85',['Msg5',['../structMessage.html#a47e9ec3da93b993528f717ecf67c88c0',1,'Message']]], + ['msgsize_86',['MSGSIZE',['../globals_8h.html#a57332b76331a1bbe1d6807ddbb6d0522',1,'globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/all_c.html b/Documents/Doxygen/html/search/all_c.html new file mode 100644 index 0000000..e617e30 --- /dev/null +++ b/Documents/Doxygen/html/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_c.js b/Documents/Doxygen/html/search/all_c.js new file mode 100644 index 0000000..463233f --- /dev/null +++ b/Documents/Doxygen/html/search/all_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['no_87',['No',['../controls_8c.html#a52e48eafec4559dcc5fa997a3781e4c5',1,'controls.c']]], + ['nothing_88',['NOTHING',['../globals_8h.html#aad4a7ebff687dc5228cc3fd4d25067f2',1,'globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/all_d.html b/Documents/Doxygen/html/search/all_d.html new file mode 100644 index 0000000..e7317d5 --- /dev/null +++ b/Documents/Doxygen/html/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_d.js b/Documents/Doxygen/html/search/all_d.js new file mode 100644 index 0000000..5e6e0e7 --- /dev/null +++ b/Documents/Doxygen/html/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['paddle_5fnormal_89',['PADDLE_NORMAL',['../globals_8h.html#a0f491a526845fa7f262309a82a0d7190',1,'globals.h']]], + ['paddlemode_90',['PaddleMode',['../globals_8h.html#ad7f78d2aebfab57b15aa5bf6e28d8723',1,'globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/all_e.html b/Documents/Doxygen/html/search/all_e.html new file mode 100644 index 0000000..5d87f84 --- /dev/null +++ b/Documents/Doxygen/html/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_e.js b/Documents/Doxygen/html/search/all_e.js new file mode 100644 index 0000000..024b7fa --- /dev/null +++ b/Documents/Doxygen/html/search/all_e.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['ratio_91',['Ratio',['../structConfig.html#ac8db90b71b36d0a49ef231e68fb42797',1,'Config::Ratio()'],['../controls_8c.html#aafb08180dd6b40c7ceb1f987d29e01aa',1,'Ratio(): controls.c']]], + ['readeeprom_92',['ReadEEprom',['../functions_8c.html#adf7f3486f66ae3386f330a5172dfdf52',1,'ReadEEprom(void): functions.c'],['../functions_8h.html#adf7f3486f66ae3386f330a5172dfdf52',1,'ReadEEprom(void): functions.c']]], + ['readeepromwpm_93',['ReadEEpromWpM',['../functions_8c.html#a3435bb0409b2c91ab253f4bd4cdc03e1',1,'ReadEEpromWpM(void): functions.c'],['../functions_8h.html#a3435bb0409b2c91ab253f4bd4cdc03e1',1,'ReadEEpromWpM(void): functions.c']]], + ['readmsgeeprom_94',['ReadMsgEEprom',['../main_8h.html#a8e9bfd3675045369fd2f33121ad25e8e',1,'memory.c']]], + ['resetmilliseconds_95',['ResetMilliSeconds',['../functions_8c.html#a318f7eb176f7797e0166cbd652855a3c',1,'ResetMilliSeconds(void): functions.c'],['../functions_8h.html#a318f7eb176f7797e0166cbd652855a3c',1,'ResetMilliSeconds(void): functions.c']]], + ['restart_96',['ReStart',['../main_8h.html#ab1f1ff64cfdd7f3c70e793afb9b0e3af',1,'main.c']]], + ['reverse_97',['Reverse',['../structConfig.html#a8be063e5e1e539a860e2714b30d66ecc',1,'Config']]], + ['reverselr_98',['ReverseLR',['../controls_8c.html#a3aef3986a3ae6ca48eb4f92532d827ae',1,'controls.c']]], + ['reverserl_99',['ReverseRL',['../controls_8c.html#a6fcaa55631cc1a96c082f6d8da9357a2',1,'controls.c']]], + ['risetime_100',['RiseTime',['../structConfig.html#a627e732da58565b3d28f99b82c6a5c54',1,'Config::RiseTime()'],['../controls_8c.html#aec62b46d086a27a9d99a82f846b449a5',1,'RiseTime(): controls.c']]], + ['risetimecounter_101',['RiseTimeCounter',['../structConfig.html#a5afac0757bcf374b784a1250501d0bb0',1,'Config']]] +]; diff --git a/Documents/Doxygen/html/search/all_f.html b/Documents/Doxygen/html/search/all_f.html new file mode 100644 index 0000000..f649f51 --- /dev/null +++ b/Documents/Doxygen/html/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/all_f.js b/Documents/Doxygen/html/search/all_f.js new file mode 100644 index 0000000..96a0ef1 --- /dev/null +++ b/Documents/Doxygen/html/search/all_f.js @@ -0,0 +1,45 @@ +var searchData= +[ + ['sendchar_102',['SendChar',['../functions_8c.html#a49e16203823a4921910161bd2610987a',1,'SendChar(unsigned char c): functions.c'],['../functions_8h.html#a49e16203823a4921910161bd2610987a',1,'SendChar(unsigned char c): functions.c']]], + ['senddah_103',['SendDah',['../functions_8c.html#a3dfd0f785e0377a124c423ac5ef8ddde',1,'SendDah(void): functions.c'],['../functions_8h.html#a3dfd0f785e0377a124c423ac5ef8ddde',1,'SendDah(void): functions.c']]], + ['senddit_104',['SendDit',['../functions_8h.html#a22d2dd23cb17e53e75c7d6366d9205d6',1,'SendDit(void): functions.c'],['../functions_8c.html#a22d2dd23cb17e53e75c7d6366d9205d6',1,'SendDit(void): functions.c']]], + ['sendiambic_105',['SendIambic',['../functions_8h.html#a683e588b64df83d67f1342ed5eeb099b',1,'SendIambic(void): functions.c'],['../functions_8c.html#a683e588b64df83d67f1342ed5eeb099b',1,'SendIambic(void): functions.c']]], + ['sending_5fnothing_106',['SENDING_NOTHING',['../globals_8h.html#a26467aab195715bb21eca2df8d729078',1,'globals.h']]], + ['sendmemory_107',['SendMemory',['../functions_8h.html#adf505a2f38b0bd35e6030c8e9a82ae2a',1,'memory.c']]], + ['sendstatus_108',['SendStatus',['../structState.html#ac9b34cc2b3cb4f8ffe789278d9b76616',1,'State']]], + ['sendstring_109',['SendString',['../functions_8h.html#a33edcf2aa23f97390659434ead6ef593',1,'SendString(char *s): functions.c'],['../functions_8c.html#a33edcf2aa23f97390659434ead6ef593',1,'SendString(char *s): functions.c']]], + ['sendsymbol_110',['SendSymbol',['../functions_8c.html#a3e6e9a204e6bac15fdc0fe500390517c',1,'functions.c']]], + ['serialabout_111',['SerialAbout',['../vt100_8c.html#a4ee21561cb51aeaa80633e244b3811c6',1,'SerialAbout(void): vt100.c'],['../vt100_8h.html#a4ee21561cb51aeaa80633e244b3811c6',1,'SerialAbout(void): vt100.c']]], + ['serialmenue_112',['SerialMenue',['../vt100_8c.html#af214225c421f33e106f2e94feb80f9d8',1,'SerialMenue(void): vt100.c'],['../vt100_8h.html#af214225c421f33e106f2e94feb80f9d8',1,'SerialMenue(void): vt100.c']]], + ['serialmsgmenue_113',['SerialMsgMenue',['../vt100_8c.html#a224d9b143a368c30ceceaeffbd696500',1,'SerialMsgMenue(char c): vt100.c'],['../vt100_8h.html#a224d9b143a368c30ceceaeffbd696500',1,'SerialMsgMenue(char c): vt100.c']]], + ['serialreceive_114',['SerialReceive',['../main_8h.html#aed5211def004c592733d721fd1d6c186',1,'SerialReceive(char c): vt100.c'],['../vt100_8c.html#aed5211def004c592733d721fd1d6c186',1,'SerialReceive(char c): vt100.c']]], + ['serialreset_115',['SerialReset',['../main_8h.html#aa9e990762ad311b3582c6e7b0c4addf6',1,'SerialReset(void): vt100.c'],['../vt100_8c.html#aa9e990762ad311b3582c6e7b0c4addf6',1,'SerialReset(void): vt100.c']]], + ['serialsetup_116',['SerialSetup',['../vt100_8c.html#a4c083c2b0ddae216cf2bdfe6490c9738',1,'SerialSetup(void): vt100.c'],['../vt100_8h.html#a4c083c2b0ddae216cf2bdfe6490c9738',1,'SerialSetup(void): vt100.c']]], + ['serialstate_117',['SerialState',['../structSerialState.html',1,'']]], + ['serialwritechar_118',['SerialWriteChar',['../functions_8c.html#a8684d17e55772fc84a10c9e778705eda',1,'SerialWriteChar(unsigned char data): functions.c'],['../functions_8h.html#a8684d17e55772fc84a10c9e778705eda',1,'SerialWriteChar(unsigned char data): functions.c']]], + ['seteeprom_119',['SetEEprom',['../functions_8c.html#a4e592b116ccf5c55bbb5979bb7193981',1,'SetEEprom(void): functions.c'],['../functions_8h.html#a4e592b116ccf5c55bbb5979bb7193981',1,'SetEEprom(void): functions.c']]], + ['setfrequency_120',['SetFrequency',['../main_8h.html#af3375f394993997701d75ee441810edc',1,'SetFrequency(uint16_t f): functions.c'],['../functions_8c.html#af3375f394993997701d75ee441810edc',1,'SetFrequency(uint16_t f): functions.c']]], + ['setratio_121',['SetRatio',['../functions_8h.html#aa0e063cf32b840a3ed51ae9aa677e2be',1,'SetRatio(void): functions.c'],['../functions_8c.html#aa0e063cf32b840a3ed51ae9aa677e2be',1,'SetRatio(void): functions.c'],['../controls_8h.html#aa0e063cf32b840a3ed51ae9aa677e2be',1,'SetRatio(void): functions.c']]], + ['setstandardmsg_122',['SetStandardMsg',['../main_8h.html#a98a0b3effca8690570f5b21b4e4984f4',1,'memory.c']]], + ['sidetonedisable_123',['SidetoneDisable',['../controls_8h.html#ae8011166e9324f9f3c6948249eb15fd1',1,'SidetoneDisable(void): functions.c'],['../functions_8c.html#ae8011166e9324f9f3c6948249eb15fd1',1,'SidetoneDisable(void): functions.c']]], + ['sidetoneenable_124',['SidetoneEnable',['../controls_8h.html#a60f2f041b0803584ba5fc2e0a373ed50',1,'SidetoneEnable(void): functions.c'],['../functions_8c.html#a60f2f041b0803584ba5fc2e0a373ed50',1,'SidetoneEnable(void): functions.c']]], + ['sidetoneenabled_125',['SidetoneEnabled',['../structState.html#aaebbf5da7337abd9a683f6fd3d63087d',1,'State::SidetoneEnabled()'],['../structConfig.html#a7d6dfda9db154b977769378223d56eff',1,'Config::SidetoneEnabled()']]], + ['sidetonefreq_126',['SideToneFreq',['../controls_8c.html#a4e5958495ba326d1ef4ca81aadf97bea',1,'controls.c']]], + ['sidetonefreq_127',['SidetoneFreq',['../structConfig.html#aa3910963f687f6cea42eb74a662f0504',1,'Config']]], + ['sidetoneoff_128',['SidetoneOff',['../controls_8h.html#ad82537f7ea58b4eb375952ce52615c4d',1,'SidetoneOff(void): functions.c'],['../functions_8c.html#ad82537f7ea58b4eb375952ce52615c4d',1,'SidetoneOff(void): functions.c'],['../structState.html#a5e94242222ee7d6061fb36f5374f36b4',1,'State::SidetoneOff()']]], + ['sidetoneon_129',['SidetoneOn',['../functions_8c.html#aa037229dc16e974a22eedcd6990a7b9d',1,'functions.c']]], + ['sidetoneonoff_130',['SideToneOnOff',['../controls_8c.html#a913981a1b4818d9fb9a39bf65326d832',1,'controls.c']]], + ['spcmillis_131',['SpcMillis',['../globals_8h.html#a7db74a7792308dd1d7c35be61d5ff9e8',1,'globals.h']]], + ['sreg_5ftmp_132',['sreg_tmp',['../functions_8h.html#a82a35872e59db8f8de1f0e42854355dd',1,'functions.h']]], + ['state_133',['State',['../structState.html',1,'']]], + ['statebuttonpressed_134',['StateButtonPressed',['../globals_8h.html#a094f3d15714cd07a3536db03d58cb818',1,'globals.h']]], + ['statepaddledahkeypressed_135',['StatePaddleDahKeyPressed',['../globals_8h.html#a92483c848dd64122cc79472ad979f5e5',1,'globals.h']]], + ['statepaddleditkeypressed_136',['StatePaddleDitKeyPressed',['../globals_8h.html#a9684e7a5392d3dc5b8436002c3ce1c85',1,'globals.h']]], + ['staterisetime_137',['StateRiseTime',['../globals_8h.html#ab36cf30c9e53f719929eba1f738e4b12',1,'globals.h']]], + ['staterisetimecounter_138',['StateRiseTimeCounter',['../globals_8h.html#a03249b48d31b6f929b91011f73c3eb56',1,'globals.h']]], + ['statestraightkeypressed_139',['StateStraightKeyPressed',['../globals_8h.html#a39b1d9792105a52be2c2713ecf044a97',1,'globals.h']]], + ['straight_140',['STRAIGHT',['../globals_8h.html#ae5284d1a5b3e5a009614298e3e7730bc',1,'globals.h']]], + ['strx1_141',['sTrx1',['../controls_8c.html#a6203d557889176e261076e2f088df303',1,'controls.c']]], + ['strx2_142',['sTrx2',['../controls_8c.html#a35d38bfd22e4419f9f56cdb345a8e7e4',1,'controls.c']]], + ['submenue_143',['SubMenue',['../structMenuCtrl.html#a18592f292af3324a9d91db635c2e6fec',1,'MenuCtrl']]] +]; diff --git a/Documents/Doxygen/html/search/classes_0.html b/Documents/Doxygen/html/search/classes_0.html new file mode 100644 index 0000000..6e7e216 --- /dev/null +++ b/Documents/Doxygen/html/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/classes_0.js b/Documents/Doxygen/html/search/classes_0.js new file mode 100644 index 0000000..88ad3ee --- /dev/null +++ b/Documents/Doxygen/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['config_171',['Config',['../structConfig.html',1,'']]] +]; diff --git a/Documents/Doxygen/html/search/classes_1.html b/Documents/Doxygen/html/search/classes_1.html new file mode 100644 index 0000000..3ff0ca9 --- /dev/null +++ b/Documents/Doxygen/html/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/classes_1.js b/Documents/Doxygen/html/search/classes_1.js new file mode 100644 index 0000000..3ad54d7 --- /dev/null +++ b/Documents/Doxygen/html/search/classes_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['menuctrl_172',['MenuCtrl',['../structMenuCtrl.html',1,'']]], + ['message_173',['Message',['../structMessage.html',1,'']]] +]; diff --git a/Documents/Doxygen/html/search/classes_2.html b/Documents/Doxygen/html/search/classes_2.html new file mode 100644 index 0000000..a684cab --- /dev/null +++ b/Documents/Doxygen/html/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/classes_2.js b/Documents/Doxygen/html/search/classes_2.js new file mode 100644 index 0000000..c4406a1 --- /dev/null +++ b/Documents/Doxygen/html/search/classes_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['serialstate_174',['SerialState',['../structSerialState.html',1,'']]], + ['state_175',['State',['../structState.html',1,'']]] +]; diff --git a/Documents/Doxygen/html/search/close.svg b/Documents/Doxygen/html/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/Documents/Doxygen/html/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/Documents/Doxygen/html/search/defines_0.html b/Documents/Doxygen/html/search/defines_0.html new file mode 100644 index 0000000..87d3808 --- /dev/null +++ b/Documents/Doxygen/html/search/defines_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/defines_0.js b/Documents/Doxygen/html/search/defines_0.js new file mode 100644 index 0000000..0812d69 --- /dev/null +++ b/Documents/Doxygen/html/search/defines_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['auto_337',['AUTO',['../globals_8h.html#a0cc6f7717df9fbdc0f33efb88720a639',1,'globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/defines_1.html b/Documents/Doxygen/html/search/defines_1.html new file mode 100644 index 0000000..ab35b27 --- /dev/null +++ b/Documents/Doxygen/html/search/defines_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/defines_1.js b/Documents/Doxygen/html/search/defines_1.js new file mode 100644 index 0000000..d90f3a7 --- /dev/null +++ b/Documents/Doxygen/html/search/defines_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['clearline_338',['CLEARLINE',['../globals_8h.html#ae39a97a19b2e372929dabdc0e3822910',1,'globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/defines_2.html b/Documents/Doxygen/html/search/defines_2.html new file mode 100644 index 0000000..16ccb0e --- /dev/null +++ b/Documents/Doxygen/html/search/defines_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/defines_2.js b/Documents/Doxygen/html/search/defines_2.js new file mode 100644 index 0000000..05225dd --- /dev/null +++ b/Documents/Doxygen/html/search/defines_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['left_5fpaddle_339',['LEFT_PADDLE',['../globals_8h.html#a8f0a217b99055286939b536efe9516f1',1,'globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/defines_3.html b/Documents/Doxygen/html/search/defines_3.html new file mode 100644 index 0000000..845833c --- /dev/null +++ b/Documents/Doxygen/html/search/defines_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/defines_3.js b/Documents/Doxygen/html/search/defines_3.js new file mode 100644 index 0000000..4274fd3 --- /dev/null +++ b/Documents/Doxygen/html/search/defines_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['msgsize_340',['MSGSIZE',['../globals_8h.html#a57332b76331a1bbe1d6807ddbb6d0522',1,'globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/defines_4.html b/Documents/Doxygen/html/search/defines_4.html new file mode 100644 index 0000000..260e3d3 --- /dev/null +++ b/Documents/Doxygen/html/search/defines_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/defines_4.js b/Documents/Doxygen/html/search/defines_4.js new file mode 100644 index 0000000..3875980 --- /dev/null +++ b/Documents/Doxygen/html/search/defines_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['nothing_341',['NOTHING',['../globals_8h.html#aad4a7ebff687dc5228cc3fd4d25067f2',1,'globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/defines_5.html b/Documents/Doxygen/html/search/defines_5.html new file mode 100644 index 0000000..bfd3b70 --- /dev/null +++ b/Documents/Doxygen/html/search/defines_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/defines_5.js b/Documents/Doxygen/html/search/defines_5.js new file mode 100644 index 0000000..44170d6 --- /dev/null +++ b/Documents/Doxygen/html/search/defines_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paddle_5fnormal_342',['PADDLE_NORMAL',['../globals_8h.html#a0f491a526845fa7f262309a82a0d7190',1,'globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/defines_6.html b/Documents/Doxygen/html/search/defines_6.html new file mode 100644 index 0000000..85cb9f4 --- /dev/null +++ b/Documents/Doxygen/html/search/defines_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/defines_6.js b/Documents/Doxygen/html/search/defines_6.js new file mode 100644 index 0000000..4bf85be --- /dev/null +++ b/Documents/Doxygen/html/search/defines_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['sending_5fnothing_343',['SENDING_NOTHING',['../globals_8h.html#a26467aab195715bb21eca2df8d729078',1,'globals.h']]], + ['straight_344',['STRAIGHT',['../globals_8h.html#ae5284d1a5b3e5a009614298e3e7730bc',1,'globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/defines_7.html b/Documents/Doxygen/html/search/defines_7.html new file mode 100644 index 0000000..de4a35a --- /dev/null +++ b/Documents/Doxygen/html/search/defines_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/defines_7.js b/Documents/Doxygen/html/search/defines_7.js new file mode 100644 index 0000000..33b0b7d --- /dev/null +++ b/Documents/Doxygen/html/search/defines_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['sending_5fnothing_237',['SENDING_NOTHING',['../globals_8h.html#a26467aab195715bb21eca2df8d729078',1,'globals.h']]], + ['straight_238',['STRAIGHT',['../globals_8h.html#ae5284d1a5b3e5a009614298e3e7730bc',1,'globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/files_0.html b/Documents/Doxygen/html/search/files_0.html new file mode 100644 index 0000000..afcdd93 --- /dev/null +++ b/Documents/Doxygen/html/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/files_0.js b/Documents/Doxygen/html/search/files_0.js new file mode 100644 index 0000000..1288352 --- /dev/null +++ b/Documents/Doxygen/html/search/files_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['controls_2ec_176',['controls.c',['../controls_8c.html',1,'']]], + ['controls_2eh_177',['controls.h',['../controls_8h.html',1,'']]] +]; diff --git a/Documents/Doxygen/html/search/files_1.html b/Documents/Doxygen/html/search/files_1.html new file mode 100644 index 0000000..adcf44d --- /dev/null +++ b/Documents/Doxygen/html/search/files_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/files_1.js b/Documents/Doxygen/html/search/files_1.js new file mode 100644 index 0000000..c97e445 --- /dev/null +++ b/Documents/Doxygen/html/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['encoder_2ec_178',['encoder.c',['../encoder_8c.html',1,'']]] +]; diff --git a/Documents/Doxygen/html/search/files_2.html b/Documents/Doxygen/html/search/files_2.html new file mode 100644 index 0000000..bdb77c8 --- /dev/null +++ b/Documents/Doxygen/html/search/files_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/files_2.js b/Documents/Doxygen/html/search/files_2.js new file mode 100644 index 0000000..5c29b6a --- /dev/null +++ b/Documents/Doxygen/html/search/files_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['functions_2ec_179',['functions.c',['../functions_8c.html',1,'']]], + ['functions_2eh_180',['functions.h',['../functions_8h.html',1,'']]] +]; diff --git a/Documents/Doxygen/html/search/files_3.html b/Documents/Doxygen/html/search/files_3.html new file mode 100644 index 0000000..7df9636 --- /dev/null +++ b/Documents/Doxygen/html/search/files_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/files_3.js b/Documents/Doxygen/html/search/files_3.js new file mode 100644 index 0000000..f69d155 --- /dev/null +++ b/Documents/Doxygen/html/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['globals_2eh_181',['globals.h',['../globals_8h.html',1,'']]] +]; diff --git a/Documents/Doxygen/html/search/files_4.html b/Documents/Doxygen/html/search/files_4.html new file mode 100644 index 0000000..86d726d --- /dev/null +++ b/Documents/Doxygen/html/search/files_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/files_4.js b/Documents/Doxygen/html/search/files_4.js new file mode 100644 index 0000000..9891d65 --- /dev/null +++ b/Documents/Doxygen/html/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_2eh_182',['main.h',['../main_8h.html',1,'']]] +]; diff --git a/Documents/Doxygen/html/search/files_5.html b/Documents/Doxygen/html/search/files_5.html new file mode 100644 index 0000000..2ab73b4 --- /dev/null +++ b/Documents/Doxygen/html/search/files_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/files_5.js b/Documents/Doxygen/html/search/files_5.js new file mode 100644 index 0000000..c5450d0 --- /dev/null +++ b/Documents/Doxygen/html/search/files_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vt100_2ec_183',['vt100.c',['../vt100_8c.html',1,'']]], + ['vt100_2eh_184',['vt100.h',['../vt100_8h.html',1,'']]] +]; diff --git a/Documents/Doxygen/html/search/functions_0.html b/Documents/Doxygen/html/search/functions_0.html new file mode 100644 index 0000000..47c9182 --- /dev/null +++ b/Documents/Doxygen/html/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/functions_0.js b/Documents/Doxygen/html/search/functions_0.js new file mode 100644 index 0000000..1c4e5c4 --- /dev/null +++ b/Documents/Doxygen/html/search/functions_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['beep_185',['Beep',['../controls_8h.html#a2f616a93763b4bc437c4311d653c0491',1,'Beep(void): functions.c'],['../functions_8c.html#a2f616a93763b4bc437c4311d653c0491',1,'Beep(void): functions.c'],['../functions_8h.html#a2f616a93763b4bc437c4311d653c0491',1,'Beep(void): functions.c']]], + ['beepboop_186',['BeepBoop',['../functions_8c.html#a72913eefa74c0c044d815a0b759577fa',1,'BeepBoop(void): functions.c'],['../functions_8h.html#a72913eefa74c0c044d815a0b759577fa',1,'BeepBoop(void): functions.c']]], + ['boop_187',['Boop',['../controls_8h.html#a0366eaeb4aab61562dcd5b24994d0103',1,'Boop(void): functions.c'],['../functions_8c.html#a0366eaeb4aab61562dcd5b24994d0103',1,'Boop(void): functions.c'],['../functions_8h.html#a0366eaeb4aab61562dcd5b24994d0103',1,'Boop(void): functions.c']]] +]; diff --git a/Documents/Doxygen/html/search/functions_1.html b/Documents/Doxygen/html/search/functions_1.html new file mode 100644 index 0000000..2c8c433 --- /dev/null +++ b/Documents/Doxygen/html/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/functions_1.js b/Documents/Doxygen/html/search/functions_1.js new file mode 100644 index 0000000..e950915 --- /dev/null +++ b/Documents/Doxygen/html/search/functions_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['checkbuttons_188',['CheckButtons',['../functions_8c.html#a4010a7257caeca55f68c98ee199d3ea2',1,'CheckButtons(void): functions.c'],['../main_8h.html#a4010a7257caeca55f68c98ee199d3ea2',1,'CheckButtons(void): functions.c']]], + ['checkdahpaddle_189',['CheckDahPaddle',['../functions_8c.html#ac0bccd022514697217eaf063b1b2c0fa',1,'CheckDahPaddle(void): functions.c'],['../main_8h.html#ac0bccd022514697217eaf063b1b2c0fa',1,'CheckDahPaddle(void): functions.c']]], + ['checkditpaddle_190',['CheckDitPaddle',['../functions_8c.html#a7783dcd27ef486bce541c85e10131394',1,'CheckDitPaddle(void): functions.c'],['../main_8h.html#a7783dcd27ef486bce541c85e10131394',1,'CheckDitPaddle(void): functions.c']]], + ['checkpaddles_191',['CheckPaddles',['../functions_8c.html#a9bd61bc3c9e38f6b325e4ba3f96d9472',1,'CheckPaddles(void): functions.c'],['../functions_8h.html#a9bd61bc3c9e38f6b325e4ba3f96d9472',1,'CheckPaddles(void): functions.c']]], + ['checkstraightkey_192',['CheckStraightKey',['../functions_8c.html#a68bed2cd125260e9c6eb7f6f8e0c9106',1,'CheckStraightKey(void): functions.c'],['../main_8h.html#a68bed2cd125260e9c6eb7f6f8e0c9106',1,'CheckStraightKey(void): functions.c']]], + ['configmenue_193',['ConfigMenue',['../controls_8c.html#a582148370499a6b91171ed6134cc7041',1,'ConfigMenue(void): controls.c'],['../controls_8h.html#a582148370499a6b91171ed6134cc7041',1,'ConfigMenue(void): controls.c']]] +]; diff --git a/Documents/Doxygen/html/search/functions_2.html b/Documents/Doxygen/html/search/functions_2.html new file mode 100644 index 0000000..c88b3b9 --- /dev/null +++ b/Documents/Doxygen/html/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/functions_2.js b/Documents/Doxygen/html/search/functions_2.js new file mode 100644 index 0000000..a09ce1c --- /dev/null +++ b/Documents/Doxygen/html/search/functions_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['delaymilliseconds_194',['DelayMilliSeconds',['../controls_8h.html#a4e03330a0d63dbc5c8c0ce8a3ba10ff7',1,'DelayMilliSeconds(uint16_t t): functions.c'],['../functions_8c.html#ada3125b546b3115e7afc2e51bc7db894',1,'DelayMilliSeconds(uint16_t ms): functions.c'],['../functions_8h.html#ada3125b546b3115e7afc2e51bc7db894',1,'DelayMilliSeconds(uint16_t ms): functions.c']]], + ['displayversion_195',['DisplayVersion',['../controls_8c.html#a9dec45875121142b6466b9475691b40a',1,'DisplayVersion(void): controls.c'],['../controls_8h.html#a9dec45875121142b6466b9475691b40a',1,'DisplayVersion(void): controls.c']]], + ['drehencoder_196',['Drehencoder',['../controls_8c.html#aaf6c1bd6cb225efe37f9762de8a0c3d1',1,'Drehencoder(void): controls.c'],['../controls_8h.html#ac6dc8b683fdf1a5fc24b2a509279f887',1,'Drehencoder(void): controls.c']]] +]; diff --git a/Documents/Doxygen/html/search/functions_3.html b/Documents/Doxygen/html/search/functions_3.html new file mode 100644 index 0000000..6fba41b --- /dev/null +++ b/Documents/Doxygen/html/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/functions_3.js b/Documents/Doxygen/html/search/functions_3.js new file mode 100644 index 0000000..4d6b15c --- /dev/null +++ b/Documents/Doxygen/html/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['encoderpolling_197',['EncoderPolling',['../encoder_8c.html#a660e5b11dce82f5b307f628def81d188',1,'encoder.c']]] +]; diff --git a/Documents/Doxygen/html/search/functions_4.html b/Documents/Doxygen/html/search/functions_4.html new file mode 100644 index 0000000..341bd44 --- /dev/null +++ b/Documents/Doxygen/html/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/functions_4.js b/Documents/Doxygen/html/search/functions_4.js new file mode 100644 index 0000000..754f08f --- /dev/null +++ b/Documents/Doxygen/html/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['getmilliseconds_198',['GetMilliSeconds',['../functions_8c.html#a682e380769f82867a41c13d632bb3cca',1,'GetMilliSeconds(void): functions.c'],['../functions_8h.html#a682e380769f82867a41c13d632bb3cca',1,'GetMilliSeconds(void): functions.c']]] +]; diff --git a/Documents/Doxygen/html/search/functions_5.html b/Documents/Doxygen/html/search/functions_5.html new file mode 100644 index 0000000..672ee89 --- /dev/null +++ b/Documents/Doxygen/html/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/functions_5.js b/Documents/Doxygen/html/search/functions_5.js new file mode 100644 index 0000000..f5b5739 --- /dev/null +++ b/Documents/Doxygen/html/search/functions_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['init_199',['Init',['../main_8h.html#a7ce0a14b6e7779fbb2d9a05333792c41',1,'main.c']]], + ['inittimer_200',['InitTimer',['../main_8h.html#a4472695bac138b033a3d7fcd42dd3153',1,'main.c']]], + ['intdisable_201',['IntDisable',['../functions_8c.html#ae2f4a274ba95c3e94edd58ce6f129de4',1,'IntDisable(void): functions.c'],['../functions_8h.html#ae2f4a274ba95c3e94edd58ce6f129de4',1,'IntDisable(void): functions.c']]], + ['intenable_202',['IntEnable',['../functions_8c.html#ab321d23dfab578b6a40f3c5e8894c280',1,'IntEnable(void): functions.c'],['../functions_8h.html#ab321d23dfab578b6a40f3c5e8894c280',1,'IntEnable(void): functions.c']]] +]; diff --git a/Documents/Doxygen/html/search/functions_6.html b/Documents/Doxygen/html/search/functions_6.html new file mode 100644 index 0000000..7c1326d --- /dev/null +++ b/Documents/Doxygen/html/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/functions_6.js b/Documents/Doxygen/html/search/functions_6.js new file mode 100644 index 0000000..373bbf5 --- /dev/null +++ b/Documents/Doxygen/html/search/functions_6.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['readeeprom_203',['ReadEEprom',['../functions_8c.html#adf7f3486f66ae3386f330a5172dfdf52',1,'ReadEEprom(void): functions.c'],['../functions_8h.html#adf7f3486f66ae3386f330a5172dfdf52',1,'ReadEEprom(void): functions.c']]], + ['readeepromwpm_204',['ReadEEpromWpM',['../functions_8c.html#a3435bb0409b2c91ab253f4bd4cdc03e1',1,'ReadEEpromWpM(void): functions.c'],['../functions_8h.html#a3435bb0409b2c91ab253f4bd4cdc03e1',1,'ReadEEpromWpM(void): functions.c']]], + ['readmsgeeprom_205',['ReadMsgEEprom',['../main_8h.html#a8e9bfd3675045369fd2f33121ad25e8e',1,'memory.c']]], + ['resetmilliseconds_206',['ResetMilliSeconds',['../functions_8c.html#a318f7eb176f7797e0166cbd652855a3c',1,'ResetMilliSeconds(void): functions.c'],['../functions_8h.html#a318f7eb176f7797e0166cbd652855a3c',1,'ResetMilliSeconds(void): functions.c']]], + ['restart_207',['ReStart',['../main_8h.html#ab1f1ff64cfdd7f3c70e793afb9b0e3af',1,'main.c']]] +]; diff --git a/Documents/Doxygen/html/search/functions_7.html b/Documents/Doxygen/html/search/functions_7.html new file mode 100644 index 0000000..679b365 --- /dev/null +++ b/Documents/Doxygen/html/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/functions_7.js b/Documents/Doxygen/html/search/functions_7.js new file mode 100644 index 0000000..6b00f9c --- /dev/null +++ b/Documents/Doxygen/html/search/functions_7.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['sendchar_208',['SendChar',['../functions_8h.html#a49e16203823a4921910161bd2610987a',1,'SendChar(unsigned char c): functions.c'],['../functions_8c.html#a49e16203823a4921910161bd2610987a',1,'SendChar(unsigned char c): functions.c']]], + ['senddah_209',['SendDah',['../functions_8h.html#a3dfd0f785e0377a124c423ac5ef8ddde',1,'SendDah(void): functions.c'],['../functions_8c.html#a3dfd0f785e0377a124c423ac5ef8ddde',1,'SendDah(void): functions.c']]], + ['senddit_210',['SendDit',['../functions_8c.html#a22d2dd23cb17e53e75c7d6366d9205d6',1,'SendDit(void): functions.c'],['../functions_8h.html#a22d2dd23cb17e53e75c7d6366d9205d6',1,'SendDit(void): functions.c']]], + ['sendiambic_211',['SendIambic',['../functions_8c.html#a683e588b64df83d67f1342ed5eeb099b',1,'SendIambic(void): functions.c'],['../functions_8h.html#a683e588b64df83d67f1342ed5eeb099b',1,'SendIambic(void): functions.c']]], + ['sendmemory_212',['SendMemory',['../functions_8h.html#adf505a2f38b0bd35e6030c8e9a82ae2a',1,'memory.c']]], + ['sendstring_213',['SendString',['../functions_8c.html#a33edcf2aa23f97390659434ead6ef593',1,'SendString(char *s): functions.c'],['../functions_8h.html#a33edcf2aa23f97390659434ead6ef593',1,'SendString(char *s): functions.c']]], + ['sendsymbol_214',['SendSymbol',['../functions_8c.html#a3e6e9a204e6bac15fdc0fe500390517c',1,'functions.c']]], + ['serialabout_215',['SerialAbout',['../vt100_8c.html#a4ee21561cb51aeaa80633e244b3811c6',1,'SerialAbout(void): vt100.c'],['../vt100_8h.html#a4ee21561cb51aeaa80633e244b3811c6',1,'SerialAbout(void): vt100.c']]], + ['serialmenue_216',['SerialMenue',['../vt100_8c.html#af214225c421f33e106f2e94feb80f9d8',1,'SerialMenue(void): vt100.c'],['../vt100_8h.html#af214225c421f33e106f2e94feb80f9d8',1,'SerialMenue(void): vt100.c']]], + ['serialmsgmenue_217',['SerialMsgMenue',['../vt100_8c.html#a224d9b143a368c30ceceaeffbd696500',1,'SerialMsgMenue(char c): vt100.c'],['../vt100_8h.html#a224d9b143a368c30ceceaeffbd696500',1,'SerialMsgMenue(char c): vt100.c']]], + ['serialreceive_218',['SerialReceive',['../main_8h.html#aed5211def004c592733d721fd1d6c186',1,'SerialReceive(char c): vt100.c'],['../vt100_8c.html#aed5211def004c592733d721fd1d6c186',1,'SerialReceive(char c): vt100.c']]], + ['serialreset_219',['SerialReset',['../main_8h.html#aa9e990762ad311b3582c6e7b0c4addf6',1,'SerialReset(void): vt100.c'],['../vt100_8c.html#aa9e990762ad311b3582c6e7b0c4addf6',1,'SerialReset(void): vt100.c']]], + ['serialsetup_220',['SerialSetup',['../vt100_8c.html#a4c083c2b0ddae216cf2bdfe6490c9738',1,'SerialSetup(void): vt100.c'],['../vt100_8h.html#a4c083c2b0ddae216cf2bdfe6490c9738',1,'SerialSetup(void): vt100.c']]], + ['serialwritechar_221',['SerialWriteChar',['../functions_8c.html#a8684d17e55772fc84a10c9e778705eda',1,'SerialWriteChar(unsigned char data): functions.c'],['../functions_8h.html#a8684d17e55772fc84a10c9e778705eda',1,'SerialWriteChar(unsigned char data): functions.c']]], + ['seteeprom_222',['SetEEprom',['../functions_8c.html#a4e592b116ccf5c55bbb5979bb7193981',1,'SetEEprom(void): functions.c'],['../functions_8h.html#a4e592b116ccf5c55bbb5979bb7193981',1,'SetEEprom(void): functions.c']]], + ['setfrequency_223',['SetFrequency',['../functions_8c.html#af3375f394993997701d75ee441810edc',1,'SetFrequency(uint16_t f): functions.c'],['../main_8h.html#af3375f394993997701d75ee441810edc',1,'SetFrequency(uint16_t f): functions.c']]], + ['setratio_224',['SetRatio',['../functions_8c.html#aa0e063cf32b840a3ed51ae9aa677e2be',1,'SetRatio(void): functions.c'],['../functions_8h.html#aa0e063cf32b840a3ed51ae9aa677e2be',1,'SetRatio(void): functions.c'],['../controls_8h.html#aa0e063cf32b840a3ed51ae9aa677e2be',1,'SetRatio(void): functions.c']]], + ['setstandardmsg_225',['SetStandardMsg',['../main_8h.html#a98a0b3effca8690570f5b21b4e4984f4',1,'memory.c']]], + ['sidetonedisable_226',['SidetoneDisable',['../controls_8h.html#ae8011166e9324f9f3c6948249eb15fd1',1,'SidetoneDisable(void): functions.c'],['../functions_8c.html#ae8011166e9324f9f3c6948249eb15fd1',1,'SidetoneDisable(void): functions.c']]], + ['sidetoneenable_227',['SidetoneEnable',['../controls_8h.html#a60f2f041b0803584ba5fc2e0a373ed50',1,'SidetoneEnable(void): functions.c'],['../functions_8c.html#a60f2f041b0803584ba5fc2e0a373ed50',1,'SidetoneEnable(void): functions.c']]], + ['sidetoneoff_228',['SidetoneOff',['../controls_8h.html#ad82537f7ea58b4eb375952ce52615c4d',1,'SidetoneOff(void): functions.c'],['../functions_8c.html#ad82537f7ea58b4eb375952ce52615c4d',1,'SidetoneOff(void): functions.c']]], + ['sidetoneon_229',['SidetoneOn',['../functions_8c.html#aa037229dc16e974a22eedcd6990a7b9d',1,'functions.c']]] +]; diff --git a/Documents/Doxygen/html/search/functions_8.html b/Documents/Doxygen/html/search/functions_8.html new file mode 100644 index 0000000..951148e --- /dev/null +++ b/Documents/Doxygen/html/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/functions_8.js b/Documents/Doxygen/html/search/functions_8.js new file mode 100644 index 0000000..f99ad9d --- /dev/null +++ b/Documents/Doxygen/html/search/functions_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tone_230',['Tone',['../controls_8h.html#a378d56bf0e68310b700bd4dbdc652803',1,'Tone(uint16_t f, uint8_t t): functions.c'],['../functions_8c.html#a859cf4a556750b8aa340761627fb6c42',1,'Tone(uint16_t f, uint8_t duration): functions.c'],['../functions_8h.html#a859cf4a556750b8aa340761627fb6c42',1,'Tone(uint16_t f, uint8_t duration): functions.c']]], + ['txkey_231',['TXKey',['../functions_8c.html#aafcd99a76b601d8b43b6827d414ccddb',1,'functions.c']]] +]; diff --git a/Documents/Doxygen/html/search/functions_9.html b/Documents/Doxygen/html/search/functions_9.html new file mode 100644 index 0000000..d1f3254 --- /dev/null +++ b/Documents/Doxygen/html/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/functions_9.js b/Documents/Doxygen/html/search/functions_9.js new file mode 100644 index 0000000..7236556 --- /dev/null +++ b/Documents/Doxygen/html/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['updatedisplay_232',['UpdateDisplay',['../controls_8c.html#ace58ee95637a8f220527dc8b20dbb662',1,'UpdateDisplay(void): controls.c'],['../controls_8h.html#ace58ee95637a8f220527dc8b20dbb662',1,'UpdateDisplay(void): controls.c']]] +]; diff --git a/Documents/Doxygen/html/search/functions_a.html b/Documents/Doxygen/html/search/functions_a.html new file mode 100644 index 0000000..b4f8541 --- /dev/null +++ b/Documents/Doxygen/html/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/functions_a.js b/Documents/Doxygen/html/search/functions_a.js new file mode 100644 index 0000000..275242a --- /dev/null +++ b/Documents/Doxygen/html/search/functions_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['writeeeprom_233',['WriteEEprom',['../controls_8h.html#a586bc00ad3164def7ec76ac9bda4f1bc',1,'WriteEEprom(void): functions.c'],['../functions_8c.html#a586bc00ad3164def7ec76ac9bda4f1bc',1,'WriteEEprom(void): functions.c'],['../functions_8h.html#a586bc00ad3164def7ec76ac9bda4f1bc',1,'WriteEEprom(void): functions.c']]], + ['writeeepromwpm_234',['WriteEEpromWpM',['../functions_8c.html#a838ffc3ce94fc8c85429e5297a185022',1,'WriteEEpromWpM(void): functions.c'],['../functions_8h.html#a838ffc3ce94fc8c85429e5297a185022',1,'WriteEEpromWpM(void): functions.c']]], + ['writemsgeeprom_235',['WriteMsgEEprom',['../vt100_8h.html#a77266197e015c3320c0aa4f491101903',1,'memory.c']]] +]; diff --git a/Documents/Doxygen/html/search/mag_sel.svg b/Documents/Doxygen/html/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/Documents/Doxygen/html/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/Documents/Doxygen/html/search/nomatches.html b/Documents/Doxygen/html/search/nomatches.html new file mode 100644 index 0000000..e1102a5 --- /dev/null +++ b/Documents/Doxygen/html/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    Keine Treffer
    +
    + + diff --git a/Documents/Doxygen/html/search/pages_0.html b/Documents/Doxygen/html/search/pages_0.html new file mode 100644 index 0000000..942615e --- /dev/null +++ b/Documents/Doxygen/html/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/pages_0.js b/Documents/Doxygen/html/search/pages_0.js new file mode 100644 index 0000000..45f6afb --- /dev/null +++ b/Documents/Doxygen/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ausstehende_20aufgaben_345',['Ausstehende Aufgaben',['../todo.html',1,'']]] +]; diff --git a/Documents/Doxygen/html/search/search.css b/Documents/Doxygen/html/search/search.css new file mode 100644 index 0000000..9074198 --- /dev/null +++ b/Documents/Doxygen/html/search/search.css @@ -0,0 +1,257 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 1.4em; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 1.1em; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/Documents/Doxygen/html/search/search.js b/Documents/Doxygen/html/search/search.js new file mode 100644 index 0000000..fb226f7 --- /dev/null +++ b/Documents/Doxygen/html/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_0.js b/Documents/Doxygen/html/search/variables_0.js new file mode 100644 index 0000000..58f5b12 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['automatic_236',['Automatic',['../structState.html#a77084e27de545c8c9326e317a8c1edff',1,'State']]] +]; diff --git a/Documents/Doxygen/html/search/variables_1.html b/Documents/Doxygen/html/search/variables_1.html new file mode 100644 index 0000000..a9c483f --- /dev/null +++ b/Documents/Doxygen/html/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_1.js b/Documents/Doxygen/html/search/variables_1.js new file mode 100644 index 0000000..3767d34 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['bconfig_237',['bConfig',['../controls_8h.html#a8c3e2d3135447df0d9e7057fea4ff5b0',1,'bConfig(): main.h'],['../main_8h.html#a8c3e2d3135447df0d9e7057fea4ff5b0',1,'bConfig(): main.h']]], + ['bmenuctrl_238',['bMenuCtrl',['../controls_8h.html#a885b2af021946a60a0bd2a271711c17a',1,'bMenuCtrl(): main.h'],['../main_8h.html#a885b2af021946a60a0bd2a271711c17a',1,'bMenuCtrl(): main.h']]], + ['bmessage_239',['bMessage',['../main_8h.html#a29b39b8616c75ea80051354a3a8593da',1,'main.h']]], + ['bstate_240',['bState',['../controls_8h.html#a44ef5c8aeac95b862dab43408c149f9a',1,'bState(): main.h'],['../main_8h.html#a44ef5c8aeac95b862dab43408c149f9a',1,'bState(): main.h']]], + ['buttonpressed_241',['buttonPressed',['../structMenuCtrl.html#aee5679939884de604d3e5ad970ec0cbb',1,'MenuCtrl']]], + ['buttonpressedlong_242',['buttonPressedLong',['../structMenuCtrl.html#a45ed8ad2a9ae8803b446e599fb66fa78',1,'MenuCtrl']]] +]; diff --git a/Documents/Doxygen/html/search/variables_10.html b/Documents/Doxygen/html/search/variables_10.html new file mode 100644 index 0000000..cb88a0b --- /dev/null +++ b/Documents/Doxygen/html/search/variables_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_10.js b/Documents/Doxygen/html/search/variables_10.js new file mode 100644 index 0000000..28f4bab --- /dev/null +++ b/Documents/Doxygen/html/search/variables_10.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['weight_329',['Weight',['../structConfig.html#ace909792695e3949303df7fc26668739',1,'Config::Weight()'],['../controls_8c.html#abf38c2d2e8e887110f9092afbc1f9ff6',1,'Weight(): controls.c']]], + ['wpm_330',['WpM',['../structConfig.html#ad897d01be9484ac915e8d545c5937e16',1,'Config::WpM()'],['../controls_8h.html#a28fa6cb1767abefbe9c197700410d946',1,'WpM(): globals.h'],['../globals_8h.html#a28fa6cb1767abefbe9c197700410d946',1,'WpM(): globals.h']]], + ['wpmbpm_331',['WpMBpM',['../structConfig.html#a663b40e9d018ada8d4b6b97b4b2f5be0',1,'Config']]], + ['wpmchanged_332',['WpMChanged',['../structState.html#a52ffc38efd1a9798d8d92014fe664e62',1,'State']]], + ['writeeeprom_333',['WriteEEprom',['../structState.html#a0589ba8e59b2a9a246ce8d14f783577b',1,'State']]], + ['writemsgeeprom_334',['WriteMsgEEprom',['../structState.html#acbc62fb74e564116927efe2f2147b8b9',1,'State']]], + ['writewpmeeprom_335',['WriteWpMEEprom',['../structState.html#a0213cd5057520f3b652f3755dcdc0e70',1,'State']]] +]; diff --git a/Documents/Doxygen/html/search/variables_11.html b/Documents/Doxygen/html/search/variables_11.html new file mode 100644 index 0000000..b152969 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_11.js b/Documents/Doxygen/html/search/variables_11.js new file mode 100644 index 0000000..2818947 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['yes_336',['Yes',['../controls_8c.html#a3e1e7c928529ce5b265eb617b0e4e4b8',1,'controls.c']]] +]; diff --git a/Documents/Doxygen/html/search/variables_2.html b/Documents/Doxygen/html/search/variables_2.html new file mode 100644 index 0000000..cba3682 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_2.js b/Documents/Doxygen/html/search/variables_2.js new file mode 100644 index 0000000..70ed122 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['clrscr_243',['ClrScr',['../structMenuCtrl.html#ad890262e118180236b9eb54f7611b47c',1,'MenuCtrl']]], + ['config_244',['Config',['../structMenuCtrl.html#a47430d7c1484d7e5e18ae5a7fc4f8335',1,'MenuCtrl']]], + ['curmenue_245',['CurMenue',['../structMenuCtrl.html#a458df051e05029982d088d98ac1a8069',1,'MenuCtrl']]] +]; diff --git a/Documents/Doxygen/html/search/variables_3.html b/Documents/Doxygen/html/search/variables_3.html new file mode 100644 index 0000000..4c44909 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_3.js b/Documents/Doxygen/html/search/variables_3.js new file mode 100644 index 0000000..e19146c --- /dev/null +++ b/Documents/Doxygen/html/search/variables_3.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['dahmillis_246',['DahMillis',['../globals_8h.html#ad4e6326c3ab1d15391fcc416ff86c436',1,'globals.h']]], + ['dahpressed_247',['DahPressed',['../structState.html#a76bff5a7c3dd312851c50afccd017b33',1,'State']]], + ['debouncetime_248',['DebounceTime',['../structConfig.html#ace4e1403e52d3d19aa9f2470a13cfaa3',1,'Config::DebounceTime()'],['../controls_8c.html#a14d2686ee95132d4d7c740d23f38677b',1,'DebounceTime(): controls.c']]], + ['ditmillis_249',['DitMillis',['../globals_8h.html#a2f7701e9783a70804580512902c10ee7',1,'globals.h']]], + ['ditpressed_250',['DitPressed',['../structState.html#a0e3dcd5d2b54a5256fd71a1d956a2a0d',1,'State']]] +]; diff --git a/Documents/Doxygen/html/search/variables_4.html b/Documents/Doxygen/html/search/variables_4.html new file mode 100644 index 0000000..a03bf0b --- /dev/null +++ b/Documents/Doxygen/html/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_4.js b/Documents/Doxygen/html/search/variables_4.js new file mode 100644 index 0000000..1ac7084 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_4.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['ee_5fdebouncetime_251',['ee_DebounceTime',['../functions_8c.html#af46a7ac73709b59ac331e84016c6600f',1,'functions.c']]], + ['ee_5fdummy_252',['ee_Dummy',['../functions_8c.html#a42f0b8f91ce6b2a23dd6ff8672d13b95',1,'functions.c']]], + ['ee_5fkeyermode_253',['ee_KeyerMode',['../functions_8c.html#a169f1099862f2dc874d344eb240fd8c2',1,'functions.c']]], + ['ee_5fmembuttonmode_254',['ee_MemButtonMode',['../functions_8c.html#a3f1e9ffbb5d98febdd58a4fa82b01f30',1,'functions.c']]], + ['ee_5fmemory_255',['ee_Memory',['../functions_8c.html#a5f69205a6897625598ead5ab6a740fc7',1,'functions.c']]], + ['ee_5fratio_256',['ee_Ratio',['../functions_8c.html#a8814741a33f0a4f2e14eee14d8c00dad',1,'functions.c']]], + ['ee_5freverse_257',['ee_Reverse',['../functions_8c.html#ad5a1c7f3fe4cc3af1873519f70586866',1,'functions.c']]], + ['ee_5frisetime_258',['ee_RiseTime',['../functions_8c.html#acde6a28c5a5747443f823ff09dce682b',1,'functions.c']]], + ['ee_5frisetimecounter_259',['ee_RiseTimeCounter',['../functions_8c.html#a138d8a4a73593b01e9ffdfebc7134c89',1,'functions.c']]], + ['ee_5fsidetoneenabled_260',['ee_SidetoneEnabled',['../functions_8c.html#a8f9b2a72d7b1d5f1c28673c36a51a33a',1,'functions.c']]], + ['ee_5fsidetonefreq_261',['ee_SidetoneFreq',['../functions_8c.html#a025c31b4a3c9adca80df2782808579a7',1,'functions.c']]], + ['ee_5ftrx1_262',['ee_Trx1',['../functions_8c.html#a1c70858b9aea8006017b70d201604a96',1,'functions.c']]], + ['ee_5ftrx2_263',['ee_Trx2',['../functions_8c.html#a6f6cc3866f25698f6f9185e422ce7b8c',1,'functions.c']]], + ['ee_5fweight_264',['ee_Weight',['../functions_8c.html#ac8f8c751bbe43f711df2e1ba13f79994',1,'functions.c']]], + ['ee_5fwpm_265',['ee_WpM',['../functions_8c.html#af636ee63fad94f56f61f334e0c2e46b0',1,'functions.c']]], + ['ee_5fwpmbpm_266',['ee_WpMBpM',['../functions_8c.html#a7c955b77d04539b88678e94d72deeef0',1,'functions.c']]], + ['einstellungen_267',['Einstellungen',['../controls_8c.html#a3776d070bf17ce9a6dca80728d44a800',1,'controls.c']]], + ['encodercounter_268',['EncoderCounter',['../globals_8h.html#a426d3fb4cd1535f9e7616df2601f4ddc',1,'globals.h']]], + ['encoderpos_269',['EncoderPos',['../globals_8h.html#a3a1db669858552a5c21490149c648e12',1,'globals.h']]], + ['encoderposconfig_270',['EncoderPosConfig',['../globals_8h.html#a2b61ba3fb70419b8b5151d7216f6ab87',1,'globals.h']]], + ['encoderpossubconfig_271',['EncoderPosSubConfig',['../globals_8h.html#a2afbcb36398df196b3205ab28f612edf',1,'globals.h']]], + ['encodertimer_272',['EncoderTimer',['../globals_8h.html#a1756e538888c2c722809420489b62a53',1,'globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/variables_5.html b/Documents/Doxygen/html/search/variables_5.html new file mode 100644 index 0000000..96b99c9 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_5.js b/Documents/Doxygen/html/search/variables_5.js new file mode 100644 index 0000000..93635ee --- /dev/null +++ b/Documents/Doxygen/html/search/variables_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hz_273',['Hz',['../controls_8c.html#ac7c916eae39a6ea3de6c5e47cda3700e',1,'controls.c']]] +]; diff --git a/Documents/Doxygen/html/search/variables_6.html b/Documents/Doxygen/html/search/variables_6.html new file mode 100644 index 0000000..8d763ef --- /dev/null +++ b/Documents/Doxygen/html/search/variables_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_6.js b/Documents/Doxygen/html/search/variables_6.js new file mode 100644 index 0000000..b24575f --- /dev/null +++ b/Documents/Doxygen/html/search/variables_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['iambica_274',['IambicA',['../controls_8c.html#a3cf9a4ac7c32126e64feeb09468c4f16',1,'controls.c']]], + ['iambicb_275',['IambicB',['../controls_8c.html#a204380c13e522446a26c5becb474d872',1,'controls.c']]] +]; diff --git a/Documents/Doxygen/html/search/variables_7.html b/Documents/Doxygen/html/search/variables_7.html new file mode 100644 index 0000000..8c13e6e --- /dev/null +++ b/Documents/Doxygen/html/search/variables_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_7.js b/Documents/Doxygen/html/search/variables_7.js new file mode 100644 index 0000000..bffe08b --- /dev/null +++ b/Documents/Doxygen/html/search/variables_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['keyermode_276',['KeyerMode',['../structConfig.html#aef4f69db097a750c80f3b719bc14f341',1,'Config::KeyerMode()'],['../globals_8h.html#a9a19b6437a6a56a5855dd3488c6428f8',1,'KeyerMode(): globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/variables_8.html b/Documents/Doxygen/html/search/variables_8.html new file mode 100644 index 0000000..ef3704e --- /dev/null +++ b/Documents/Doxygen/html/search/variables_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_8.js b/Documents/Doxygen/html/search/variables_8.js new file mode 100644 index 0000000..1999c3b --- /dev/null +++ b/Documents/Doxygen/html/search/variables_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['lastbutton_277',['lastButton',['../globals_8h.html#acee5a37cadaac095a39a4ae4d033df7d',1,'globals.h']]], + ['lastsymbolwasdit_278',['LastSymbolWasDit',['../structState.html#a0b10c2ed83f730ab25f808ca4159e0a1',1,'State']]] +]; diff --git a/Documents/Doxygen/html/search/variables_9.html b/Documents/Doxygen/html/search/variables_9.html new file mode 100644 index 0000000..adfa478 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_9.js b/Documents/Doxygen/html/search/variables_9.js new file mode 100644 index 0000000..9b8bc4a --- /dev/null +++ b/Documents/Doxygen/html/search/variables_9.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['m_5fbuttonpressed_279',['m_buttonPressed',['../structMenuCtrl.html#ac934eaf7540f23d8f603938031f95e10',1,'MenuCtrl']]], + ['m_5fbuttonpressedlong_280',['m_buttonPressedLong',['../structMenuCtrl.html#a143a285e1e4805feb057173b9116dcd0',1,'MenuCtrl']]], + ['meman_281',['MemAn',['../controls_8c.html#a1c5d85aa97ec15c2308e5c688d8d297c',1,'controls.c']]], + ['memaus_282',['MemAus',['../controls_8c.html#ae3163144fae43c843de52bb19a73fc4c',1,'controls.c']]], + ['membuttonmode_283',['MemButtonMode',['../structConfig.html#adfbadb3847cb30d90b89f2db5b4850e4',1,'Config']]], + ['memory_284',['Memory',['../structConfig.html#a471840b99ff046bf1404f8640a8193a8',1,'Config::Memory()'],['../controls_8c.html#ab89e4faa251feb81fa4cc7d9de2e3fcd',1,'Memory(): controls.c']]], + ['menuctrltimer_285',['MenuCtrlTimer',['../controls_8h.html#a088c685d08447f6614b3aea76cd94582',1,'MenuCtrlTimer(): globals.h'],['../globals_8h.html#a088c685d08447f6614b3aea76cd94582',1,'MenuCtrlTimer(): globals.h']]], + ['msg1_286',['Msg1',['../structMessage.html#ab381872a2fb6867d57478a88a760bf02',1,'Message']]], + ['msg2_287',['Msg2',['../structMessage.html#ac49356fe1ae9961bfa1dbe49f043f6f6',1,'Message']]], + ['msg3_288',['Msg3',['../structMessage.html#a1c740c8f5879720483a483c36656e3f8',1,'Message']]], + ['msg4_289',['Msg4',['../structMessage.html#aca26aa7f7c5432ceef8aabd2711b8f47',1,'Message']]], + ['msg5_290',['Msg5',['../structMessage.html#a47e9ec3da93b993528f717ecf67c88c0',1,'Message']]] +]; diff --git a/Documents/Doxygen/html/search/variables_a.html b/Documents/Doxygen/html/search/variables_a.html new file mode 100644 index 0000000..fd8b376 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_a.js b/Documents/Doxygen/html/search/variables_a.js new file mode 100644 index 0000000..6450c5f --- /dev/null +++ b/Documents/Doxygen/html/search/variables_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['no_291',['No',['../controls_8c.html#a52e48eafec4559dcc5fa997a3781e4c5',1,'controls.c']]] +]; diff --git a/Documents/Doxygen/html/search/variables_b.html b/Documents/Doxygen/html/search/variables_b.html new file mode 100644 index 0000000..0d4afcb --- /dev/null +++ b/Documents/Doxygen/html/search/variables_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_b.js b/Documents/Doxygen/html/search/variables_b.js new file mode 100644 index 0000000..95cde28 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paddlemode_292',['PaddleMode',['../globals_8h.html#ad7f78d2aebfab57b15aa5bf6e28d8723',1,'globals.h']]] +]; diff --git a/Documents/Doxygen/html/search/variables_c.html b/Documents/Doxygen/html/search/variables_c.html new file mode 100644 index 0000000..0bbab13 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_c.js b/Documents/Doxygen/html/search/variables_c.js new file mode 100644 index 0000000..ff4a1a7 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_c.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['ratio_293',['Ratio',['../structConfig.html#ac8db90b71b36d0a49ef231e68fb42797',1,'Config::Ratio()'],['../controls_8c.html#aafb08180dd6b40c7ceb1f987d29e01aa',1,'Ratio(): controls.c']]], + ['reverse_294',['Reverse',['../structConfig.html#a8be063e5e1e539a860e2714b30d66ecc',1,'Config']]], + ['reverselr_295',['ReverseLR',['../controls_8c.html#a3aef3986a3ae6ca48eb4f92532d827ae',1,'controls.c']]], + ['reverserl_296',['ReverseRL',['../controls_8c.html#a6fcaa55631cc1a96c082f6d8da9357a2',1,'controls.c']]], + ['risetime_297',['RiseTime',['../structConfig.html#a627e732da58565b3d28f99b82c6a5c54',1,'Config::RiseTime()'],['../controls_8c.html#aec62b46d086a27a9d99a82f846b449a5',1,'RiseTime(): controls.c']]], + ['risetimecounter_298',['RiseTimeCounter',['../structConfig.html#a5afac0757bcf374b784a1250501d0bb0',1,'Config']]] +]; diff --git a/Documents/Doxygen/html/search/variables_d.html b/Documents/Doxygen/html/search/variables_d.html new file mode 100644 index 0000000..a749c83 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_d.js b/Documents/Doxygen/html/search/variables_d.js new file mode 100644 index 0000000..38dc224 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_d.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['sendstatus_299',['SendStatus',['../structState.html#ac9b34cc2b3cb4f8ffe789278d9b76616',1,'State']]], + ['sidetoneenabled_300',['SidetoneEnabled',['../structState.html#aaebbf5da7337abd9a683f6fd3d63087d',1,'State::SidetoneEnabled()'],['../structConfig.html#a7d6dfda9db154b977769378223d56eff',1,'Config::SidetoneEnabled()']]], + ['sidetonefreq_301',['SidetoneFreq',['../structConfig.html#aa3910963f687f6cea42eb74a662f0504',1,'Config']]], + ['sidetonefreq_302',['SideToneFreq',['../controls_8c.html#a4e5958495ba326d1ef4ca81aadf97bea',1,'controls.c']]], + ['sidetoneoff_303',['SidetoneOff',['../structState.html#a5e94242222ee7d6061fb36f5374f36b4',1,'State']]], + ['sidetoneonoff_304',['SideToneOnOff',['../controls_8c.html#a913981a1b4818d9fb9a39bf65326d832',1,'controls.c']]], + ['spcmillis_305',['SpcMillis',['../globals_8h.html#a7db74a7792308dd1d7c35be61d5ff9e8',1,'globals.h']]], + ['sreg_5ftmp_306',['sreg_tmp',['../functions_8h.html#a82a35872e59db8f8de1f0e42854355dd',1,'functions.h']]], + ['statebuttonpressed_307',['StateButtonPressed',['../globals_8h.html#a094f3d15714cd07a3536db03d58cb818',1,'globals.h']]], + ['statepaddledahkeypressed_308',['StatePaddleDahKeyPressed',['../globals_8h.html#a92483c848dd64122cc79472ad979f5e5',1,'globals.h']]], + ['statepaddleditkeypressed_309',['StatePaddleDitKeyPressed',['../globals_8h.html#a9684e7a5392d3dc5b8436002c3ce1c85',1,'globals.h']]], + ['staterisetime_310',['StateRiseTime',['../globals_8h.html#ab36cf30c9e53f719929eba1f738e4b12',1,'globals.h']]], + ['staterisetimecounter_311',['StateRiseTimeCounter',['../globals_8h.html#a03249b48d31b6f929b91011f73c3eb56',1,'globals.h']]], + ['statestraightkeypressed_312',['StateStraightKeyPressed',['../globals_8h.html#a39b1d9792105a52be2c2713ecf044a97',1,'globals.h']]], + ['strx1_313',['sTrx1',['../controls_8c.html#a6203d557889176e261076e2f088df303',1,'controls.c']]], + ['strx2_314',['sTrx2',['../controls_8c.html#a35d38bfd22e4419f9f56cdb345a8e7e4',1,'controls.c']]], + ['submenue_315',['SubMenue',['../structMenuCtrl.html#a18592f292af3324a9d91db635c2e6fec',1,'MenuCtrl']]] +]; diff --git a/Documents/Doxygen/html/search/variables_e.html b/Documents/Doxygen/html/search/variables_e.html new file mode 100644 index 0000000..3d84e83 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_e.js b/Documents/Doxygen/html/search/variables_e.js new file mode 100644 index 0000000..cc5e91e --- /dev/null +++ b/Documents/Doxygen/html/search/variables_e.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['t_5fdelayms_316',['t_delayms',['../globals_8h.html#a4a4d36a87b010340a12f80300a0c5f76',1,'globals.h']]], + ['t_5felementlength_317',['t_elementlength',['../globals_8h.html#a8a613665f46a0641e6dc293da130ab23',1,'globals.h']]], + ['timerbuttonpressed_318',['TimerButtonPressed',['../globals_8h.html#a926757eaf37be188fd6e15410d83c953',1,'globals.h']]], + ['timerpaddledahkeypressed_319',['TimerPaddleDahKeyPressed',['../globals_8h.html#a57e73db78b59b4d79e72189fb0158f7a',1,'globals.h']]], + ['timerpaddleditkeypressed_320',['TimerPaddleDitKeyPressed',['../globals_8h.html#a170fcf4ece2368541f1bcb04a3dd1511',1,'globals.h']]], + ['timerstraightkeypressed_321',['TimerStraightKeyPressed',['../globals_8h.html#a0ca92f009021ed55c2f9199cf5bf80c3',1,'globals.h']]], + ['ton_322',['Ton',['../controls_8c.html#a5d84b58ef20baadc27efb09bca3d8d98',1,'controls.c']]], + ['tonan_323',['TonAn',['../controls_8c.html#a8a6e687fe4fb9e5aea3ac1e69b599330',1,'controls.c']]], + ['tonaus_324',['TonAus',['../controls_8c.html#ab1d7bb6c3e5c9967ffc4668fafb03c4f',1,'controls.c']]], + ['trx1_325',['Trx1',['../structConfig.html#a69e7d809f90ded45fed3d7511f5145dd',1,'Config']]], + ['trx2_326',['Trx2',['../structConfig.html#a4401df925b1dc135a26043c0809db461',1,'Config']]] +]; diff --git a/Documents/Doxygen/html/search/variables_f.html b/Documents/Doxygen/html/search/variables_f.html new file mode 100644 index 0000000..b0e6db6 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Lade ...
    +
    + +
    Suche ...
    +
    Keine Treffer
    + +
    + + diff --git a/Documents/Doxygen/html/search/variables_f.js b/Documents/Doxygen/html/search/variables_f.js new file mode 100644 index 0000000..79d7699 --- /dev/null +++ b/Documents/Doxygen/html/search/variables_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ultimatic_327',['Ultimatic',['../controls_8c.html#a3dc8c998dd6a5d1d71831a7fd8fa1ee7',1,'controls.c']]], + ['update_328',['Update',['../structMenuCtrl.html#ab5689421bcc8b519acde95507a30261d',1,'MenuCtrl']]] +]; diff --git a/Documents/Doxygen/html/splitbar.png b/Documents/Doxygen/html/splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/Documents/Doxygen/html/splitbar.png differ diff --git a/Documents/Doxygen/html/structConfig.html b/Documents/Doxygen/html/structConfig.html new file mode 100644 index 0000000..00416cf --- /dev/null +++ b/Documents/Doxygen/html/structConfig.html @@ -0,0 +1,397 @@ + + + + + + + +BJ-Keyer: Config Strukturreferenz + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    BJ-Keyer +  1.03 +
    +
    Morsekeyer für 2 TRX und 6 Morsetasten
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    Config Strukturreferenz
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Datenfelder

    uint8_t Trx1: 1
     TRX 1 eingeschaltet. Mehr ...
     
    uint8_t Trx2: 1
     TRX 2 eingeschaltet. Mehr ...
     
    uint8_t KeyerMode: 3
     Iambic A, Iambic B oder Ultimatic. Mehr ...
     
    uint8_t SidetoneEnabled: 1
     Mithörton eingeschaltet. Mehr ...
     
    uint8_t WpMBpM: 1
     WpM oder BpM Anzeige. Mehr ...
     
    uint8_t Reverse: 1
     linkes/rechtes Paddle vertauschen Mehr ...
     
    uint8_t Ratio
     Punkt/Strich Verhältnis 1:3. Mehr ...
     
    uint8_t Weight
     Punkt/Strich Gewichtung. Mehr ...
     
    uint8_t Memory:1
     Punkt/Strich Speicher. Mehr ...
     
    uint8_t MemButtonMode:1
     Button 5 als Umschalter TRX oder Speichertaste. Mehr ...
     
    uint16_t SidetoneFreq
     Frequenz des Mithörtons. Mehr ...
     
    uint8_t WpM
     WpM. Mehr ...
     
    uint8_t RiseTime
     Anstiegszeit Sinuston. Mehr ...
     
    uint8_t RiseTimeCounter
     Anzahl Sinusschwingungen für den Anstieg. Mehr ...
     
    uint8_t DebounceTime
     Entprellzeit für Straight Key Eingang. Mehr ...
     
    +

    Dokumentation der Felder

    + +

    ◆ DebounceTime

    + +
    +
    + + + + +
    uint8_t Config::DebounceTime
    +
    + +

    Entprellzeit für Straight Key Eingang.

    + +
    +
    + +

    ◆ KeyerMode

    + +
    +
    + + + + +
    uint8_t Config::KeyerMode
    +
    + +

    Iambic A, Iambic B oder Ultimatic.

    + +
    +
    + +

    ◆ MemButtonMode

    + +
    +
    + + + + +
    uint8_t Config::MemButtonMode
    +
    + +

    Button 5 als Umschalter TRX oder Speichertaste.

    + +
    +
    + +

    ◆ Memory

    + +
    +
    + + + + +
    uint8_t Config::Memory
    +
    + +

    Punkt/Strich Speicher.

    + +
    +
    + +

    ◆ Ratio

    + +
    +
    + + + + +
    uint8_t Config::Ratio
    +
    + +

    Punkt/Strich Verhältnis 1:3.

    + +
    +
    + +

    ◆ Reverse

    + +
    +
    + + + + +
    uint8_t Config::Reverse
    +
    + +

    linkes/rechtes Paddle vertauschen

    + +
    +
    + +

    ◆ RiseTime

    + +
    +
    + + + + +
    uint8_t Config::RiseTime
    +
    + +

    Anstiegszeit Sinuston.

    + +
    +
    + +

    ◆ RiseTimeCounter

    + +
    +
    + + + + +
    uint8_t Config::RiseTimeCounter
    +
    + +

    Anzahl Sinusschwingungen für den Anstieg.

    + +
    +
    + +

    ◆ SidetoneEnabled

    + +
    +
    + + + + +
    uint8_t Config::SidetoneEnabled
    +
    + +

    Mithörton eingeschaltet.

    + +
    +
    + +

    ◆ SidetoneFreq

    + +
    +
    + + + + +
    uint16_t Config::SidetoneFreq
    +
    + +

    Frequenz des Mithörtons.

    + +
    +
    + +

    ◆ Trx1

    + +
    +
    + + + + +
    uint8_t Config::Trx1
    +
    + +

    TRX 1 eingeschaltet.

    + +
    +
    + +

    ◆ Trx2

    + +
    +
    + + + + +
    uint8_t Config::Trx2
    +
    + +

    TRX 2 eingeschaltet.

    + +
    +
    + +

    ◆ Weight

    + +
    +
    + + + + +
    uint8_t Config::Weight
    +
    + +

    Punkt/Strich Gewichtung.

    + +
    +
    + +

    ◆ WpM

    + +
    +
    + + + + +
    uint8_t Config::WpM
    +
    + +

    WpM.

    + +
    +
    + +

    ◆ WpMBpM

    + +
    +
    + + + + +
    uint8_t Config::WpMBpM
    +
    + +

    WpM oder BpM Anzeige.

    + +
    +
    +
    Die Dokumentation für diese Struktur wurde erzeugt aufgrund der Datei: +
    +
    + + + + diff --git a/Documents/Doxygen/html/structConfig.js b/Documents/Doxygen/html/structConfig.js new file mode 100644 index 0000000..29d304a --- /dev/null +++ b/Documents/Doxygen/html/structConfig.js @@ -0,0 +1,18 @@ +var structConfig = +[ + [ "DebounceTime", "structConfig.html#ace4e1403e52d3d19aa9f2470a13cfaa3", null ], + [ "KeyerMode", "structConfig.html#aef4f69db097a750c80f3b719bc14f341", null ], + [ "MemButtonMode", "structConfig.html#adfbadb3847cb30d90b89f2db5b4850e4", null ], + [ "Memory", "structConfig.html#a471840b99ff046bf1404f8640a8193a8", null ], + [ "Ratio", "structConfig.html#ac8db90b71b36d0a49ef231e68fb42797", null ], + [ "Reverse", "structConfig.html#a8be063e5e1e539a860e2714b30d66ecc", null ], + [ "RiseTime", "structConfig.html#a627e732da58565b3d28f99b82c6a5c54", null ], + [ "RiseTimeCounter", "structConfig.html#a5afac0757bcf374b784a1250501d0bb0", null ], + [ "SidetoneEnabled", "structConfig.html#a7d6dfda9db154b977769378223d56eff", null ], + [ "SidetoneFreq", "structConfig.html#aa3910963f687f6cea42eb74a662f0504", null ], + [ "Trx1", "structConfig.html#a69e7d809f90ded45fed3d7511f5145dd", null ], + [ "Trx2", "structConfig.html#a4401df925b1dc135a26043c0809db461", null ], + [ "Weight", "structConfig.html#ace909792695e3949303df7fc26668739", null ], + [ "WpM", "structConfig.html#ad897d01be9484ac915e8d545c5937e16", null ], + [ "WpMBpM", "structConfig.html#a663b40e9d018ada8d4b6b97b4b2f5be0", null ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/structMenuCtrl.html b/Documents/Doxygen/html/structMenuCtrl.html new file mode 100644 index 0000000..188f7df --- /dev/null +++ b/Documents/Doxygen/html/structMenuCtrl.html @@ -0,0 +1,283 @@ + + + + + + + +BJ-Keyer: MenuCtrl Strukturreferenz + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    BJ-Keyer +  1.03 +
    +
    Morsekeyer für 2 TRX und 6 Morsetasten
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    MenuCtrl Strukturreferenz
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Datenfelder

    uint8_t buttonPressed: 1
     Taster Drehencoder gedrückt. Mehr ...
     
    uint8_t buttonPressedLong: 1
     Taster Drehencoder lange gedrückt. Mehr ...
     
    uint8_t m_buttonPressed: 2
     Merker für Taster Drehencoder gedrückt. Mehr ...
     
    uint8_t m_buttonPressedLong: 1
     Merker für Taster Drehencoder lange gedrückt. Mehr ...
     
    uint8_t ClrScr: 1
     Bitmerker für Display löschen. Mehr ...
     
    uint8_t Config: 1
     Bitmerker für Config geändert. Mehr ...
     
    uint8_t Update: 1
     Bitmerker für Display update. Mehr ...
     
    uint8_t CurMenue
     aktuelles Menue Mehr ...
     
    uint8_t SubMenue: 1
     im Submenue Mehr ...
     
    +

    Dokumentation der Felder

    + +

    ◆ buttonPressed

    + +
    +
    + + + + +
    uint8_t MenuCtrl::buttonPressed
    +
    + +

    Taster Drehencoder gedrückt.

    + +
    +
    + +

    ◆ buttonPressedLong

    + +
    +
    + + + + +
    uint8_t MenuCtrl::buttonPressedLong
    +
    + +

    Taster Drehencoder lange gedrückt.

    + +
    +
    + +

    ◆ ClrScr

    + +
    +
    + + + + +
    uint8_t MenuCtrl::ClrScr
    +
    + +

    Bitmerker für Display löschen.

    + +
    +
    + +

    ◆ Config

    + +
    +
    + + + + +
    uint8_t MenuCtrl::Config
    +
    + +

    Bitmerker für Config geändert.

    + +
    +
    + +

    ◆ CurMenue

    + +
    +
    + + + + +
    uint8_t MenuCtrl::CurMenue
    +
    + +

    aktuelles Menue

    + +
    +
    + +

    ◆ m_buttonPressed

    + +
    +
    + + + + +
    uint8_t MenuCtrl::m_buttonPressed
    +
    + +

    Merker für Taster Drehencoder gedrückt.

    + +
    +
    + +

    ◆ m_buttonPressedLong

    + +
    +
    + + + + +
    uint8_t MenuCtrl::m_buttonPressedLong
    +
    + +

    Merker für Taster Drehencoder lange gedrückt.

    + +
    +
    + +

    ◆ SubMenue

    + +
    +
    + + + + +
    uint8_t MenuCtrl::SubMenue
    +
    + +

    im Submenue

    + +
    +
    + +

    ◆ Update

    + +
    +
    + + + + +
    uint8_t MenuCtrl::Update
    +
    + +

    Bitmerker für Display update.

    + +
    +
    +
    Die Dokumentation für diese Struktur wurde erzeugt aufgrund der Datei: +
    +
    + + + + diff --git a/Documents/Doxygen/html/structMenuCtrl.js b/Documents/Doxygen/html/structMenuCtrl.js new file mode 100644 index 0000000..dc0d5cb --- /dev/null +++ b/Documents/Doxygen/html/structMenuCtrl.js @@ -0,0 +1,12 @@ +var structMenuCtrl = +[ + [ "buttonPressed", "structMenuCtrl.html#aee5679939884de604d3e5ad970ec0cbb", null ], + [ "buttonPressedLong", "structMenuCtrl.html#a45ed8ad2a9ae8803b446e599fb66fa78", null ], + [ "ClrScr", "structMenuCtrl.html#ad890262e118180236b9eb54f7611b47c", null ], + [ "Config", "structMenuCtrl.html#a47430d7c1484d7e5e18ae5a7fc4f8335", null ], + [ "CurMenue", "structMenuCtrl.html#a458df051e05029982d088d98ac1a8069", null ], + [ "m_buttonPressed", "structMenuCtrl.html#ac934eaf7540f23d8f603938031f95e10", null ], + [ "m_buttonPressedLong", "structMenuCtrl.html#a143a285e1e4805feb057173b9116dcd0", null ], + [ "SubMenue", "structMenuCtrl.html#a18592f292af3324a9d91db635c2e6fec", null ], + [ "Update", "structMenuCtrl.html#ab5689421bcc8b519acde95507a30261d", null ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/structMessage.html b/Documents/Doxygen/html/structMessage.html new file mode 100644 index 0000000..2897b70 --- /dev/null +++ b/Documents/Doxygen/html/structMessage.html @@ -0,0 +1,207 @@ + + + + + + + +BJ-Keyer: Message Strukturreferenz + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    BJ-Keyer +  1.03 +
    +
    Morsekeyer für 2 TRX und 6 Morsetasten
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    Message Strukturreferenz
    +
    +
    + + + + + + + + + + + + + + + + + +

    +Datenfelder

    char Msg1 [MSGSIZE]
     Textspeicher 1. Mehr ...
     
    char Msg2 [MSGSIZE]
     Textspeicher 2. Mehr ...
     
    char Msg3 [MSGSIZE]
     Textspeicher 3. Mehr ...
     
    char Msg4 [MSGSIZE]
     Textspeicher 4. Mehr ...
     
    char Msg5 [MSGSIZE]
     Textspeicher 5. Mehr ...
     
    +

    Dokumentation der Felder

    + +

    ◆ Msg1

    + +
    +
    + + + + +
    char Message::Msg1[MSGSIZE]
    +
    + +

    Textspeicher 1.

    + +
    +
    + +

    ◆ Msg2

    + +
    +
    + + + + +
    char Message::Msg2[MSGSIZE]
    +
    + +

    Textspeicher 2.

    + +
    +
    + +

    ◆ Msg3

    + +
    +
    + + + + +
    char Message::Msg3[MSGSIZE]
    +
    + +

    Textspeicher 3.

    + +
    +
    + +

    ◆ Msg4

    + +
    +
    + + + + +
    char Message::Msg4[MSGSIZE]
    +
    + +

    Textspeicher 4.

    + +
    +
    + +

    ◆ Msg5

    + +
    +
    + + + + +
    char Message::Msg5[MSGSIZE]
    +
    + +

    Textspeicher 5.

    + +
    +
    +
    Die Dokumentation für diese Struktur wurde erzeugt aufgrund der Datei: +
    +
    + + + + diff --git a/Documents/Doxygen/html/structMessage.js b/Documents/Doxygen/html/structMessage.js new file mode 100644 index 0000000..ab8aa66 --- /dev/null +++ b/Documents/Doxygen/html/structMessage.js @@ -0,0 +1,8 @@ +var structMessage = +[ + [ "Msg1", "structMessage.html#ab381872a2fb6867d57478a88a760bf02", null ], + [ "Msg2", "structMessage.html#ac49356fe1ae9961bfa1dbe49f043f6f6", null ], + [ "Msg3", "structMessage.html#a1c740c8f5879720483a483c36656e3f8", null ], + [ "Msg4", "structMessage.html#aca26aa7f7c5432ceef8aabd2711b8f47", null ], + [ "Msg5", "structMessage.html#a47e9ec3da93b993528f717ecf67c88c0", null ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/structSerialState.html b/Documents/Doxygen/html/structSerialState.html new file mode 100644 index 0000000..5a2ccba --- /dev/null +++ b/Documents/Doxygen/html/structSerialState.html @@ -0,0 +1,117 @@ + + + + + + + +BJ-Keyer: SerialState Strukturreferenz + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    BJ-Keyer +  1.03 +
    +
    Morsekeyer für 2 TRX und 6 Morsetasten
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    SerialState Strukturreferenz
    +
    +
    + + + + + + +

    +Datenfelder

    +uint8_t Ausgabe
     
    +uint8_t Eingabe
     
    +
    Die Dokumentation für diese Struktur wurde erzeugt aufgrund der Datei: +
    +
    + + + + diff --git a/Documents/Doxygen/html/structSerialState.js b/Documents/Doxygen/html/structSerialState.js new file mode 100644 index 0000000..07ae7ea --- /dev/null +++ b/Documents/Doxygen/html/structSerialState.js @@ -0,0 +1,5 @@ +var structSerialState = +[ + [ "Ausgabe", "structSerialState.html#a6a240fb88c230572cb4235b1d70f3da8", null ], + [ "Eingabe", "structSerialState.html#aab0f350cb64b46822bfe911c465865ad", null ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/structState.html b/Documents/Doxygen/html/structState.html new file mode 100644 index 0000000..f4d45b3 --- /dev/null +++ b/Documents/Doxygen/html/structState.html @@ -0,0 +1,327 @@ + + + + + + + +BJ-Keyer: State Strukturreferenz + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    BJ-Keyer +  1.03 +
    +
    Morsekeyer für 2 TRX und 6 Morsetasten
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    State Strukturreferenz
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Datenfelder

    uint8_t WpMChanged: 1
     Geschwindigkeit geändert. Mehr ...
     
    uint8_t WriteWpMEEprom: 1
     nicht gespeicherte Geschwindigkeit Mehr ...
     
    uint8_t WriteEEprom: 1
     nicht gespeicherte EEprom Werte Mehr ...
     
    uint8_t WriteMsgEEprom: 2
     nicht gespeicherte Textnachrichten Mehr ...
     
    uint8_t SidetoneOff: 1
     Mithörton an oder aus. Mehr ...
     
    uint8_t SidetoneEnabled: 1
     Mithörton ein- oder ausgeschaltet. Mehr ...
     
    uint8_t SendStatus
     Status, ob Symbol gesendet wird. Mehr ...
     
    uint8_t Automatic
     Speicher wird gesendet. Mehr ...
     
    uint8_t LastSymbolWasDit: 1
     letztes Symbol war ein Punkt Mehr ...
     
    uint8_t DitPressed: 1
     Dit Hebel betätigt. Mehr ...
     
    uint8_t DahPressed: 1
     Dah Hebel betätigt. Mehr ...
     
    +uint8_t KeyState:1
     
    +uint8_t KeyTX:1
     
    +

    Dokumentation der Felder

    + +

    ◆ Automatic

    + +
    +
    + + + + +
    uint8_t State::Automatic
    +
    + +

    Speicher wird gesendet.

    + +
    +
    + +

    ◆ DahPressed

    + +
    +
    + + + + +
    uint8_t State::DahPressed
    +
    + +

    Dah Hebel betätigt.

    + +
    +
    + +

    ◆ DitPressed

    + +
    +
    + + + + +
    uint8_t State::DitPressed
    +
    + +

    Dit Hebel betätigt.

    + +
    +
    + +

    ◆ LastSymbolWasDit

    + +
    +
    + + + + +
    uint8_t State::LastSymbolWasDit
    +
    + +

    letztes Symbol war ein Punkt

    + +
    +
    + +

    ◆ SendStatus

    + +
    +
    + + + + +
    uint8_t State::SendStatus
    +
    + +

    Status, ob Symbol gesendet wird.

    + +
    +
    + +

    ◆ SidetoneEnabled

    + +
    +
    + + + + +
    uint8_t State::SidetoneEnabled
    +
    + +

    Mithörton ein- oder ausgeschaltet.

    + +
    +
    + +

    ◆ SidetoneOff

    + +
    +
    + + + + +
    uint8_t State::SidetoneOff
    +
    + +

    Mithörton an oder aus.

    + +
    +
    + +

    ◆ WpMChanged

    + +
    +
    + + + + +
    uint8_t State::WpMChanged
    +
    + +

    Geschwindigkeit geändert.

    + +
    +
    + +

    ◆ WriteEEprom

    + +
    +
    + + + + +
    uint8_t State::WriteEEprom
    +
    + +

    nicht gespeicherte EEprom Werte

    + +
    +
    + +

    ◆ WriteMsgEEprom

    + +
    +
    + + + + +
    uint8_t State::WriteMsgEEprom
    +
    + +

    nicht gespeicherte Textnachrichten

    + +
    +
    + +

    ◆ WriteWpMEEprom

    + +
    +
    + + + + +
    uint8_t State::WriteWpMEEprom
    +
    + +

    nicht gespeicherte Geschwindigkeit

    + +
    +
    +
    Die Dokumentation für diese Struktur wurde erzeugt aufgrund der Datei: +
    +
    + + + + diff --git a/Documents/Doxygen/html/structState.js b/Documents/Doxygen/html/structState.js new file mode 100644 index 0000000..066facb --- /dev/null +++ b/Documents/Doxygen/html/structState.js @@ -0,0 +1,16 @@ +var structState = +[ + [ "Automatic", "structState.html#a77084e27de545c8c9326e317a8c1edff", null ], + [ "DahPressed", "structState.html#a76bff5a7c3dd312851c50afccd017b33", null ], + [ "DitPressed", "structState.html#a0e3dcd5d2b54a5256fd71a1d956a2a0d", null ], + [ "KeyState", "structState.html#abd2083729e1ccf082240af06a4619756", null ], + [ "KeyTX", "structState.html#aa0bd07f4422e7c411be3c34b8e0e7dbf", null ], + [ "LastSymbolWasDit", "structState.html#a0b10c2ed83f730ab25f808ca4159e0a1", null ], + [ "SendStatus", "structState.html#ac9b34cc2b3cb4f8ffe789278d9b76616", null ], + [ "SidetoneEnabled", "structState.html#aaebbf5da7337abd9a683f6fd3d63087d", null ], + [ "SidetoneOff", "structState.html#a5e94242222ee7d6061fb36f5374f36b4", null ], + [ "WpMChanged", "structState.html#a52ffc38efd1a9798d8d92014fe664e62", null ], + [ "WriteEEprom", "structState.html#a0589ba8e59b2a9a246ce8d14f783577b", null ], + [ "WriteMsgEEprom", "structState.html#acbc62fb74e564116927efe2f2147b8b9", null ], + [ "WriteWpMEEprom", "structState.html#a0213cd5057520f3b652f3755dcdc0e70", null ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/sync_off.png b/Documents/Doxygen/html/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/Documents/Doxygen/html/sync_off.png differ diff --git a/Documents/Doxygen/html/sync_on.png b/Documents/Doxygen/html/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/Documents/Doxygen/html/sync_on.png differ diff --git a/Documents/Doxygen/html/tab_a.png b/Documents/Doxygen/html/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/Documents/Doxygen/html/tab_a.png differ diff --git a/Documents/Doxygen/html/tab_b.png b/Documents/Doxygen/html/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/Documents/Doxygen/html/tab_b.png differ diff --git a/Documents/Doxygen/html/tab_h.png b/Documents/Doxygen/html/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/Documents/Doxygen/html/tab_h.png differ diff --git a/Documents/Doxygen/html/tab_s.png b/Documents/Doxygen/html/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/Documents/Doxygen/html/tab_s.png differ diff --git a/Documents/Doxygen/html/tabs.css b/Documents/Doxygen/html/tabs.css new file mode 100644 index 0000000..7d45d36 --- /dev/null +++ b/Documents/Doxygen/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/Documents/Doxygen/html/todo.html b/Documents/Doxygen/html/todo.html new file mode 100644 index 0000000..b808edb --- /dev/null +++ b/Documents/Doxygen/html/todo.html @@ -0,0 +1,106 @@ + + + + + + + +BJ-Keyer: Ausstehende Aufgaben + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    BJ-Keyer +  1.03 +
    +
    Morsekeyer für 2 TRX und 6 Morsetasten
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Ausstehende Aufgaben
    +
    +
    +
    +
    Global SendString (char *s)
    +
    Für die Zeichenausgabe der Textspeicher könnte hier noch die Beachtung des eingestellten Ratios und der Gewichtung zugefügt werden.
    +
    +
    +
    +
    + + + + diff --git a/Documents/Doxygen/html/vt100_8c.html b/Documents/Doxygen/html/vt100_8c.html new file mode 100644 index 0000000..c1fe848 --- /dev/null +++ b/Documents/Doxygen/html/vt100_8c.html @@ -0,0 +1,358 @@ + + + + + + + +BJ-Keyer: vt100.c-Dateireferenz + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    BJ-Keyer +  1.03 +
    +
    Morsekeyer für 2 TRX und 6 Morsetasten
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    vt100.c-Dateireferenz
    +
    +
    + +

    VT100 Terminalausgabe. +Mehr ...

    +
    #include "vt100.h"
    +
    +Include-Abhängigkeitsdiagramm für vt100.c:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + +

    +Funktionen

    void SerialMenue (void)
     Auswahlmenue über serielle Schnittstelle ausgeben. Mehr ...
     
    void SerialSetup (void)
     Aktuelle Einstellungen über serielle Schnittstelle ausgeben. Mehr ...
     
    void SerialAbout (void)
     Versionsinformation über serielle Schnittstelle ausgeben. Mehr ...
     
    void SerialReset (void)
     Löscht die Terminalanzeige und gibt Versionsinfo und Menue aus. Mehr ...
     
    void SerialReceive (char c)
     Wird vom UART Interrupt aufgerufen, wenn ein Zeichen empfangen wurde. Mehr ...
     
    +void SerialMsgOut (void)
     
    void SerialMsgMenue (char c)
     Zeigt einen Textspeicher an, der geändert werden soll. Mehr ...
     
    +

    Ausführliche Beschreibung

    +

    VT100 Terminalausgabe.

    +

    Dokumentation der Funktionen

    + +

    ◆ SerialAbout()

    + +
    +
    + + + + + + + + +
    void SerialAbout (void )
    +
    + +

    Versionsinformation über serielle Schnittstelle ausgeben.

    +
    Parameter
    + + +
    none
    +
    +
    +
    Rückgabewerte
    + + +
    none
    +
    +
    + +
    +
    + +

    ◆ SerialMenue()

    + +
    +
    + + + + + + + + +
    void SerialMenue (void )
    +
    + +

    Auswahlmenue über serielle Schnittstelle ausgeben.

    +
    Parameter
    + + +
    none
    +
    +
    +
    Rückgabewerte
    + + +
    none
    +
    +
    + +
    +
    + +

    ◆ SerialMsgMenue()

    + +
    +
    + + + + + + + + +
    void SerialMsgMenue (char c)
    +
    + +

    Zeigt einen Textspeicher an, der geändert werden soll.

    +
    Parameter
    + + +
    cNummer des Textspeichers
    +
    +
    +
    Rückgabewerte
    + + +
    none
    +
    +
    + +
    +
    + +

    ◆ SerialReceive()

    + +
    +
    + + + + + + + + +
    void SerialReceive (char c)
    +
    + +

    Wird vom UART Interrupt aufgerufen, wenn ein Zeichen empfangen wurde.

    +
    Parameter
    + + +
    cZeichen, das empfangen wurde
    +
    +
    +
    Rückgabewerte
    + + +
    none
    +
    +
    + +
    +
    + +

    ◆ SerialReset()

    + +
    +
    + + + + + + + + +
    void SerialReset (void )
    +
    + +

    Löscht die Terminalanzeige und gibt Versionsinfo und Menue aus.

    +
    Parameter
    + + +
    none
    +
    +
    +
    Rückgabewerte
    + + +
    none
    +
    +
    + +
    +
    + +

    ◆ SerialSetup()

    + +
    +
    + + + + + + + + +
    void SerialSetup (void )
    +
    + +

    Aktuelle Einstellungen über serielle Schnittstelle ausgeben.

    +
    Parameter
    + + +
    none
    +
    +
    +
    Rückgabewerte
    + + +
    none
    +
    +
    + +
    +
    +
    +
    + + + + diff --git a/Documents/Doxygen/html/vt100_8c.js b/Documents/Doxygen/html/vt100_8c.js new file mode 100644 index 0000000..cc4f172 --- /dev/null +++ b/Documents/Doxygen/html/vt100_8c.js @@ -0,0 +1,10 @@ +var vt100_8c = +[ + [ "SerialAbout", "vt100_8c.html#a4ee21561cb51aeaa80633e244b3811c6", null ], + [ "SerialMenue", "vt100_8c.html#af214225c421f33e106f2e94feb80f9d8", null ], + [ "SerialMsgMenue", "vt100_8c.html#a224d9b143a368c30ceceaeffbd696500", null ], + [ "SerialMsgOut", "vt100_8c.html#adee204ccfa569867de5db5c8b614d470", null ], + [ "SerialReceive", "vt100_8c.html#aed5211def004c592733d721fd1d6c186", null ], + [ "SerialReset", "vt100_8c.html#aa9e990762ad311b3582c6e7b0c4addf6", null ], + [ "SerialSetup", "vt100_8c.html#a4c083c2b0ddae216cf2bdfe6490c9738", null ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/vt100_8c__incl.map b/Documents/Doxygen/html/vt100_8c__incl.map new file mode 100644 index 0000000..9eb49f4 --- /dev/null +++ b/Documents/Doxygen/html/vt100_8c__incl.map @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Documents/Doxygen/html/vt100_8c__incl.md5 b/Documents/Doxygen/html/vt100_8c__incl.md5 new file mode 100644 index 0000000..becc3a1 --- /dev/null +++ b/Documents/Doxygen/html/vt100_8c__incl.md5 @@ -0,0 +1 @@ +9fef2bc3f96ce29a173e2ea90bc1824d \ No newline at end of file diff --git a/Documents/Doxygen/html/vt100_8c__incl.png b/Documents/Doxygen/html/vt100_8c__incl.png new file mode 100644 index 0000000..b06073e Binary files /dev/null and b/Documents/Doxygen/html/vt100_8c__incl.png differ diff --git a/Documents/Doxygen/html/vt100_8h.html b/Documents/Doxygen/html/vt100_8h.html new file mode 100644 index 0000000..ef34caa --- /dev/null +++ b/Documents/Doxygen/html/vt100_8h.html @@ -0,0 +1,400 @@ + + + + + + + +BJ-Keyer: vt100.h-Dateireferenz + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    BJ-Keyer +  1.03 +
    +
    Morsekeyer für 2 TRX und 6 Morsetasten
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    vt100.h-Dateireferenz
    +
    +
    + +

    VT100 Terminal. +Mehr ...

    +
    #include "functions.h"
    +
    +Include-Abhängigkeitsdiagramm für vt100.h:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:
    +
    +
    + + + + + + + +
    +
    +

    gehe zum Quellcode dieser Datei

    + + + + +

    +Datenstrukturen

    struct  SerialState
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Makrodefinitionen

    +#define SERMENUE   1
     
    +#define SERMSG   2
     
    +#define SERMSGMENUE   3
     
    +#define SERMSGCHANGE   4
     
    +#define SERMSG1   5
     
    +#define SERMSG2   6
     
    +#define SERMSG3   7
     
    +#define SERMSG4   8
     
    +#define SERMSG5   9
     
    +#define SERMSG0   0
     
    +#define SERSETUP   10
     
    + + + + + + + + + + + + + + + + + + + + +

    +Funktionen

    +void SerialInfo (void)
     
    void SerialAbout (void)
     Versionsinformation über serielle Schnittstelle ausgeben. Mehr ...
     
    void SerialSetup (void)
     Aktuelle Einstellungen über serielle Schnittstelle ausgeben. Mehr ...
     
    void SerialMenue (void)
     Auswahlmenue über serielle Schnittstelle ausgeben. Mehr ...
     
    +void SerialMsgOut (void)
     
    void SerialMsgMenue (char c)
     Zeigt einen Textspeicher an, der geändert werden soll. Mehr ...
     
    void WriteMsgEEprom (uint8_t idx)
     Textspeicher in EEprom schreiben. Mehr ...
     
    + + + + + + + + + + + + + +

    +Variablen

    +static const char *const CLRSCR = "\033[2J"
     
    +char out [120]
     
    +char inp [120]
     
    +uint8_t i
     
    +uint8_t o
     
    +struct SerialState bSerialState
     
    +

    Ausführliche Beschreibung

    +

    VT100 Terminal.

    +
    Autor
    Tom, DL7BJ
    +

    Dokumentation der Funktionen

    + +

    ◆ SerialAbout()

    + +
    +
    + + + + + + + + +
    void SerialAbout (void )
    +
    + +

    Versionsinformation über serielle Schnittstelle ausgeben.

    +
    Parameter
    + + +
    none
    +
    +
    +
    Rückgabewerte
    + + +
    none
    +
    +
    + +
    +
    + +

    ◆ SerialMenue()

    + +
    +
    + + + + + + + + +
    void SerialMenue (void )
    +
    + +

    Auswahlmenue über serielle Schnittstelle ausgeben.

    +
    Parameter
    + + +
    none
    +
    +
    +
    Rückgabewerte
    + + +
    none
    +
    +
    + +
    +
    + +

    ◆ SerialMsgMenue()

    + +
    +
    + + + + + + + + +
    void SerialMsgMenue (char c)
    +
    + +

    Zeigt einen Textspeicher an, der geändert werden soll.

    +
    Parameter
    + + +
    cNummer des Textspeichers
    +
    +
    +
    Rückgabewerte
    + + +
    none
    +
    +
    + +
    +
    + +

    ◆ SerialSetup()

    + +
    +
    + + + + + + + + +
    void SerialSetup (void )
    +
    + +

    Aktuelle Einstellungen über serielle Schnittstelle ausgeben.

    +
    Parameter
    + + +
    none
    +
    +
    +
    Rückgabewerte
    + + +
    none
    +
    +
    + +
    +
    + +

    ◆ WriteMsgEEprom()

    + +
    +
    + + + + + + + + +
    void WriteMsgEEprom (uint8_t idx)
    +
    + +

    Textspeicher in EEprom schreiben.

    +
    Parameter
    + + +
    Nummerdes Textspeichers
    +
    +
    +
    Rückgabe
    none
    + +
    +
    +
    +
    + + + + diff --git a/Documents/Doxygen/html/vt100_8h.js b/Documents/Doxygen/html/vt100_8h.js new file mode 100644 index 0000000..e280a55 --- /dev/null +++ b/Documents/Doxygen/html/vt100_8h.js @@ -0,0 +1,28 @@ +var vt100_8h = +[ + [ "SerialState", "structSerialState.html", "structSerialState" ], + [ "SERMENUE", "vt100_8h.html#a437ae0e23a0dbb5ed203d3164ddc0236", null ], + [ "SERMSG", "vt100_8h.html#a5da74b8a0d9ccc3f50517604b187a24b", null ], + [ "SERMSG0", "vt100_8h.html#aae22a8cd21c908acb2519858d9aa2f79", null ], + [ "SERMSG1", "vt100_8h.html#a616119c79c558ea31a1b2c8b91d83cd6", null ], + [ "SERMSG2", "vt100_8h.html#a7594e068a72dfacf2468960050f5f851", null ], + [ "SERMSG3", "vt100_8h.html#a21d1129bcba5d4d4444ae42a6d9a5764", null ], + [ "SERMSG4", "vt100_8h.html#a3f0bfe942353ecacec9e0565eb0f6e1d", null ], + [ "SERMSG5", "vt100_8h.html#a1986a4efce951e8918bfa48637d5f869", null ], + [ "SERMSGCHANGE", "vt100_8h.html#a46da8d0a51f0d737ab2c30dafd7ad75b", null ], + [ "SERMSGMENUE", "vt100_8h.html#ae27ed790a6b6740b3734189d2b316529", null ], + [ "SERSETUP", "vt100_8h.html#ad979fa8b412ae735d2b0debcf9e128a7", null ], + [ "SerialAbout", "vt100_8h.html#a4ee21561cb51aeaa80633e244b3811c6", null ], + [ "SerialInfo", "vt100_8h.html#a90d76aea7abf0ee9e5218582bd1e2e2c", null ], + [ "SerialMenue", "vt100_8h.html#af214225c421f33e106f2e94feb80f9d8", null ], + [ "SerialMsgMenue", "vt100_8h.html#a224d9b143a368c30ceceaeffbd696500", null ], + [ "SerialMsgOut", "vt100_8h.html#adee204ccfa569867de5db5c8b614d470", null ], + [ "SerialSetup", "vt100_8h.html#a4c083c2b0ddae216cf2bdfe6490c9738", null ], + [ "WriteMsgEEprom", "vt100_8h.html#a77266197e015c3320c0aa4f491101903", null ], + [ "bSerialState", "vt100_8h.html#a0fb4570721a451b3d31a7e71b2124f17", null ], + [ "CLRSCR", "vt100_8h.html#ae9078b83eea3d7919a417fba39d744ce", null ], + [ "i", "vt100_8h.html#af27e3188294c2df66d975b74a09c001d", null ], + [ "inp", "vt100_8h.html#a82ce29ac824fd42dfac671701de20dc9", null ], + [ "o", "vt100_8h.html#a69c4569269da7faedfa431b065370468", null ], + [ "out", "vt100_8h.html#a8ec3a16bc16d93c6f2878b7cc1031c9e", null ] +]; \ No newline at end of file diff --git a/Documents/Doxygen/html/vt100_8h__dep__incl.map b/Documents/Doxygen/html/vt100_8h__dep__incl.map new file mode 100644 index 0000000..47e7823 --- /dev/null +++ b/Documents/Doxygen/html/vt100_8h__dep__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Documents/Doxygen/html/vt100_8h__dep__incl.md5 b/Documents/Doxygen/html/vt100_8h__dep__incl.md5 new file mode 100644 index 0000000..1aefdb1 --- /dev/null +++ b/Documents/Doxygen/html/vt100_8h__dep__incl.md5 @@ -0,0 +1 @@ +23aca8c794e8c72c97482f6f6ef9f87b \ No newline at end of file diff --git a/Documents/Doxygen/html/vt100_8h__dep__incl.png b/Documents/Doxygen/html/vt100_8h__dep__incl.png new file mode 100644 index 0000000..fb4aeb8 Binary files /dev/null and b/Documents/Doxygen/html/vt100_8h__dep__incl.png differ diff --git a/Documents/Doxygen/html/vt100_8h__incl.map b/Documents/Doxygen/html/vt100_8h__incl.map new file mode 100644 index 0000000..4bf9e2b --- /dev/null +++ b/Documents/Doxygen/html/vt100_8h__incl.map @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Documents/Doxygen/html/vt100_8h__incl.md5 b/Documents/Doxygen/html/vt100_8h__incl.md5 new file mode 100644 index 0000000..2b1dd56 --- /dev/null +++ b/Documents/Doxygen/html/vt100_8h__incl.md5 @@ -0,0 +1 @@ +7acea179b8ba51a68c72f8c04729c6f2 \ No newline at end of file diff --git a/Documents/Doxygen/html/vt100_8h__incl.png b/Documents/Doxygen/html/vt100_8h__incl.png new file mode 100644 index 0000000..572f746 Binary files /dev/null and b/Documents/Doxygen/html/vt100_8h__incl.png differ diff --git a/Documents/Doxygen/html/vt100_8h_source.html b/Documents/Doxygen/html/vt100_8h_source.html new file mode 100644 index 0000000..368c41e --- /dev/null +++ b/Documents/Doxygen/html/vt100_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +BJ-Keyer: vt100.h Quellcode + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    BJ-Keyer +  1.03 +
    +
    Morsekeyer für 2 TRX und 6 Morsetasten
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    vt100.h
    +
    +
    +gehe zur Dokumentation dieser Datei
    1 
    +
    6 #ifndef VT100_H_INCLUDED
    +
    7 #define VT100_H_INCLUDED
    +
    8 
    +
    9 #include "functions.h"
    +
    10 
    +
    11 #define SERMENUE 1
    +
    12 #define SERMSG 2
    +
    13 #define SERMSGMENUE 3
    +
    14 #define SERMSGCHANGE 4
    +
    15 #define SERMSG1 5
    +
    16 #define SERMSG2 6
    +
    17 #define SERMSG3 7
    +
    18 #define SERMSG4 8
    +
    19 #define SERMSG5 9
    +
    20 #define SERMSG0 0
    +
    21 #define SERSETUP 10
    +
    22 
    +
    23 void SerialInfo(void);
    +
    24 void SerialAbout(void);
    +
    25 void SerialSetup(void);
    +
    26 void SerialMenue(void);
    +
    27 void SerialMsgOut(void);
    +
    28 void SerialMsgMenue(char c);
    +
    29 // Externals
    +
    30 extern void WriteMsgEEprom(uint8_t idx);
    +
    31 
    +
    32 // Stringkonstanten für VT100 Terminals
    +
    33 static const char* const CLRSCR PROGMEM = "\033[2J";
    +
    34 
    +
    35 char out[120]; // Ausgabebuffer
    +
    36 char inp[120]; // Eingabebuffer
    +
    37 
    +
    38 uint8_t i; // Position Eingabebuffer
    +
    39 uint8_t o; // Position Ausgabebuffer
    +
    40 
    +
    41 // Status der seriellen Schnittstelle
    + +
    43 {
    +
    44  uint8_t Ausgabe; // Welches Menue oder Ausgabe gerade aktiv ist
    +
    45  uint8_t Eingabe; // Eingabe Textspeicher
    +
    46 };
    +
    47 
    +
    48 struct SerialState bSerialState;
    +
    49 
    +
    50 #endif
    +
    Headerdatei für functions.c.
    +
    Definition: vt100.h:43
    +
    void SerialMsgMenue(char c)
    Zeigt einen Textspeicher an, der geändert werden soll.
    Definition: vt100.c:171
    +
    void SerialSetup(void)
    Aktuelle Einstellungen über serielle Schnittstelle ausgeben.
    Definition: vt100.c:29
    +
    void SerialAbout(void)
    Versionsinformation über serielle Schnittstelle ausgeben.
    Definition: vt100.c:71
    +
    void WriteMsgEEprom(uint8_t idx)
    Textspeicher in EEprom schreiben.
    Definition: memory.c:72
    +
    void SerialMenue(void)
    Auswahlmenue über serielle Schnittstelle ausgeben.
    Definition: vt100.c:11
    +
    +
    + + + + diff --git a/Documents/Doxygen/latex/Makefile b/Documents/Doxygen/latex/Makefile new file mode 100644 index 0000000..877c9cc --- /dev/null +++ b/Documents/Doxygen/latex/Makefile @@ -0,0 +1,23 @@ +LATEX_CMD=pdflatex + +all: refman.pdf + +pdf: refman.pdf + +refman.pdf: clean refman.tex + $(LATEX_CMD) refman + makeindex refman.idx + $(LATEX_CMD) refman + latex_count=8 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + $(LATEX_CMD) refman ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + makeindex refman.idx + $(LATEX_CMD) refman + + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf diff --git a/Documents/Doxygen/latex/annotated.tex b/Documents/Doxygen/latex/annotated.tex new file mode 100644 index 0000000..c0b72fc --- /dev/null +++ b/Documents/Doxygen/latex/annotated.tex @@ -0,0 +1,8 @@ +\doxysection{Datenstrukturen} +Hier folgt die Aufzählung aller Datenstrukturen mit einer Kurzbeschreibung\+:\begin{DoxyCompactList} +\item\contentsline{section}{\mbox{\hyperlink{structConfig}{Config}} }{\pageref{structConfig}}{} +\item\contentsline{section}{\mbox{\hyperlink{structMenuCtrl}{Menu\+Ctrl}} }{\pageref{structMenuCtrl}}{} +\item\contentsline{section}{\mbox{\hyperlink{structMessage}{Message}} }{\pageref{structMessage}}{} +\item\contentsline{section}{\mbox{\hyperlink{structSerialState}{Serial\+State}} }{\pageref{structSerialState}}{} +\item\contentsline{section}{\mbox{\hyperlink{structState}{State}} }{\pageref{structState}}{} +\end{DoxyCompactList} diff --git a/Documents/Doxygen/latex/controls_8c.tex b/Documents/Doxygen/latex/controls_8c.tex new file mode 100644 index 0000000..c6ec452 --- /dev/null +++ b/Documents/Doxygen/latex/controls_8c.tex @@ -0,0 +1,408 @@ +\hypertarget{controls_8c}{}\doxysection{controls.\+c-\/Dateireferenz} +\label{controls_8c}\index{controls.c@{controls.c}} + + +Display und Bedienelemente. + + +{\ttfamily \#include \char`\"{}controls.\+h\char`\"{}}\newline +Include-\/\+Abhängigkeitsdiagramm für controls.\+c\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{controls_8c__incl} +\end{center} +\end{figure} +\doxysubsection*{Funktionen} +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{controls_8c_aaf6c1bd6cb225efe37f9762de8a0c3d1}{Drehencoder}} (void) +\begin{DoxyCompactList}\small\item\em Mit dieser Funktion wird per Polling der Drehencoder abgefragt. \end{DoxyCompactList}\item +void \mbox{\hyperlink{controls_8c_a582148370499a6b91171ed6134cc7041}{Config\+Menue}} (void) +\begin{DoxyCompactList}\small\item\em Ausgabe des Menues für die Einstellungen. \end{DoxyCompactList}\item +void \mbox{\hyperlink{controls_8c_a9dec45875121142b6466b9475691b40a}{Display\+Version}} (void) +\begin{DoxyCompactList}\small\item\em Ausgabe der Softwareversion des BJ-\/\+Keyers. \end{DoxyCompactList}\item +void \mbox{\hyperlink{controls_8c_ace58ee95637a8f220527dc8b20dbb662}{Update\+Display}} (void) +\begin{DoxyCompactList}\small\item\em Update\+Display. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Variablen} +\begin{DoxyCompactItemize} +\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a6203d557889176e261076e2f088df303}{s\+Trx1}} = \char`\"{}TRX 1\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Transceiver 1. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a35d38bfd22e4419f9f56cdb345a8e7e4}{s\+Trx2}} = \char`\"{}TRX 2\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Transceiver 2. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a3cf9a4ac7c32126e64feeb09468c4f16}{IambicA}} = \char`\"{}Iambic A\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Iambic A. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a204380c13e522446a26c5becb474d872}{IambicB}} = \char`\"{}Iambic B\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Iambic B. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a3dc8c998dd6a5d1d71831a7fd8fa1ee7}{Ultimatic}} = \char`\"{}Ultimat.\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Ultimatic. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_ab89e4faa251feb81fa4cc7d9de2e3fcd}{Memory}} = \char`\"{}Memory\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Punkt/\+Strich Speicher. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_aafb08180dd6b40c7ceb1f987d29e01aa}{Ratio}} = \char`\"{}Ratio\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Ratio. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_abf38c2d2e8e887110f9092afbc1f9ff6}{Weight}} = \char`\"{}Weight\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Gewichtung. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a6fcaa55631cc1a96c082f6d8da9357a2}{Reverse\+RL}} = \char`\"{} L -\/ R °\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Links Dag, Rechts Dit. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a3aef3986a3ae6ca48eb4f92532d827ae}{Reverse\+LR}} = \char`\"{} L ° R -\/\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Links Dit, Rechts Dah. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a913981a1b4818d9fb9a39bf65326d832}{Side\+Tone\+On\+Off}} = \char`\"{}Mithörton\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Mithörton An/\+Aus. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a4e5958495ba326d1ef4ca81aadf97bea}{Side\+Tone\+Freq}} = \char`\"{}Frequenz\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Frequenz des Tons. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_aec62b46d086a27a9d99a82f846b449a5}{Rise\+Time}} = \char`\"{}Anstieg\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Anstiegszeit Mithörton. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a14d2686ee95132d4d7c740d23f38677b}{Debounce\+Time}} = \char`\"{}Entprl.\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Zeitintervall Entprellung. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a3e1e7c928529ce5b265eb617b0e4e4b8}{Yes}} = \char`\"{}J\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Ja. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a52e48eafec4559dcc5fa997a3781e4c5}{No}} = \char`\"{}N\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Nein. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_ac7c916eae39a6ea3de6c5e47cda3700e}{Hz}} = \char`\"{}Hz\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Frequenz in Hertz. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a3776d070bf17ce9a6dca80728d44a800}{Einstellungen}} = \char`\"{}Einstellungen\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Einstellungen ~\newline + \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a5d84b58ef20baadc27efb09bca3d8d98}{Ton}} = \char`\"{}Ton\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Ton. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a8a6e687fe4fb9e5aea3ac1e69b599330}{Ton\+An}} = \char`\"{}Ton an\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Ton an. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_ab1d7bb6c3e5c9967ffc4668fafb03c4f}{Ton\+Aus}} = \char`\"{}Ton aus\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Ton aus. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_ae3163144fae43c843de52bb19a73fc4c}{Mem\+Aus}} = \char`\"{}Mem AUS\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Punkt/\+Strich Speicher aus. \end{DoxyCompactList}\item +static const char $\ast$const \mbox{\hyperlink{controls_8c_a1c5d85aa97ec15c2308e5c688d8d297c}{Mem\+An}} = \char`\"{}Mem EIN\char`\"{} +\begin{DoxyCompactList}\small\item\em OLED Text für Punkt/\+Strich Speicher an. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Ausführliche Beschreibung} +Display und Bedienelemente. + +\begin{DoxyVerb} In dieser Datei sind alle Funktionen für die + Ausgabe auf dem OLED Dispay und die Bedienelemente +\end{DoxyVerb} + + +\doxysubsection{Dokumentation der Funktionen} +\mbox{\Hypertarget{controls_8c_a582148370499a6b91171ed6134cc7041}\label{controls_8c_a582148370499a6b91171ed6134cc7041}} +\index{controls.c@{controls.c}!ConfigMenue@{ConfigMenue}} +\index{ConfigMenue@{ConfigMenue}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{ConfigMenue()}{ConfigMenue()}} +{\footnotesize\ttfamily void Config\+Menue (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Ausgabe des Menues für die Einstellungen. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{controls_8c_a9dec45875121142b6466b9475691b40a}\label{controls_8c_a9dec45875121142b6466b9475691b40a}} +\index{controls.c@{controls.c}!DisplayVersion@{DisplayVersion}} +\index{DisplayVersion@{DisplayVersion}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{DisplayVersion()}{DisplayVersion()}} +{\footnotesize\ttfamily void Display\+Version (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Ausgabe der Softwareversion des BJ-\/\+Keyers. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{controls_8c_aaf6c1bd6cb225efe37f9762de8a0c3d1}\label{controls_8c_aaf6c1bd6cb225efe37f9762de8a0c3d1}} +\index{controls.c@{controls.c}!Drehencoder@{Drehencoder}} +\index{Drehencoder@{Drehencoder}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{Drehencoder()}{Drehencoder()}} +{\footnotesize\ttfamily Drehencoder (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Mit dieser Funktion wird per Polling der Drehencoder abgefragt. + +\begin{DoxyVerb} Es wird die Stellung des Encoders und der Status des Tasters + abgefragt. Die Daten werden ausgewertet und die entsprechende + Funktion aufgerufen +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +neuen Wert in b\+Config speichern + +Status für Timer 0 setzen + +Status für Update\+Display setzen + +neuen Werte in Encoder\+Pos speichern + +neuen Wert in WpM übernehmen + +Timer 0 Variable löschen für Update EEprom\mbox{\Hypertarget{controls_8c_ace58ee95637a8f220527dc8b20dbb662}\label{controls_8c_ace58ee95637a8f220527dc8b20dbb662}} +\index{controls.c@{controls.c}!UpdateDisplay@{UpdateDisplay}} +\index{UpdateDisplay@{UpdateDisplay}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{UpdateDisplay()}{UpdateDisplay()}} +{\footnotesize\ttfamily void Update\+Display (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Update\+Display. + +\begin{DoxyVerb} Aktualisierung der Anzeigen auf dem Display je nach + aktueller Funktion. +\end{DoxyVerb} + DOUBLESIZE 4x10 character NORMALSIZE 8x21 character + +\doxysubsection{Variablen-\/\+Dokumentation} +\mbox{\Hypertarget{controls_8c_a14d2686ee95132d4d7c740d23f38677b}\label{controls_8c_a14d2686ee95132d4d7c740d23f38677b}} +\index{controls.c@{controls.c}!DebounceTime@{DebounceTime}} +\index{DebounceTime@{DebounceTime}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{DebounceTime}{DebounceTime}} +{\footnotesize\ttfamily const char$\ast$ const Debounce\+Time = \char`\"{}Entprl.\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Zeitintervall Entprellung. + +\mbox{\Hypertarget{controls_8c_a3776d070bf17ce9a6dca80728d44a800}\label{controls_8c_a3776d070bf17ce9a6dca80728d44a800}} +\index{controls.c@{controls.c}!Einstellungen@{Einstellungen}} +\index{Einstellungen@{Einstellungen}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{Einstellungen}{Einstellungen}} +{\footnotesize\ttfamily const char$\ast$ const Einstellungen = \char`\"{}Einstellungen\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Einstellungen ~\newline + + +\mbox{\Hypertarget{controls_8c_ac7c916eae39a6ea3de6c5e47cda3700e}\label{controls_8c_ac7c916eae39a6ea3de6c5e47cda3700e}} +\index{controls.c@{controls.c}!Hz@{Hz}} +\index{Hz@{Hz}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{Hz}{Hz}} +{\footnotesize\ttfamily const char$\ast$ const Hz = \char`\"{}Hz\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Frequenz in Hertz. + +\mbox{\Hypertarget{controls_8c_a3cf9a4ac7c32126e64feeb09468c4f16}\label{controls_8c_a3cf9a4ac7c32126e64feeb09468c4f16}} +\index{controls.c@{controls.c}!IambicA@{IambicA}} +\index{IambicA@{IambicA}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{IambicA}{IambicA}} +{\footnotesize\ttfamily const char$\ast$ const IambicA = \char`\"{}Iambic A\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Iambic A. + +\mbox{\Hypertarget{controls_8c_a204380c13e522446a26c5becb474d872}\label{controls_8c_a204380c13e522446a26c5becb474d872}} +\index{controls.c@{controls.c}!IambicB@{IambicB}} +\index{IambicB@{IambicB}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{IambicB}{IambicB}} +{\footnotesize\ttfamily const char$\ast$ const IambicB = \char`\"{}Iambic B\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Iambic B. + +\mbox{\Hypertarget{controls_8c_a1c5d85aa97ec15c2308e5c688d8d297c}\label{controls_8c_a1c5d85aa97ec15c2308e5c688d8d297c}} +\index{controls.c@{controls.c}!MemAn@{MemAn}} +\index{MemAn@{MemAn}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{MemAn}{MemAn}} +{\footnotesize\ttfamily const char$\ast$ const Mem\+An = \char`\"{}Mem EIN\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Punkt/\+Strich Speicher an. + +\mbox{\Hypertarget{controls_8c_ae3163144fae43c843de52bb19a73fc4c}\label{controls_8c_ae3163144fae43c843de52bb19a73fc4c}} +\index{controls.c@{controls.c}!MemAus@{MemAus}} +\index{MemAus@{MemAus}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{MemAus}{MemAus}} +{\footnotesize\ttfamily const char$\ast$ const Mem\+Aus = \char`\"{}Mem AUS\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Punkt/\+Strich Speicher aus. + +\mbox{\Hypertarget{controls_8c_ab89e4faa251feb81fa4cc7d9de2e3fcd}\label{controls_8c_ab89e4faa251feb81fa4cc7d9de2e3fcd}} +\index{controls.c@{controls.c}!Memory@{Memory}} +\index{Memory@{Memory}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{Memory}{Memory}} +{\footnotesize\ttfamily const char$\ast$ const Memory = \char`\"{}Memory\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Punkt/\+Strich Speicher. + +\mbox{\Hypertarget{controls_8c_a52e48eafec4559dcc5fa997a3781e4c5}\label{controls_8c_a52e48eafec4559dcc5fa997a3781e4c5}} +\index{controls.c@{controls.c}!No@{No}} +\index{No@{No}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{No}{No}} +{\footnotesize\ttfamily const char$\ast$ const No = \char`\"{}N\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Nein. + +\mbox{\Hypertarget{controls_8c_aafb08180dd6b40c7ceb1f987d29e01aa}\label{controls_8c_aafb08180dd6b40c7ceb1f987d29e01aa}} +\index{controls.c@{controls.c}!Ratio@{Ratio}} +\index{Ratio@{Ratio}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{Ratio}{Ratio}} +{\footnotesize\ttfamily const char$\ast$ const Ratio = \char`\"{}Ratio\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Ratio. + +\mbox{\Hypertarget{controls_8c_a3aef3986a3ae6ca48eb4f92532d827ae}\label{controls_8c_a3aef3986a3ae6ca48eb4f92532d827ae}} +\index{controls.c@{controls.c}!ReverseLR@{ReverseLR}} +\index{ReverseLR@{ReverseLR}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{ReverseLR}{ReverseLR}} +{\footnotesize\ttfamily const char$\ast$ const Reverse\+LR = \char`\"{} L ° R -\/\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Links Dit, Rechts Dah. + +\mbox{\Hypertarget{controls_8c_a6fcaa55631cc1a96c082f6d8da9357a2}\label{controls_8c_a6fcaa55631cc1a96c082f6d8da9357a2}} +\index{controls.c@{controls.c}!ReverseRL@{ReverseRL}} +\index{ReverseRL@{ReverseRL}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{ReverseRL}{ReverseRL}} +{\footnotesize\ttfamily const char$\ast$ const Reverse\+RL = \char`\"{} L -\/ R °\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Links Dag, Rechts Dit. + +\mbox{\Hypertarget{controls_8c_aec62b46d086a27a9d99a82f846b449a5}\label{controls_8c_aec62b46d086a27a9d99a82f846b449a5}} +\index{controls.c@{controls.c}!RiseTime@{RiseTime}} +\index{RiseTime@{RiseTime}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{RiseTime}{RiseTime}} +{\footnotesize\ttfamily const char$\ast$ const Rise\+Time = \char`\"{}Anstieg\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Anstiegszeit Mithörton. + +\mbox{\Hypertarget{controls_8c_a4e5958495ba326d1ef4ca81aadf97bea}\label{controls_8c_a4e5958495ba326d1ef4ca81aadf97bea}} +\index{controls.c@{controls.c}!SideToneFreq@{SideToneFreq}} +\index{SideToneFreq@{SideToneFreq}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{SideToneFreq}{SideToneFreq}} +{\footnotesize\ttfamily const char$\ast$ const Side\+Tone\+Freq = \char`\"{}Frequenz\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Frequenz des Tons. + +\mbox{\Hypertarget{controls_8c_a913981a1b4818d9fb9a39bf65326d832}\label{controls_8c_a913981a1b4818d9fb9a39bf65326d832}} +\index{controls.c@{controls.c}!SideToneOnOff@{SideToneOnOff}} +\index{SideToneOnOff@{SideToneOnOff}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{SideToneOnOff}{SideToneOnOff}} +{\footnotesize\ttfamily const char$\ast$ const Side\+Tone\+On\+Off = \char`\"{}Mithörton\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Mithörton An/\+Aus. + +\mbox{\Hypertarget{controls_8c_a6203d557889176e261076e2f088df303}\label{controls_8c_a6203d557889176e261076e2f088df303}} +\index{controls.c@{controls.c}!sTrx1@{sTrx1}} +\index{sTrx1@{sTrx1}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{sTrx1}{sTrx1}} +{\footnotesize\ttfamily const char$\ast$ const s\+Trx1 = \char`\"{}TRX 1\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Transceiver 1. + +\mbox{\Hypertarget{controls_8c_a35d38bfd22e4419f9f56cdb345a8e7e4}\label{controls_8c_a35d38bfd22e4419f9f56cdb345a8e7e4}} +\index{controls.c@{controls.c}!sTrx2@{sTrx2}} +\index{sTrx2@{sTrx2}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{sTrx2}{sTrx2}} +{\footnotesize\ttfamily const char$\ast$ const s\+Trx2 = \char`\"{}TRX 2\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Transceiver 2. + +\mbox{\Hypertarget{controls_8c_a5d84b58ef20baadc27efb09bca3d8d98}\label{controls_8c_a5d84b58ef20baadc27efb09bca3d8d98}} +\index{controls.c@{controls.c}!Ton@{Ton}} +\index{Ton@{Ton}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{Ton}{Ton}} +{\footnotesize\ttfamily const char$\ast$ const Ton = \char`\"{}Ton\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Ton. + +\mbox{\Hypertarget{controls_8c_a8a6e687fe4fb9e5aea3ac1e69b599330}\label{controls_8c_a8a6e687fe4fb9e5aea3ac1e69b599330}} +\index{controls.c@{controls.c}!TonAn@{TonAn}} +\index{TonAn@{TonAn}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{TonAn}{TonAn}} +{\footnotesize\ttfamily const char$\ast$ const Ton\+An = \char`\"{}Ton an\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Ton an. + +\mbox{\Hypertarget{controls_8c_ab1d7bb6c3e5c9967ffc4668fafb03c4f}\label{controls_8c_ab1d7bb6c3e5c9967ffc4668fafb03c4f}} +\index{controls.c@{controls.c}!TonAus@{TonAus}} +\index{TonAus@{TonAus}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{TonAus}{TonAus}} +{\footnotesize\ttfamily const char$\ast$ const Ton\+Aus = \char`\"{}Ton aus\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Ton aus. + +\mbox{\Hypertarget{controls_8c_a3dc8c998dd6a5d1d71831a7fd8fa1ee7}\label{controls_8c_a3dc8c998dd6a5d1d71831a7fd8fa1ee7}} +\index{controls.c@{controls.c}!Ultimatic@{Ultimatic}} +\index{Ultimatic@{Ultimatic}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{Ultimatic}{Ultimatic}} +{\footnotesize\ttfamily const char$\ast$ const Ultimatic = \char`\"{}Ultimat.\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Ultimatic. + +\mbox{\Hypertarget{controls_8c_abf38c2d2e8e887110f9092afbc1f9ff6}\label{controls_8c_abf38c2d2e8e887110f9092afbc1f9ff6}} +\index{controls.c@{controls.c}!Weight@{Weight}} +\index{Weight@{Weight}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{Weight}{Weight}} +{\footnotesize\ttfamily const char$\ast$ const Weight = \char`\"{}Weight\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Gewichtung. + +\mbox{\Hypertarget{controls_8c_a3e1e7c928529ce5b265eb617b0e4e4b8}\label{controls_8c_a3e1e7c928529ce5b265eb617b0e4e4b8}} +\index{controls.c@{controls.c}!Yes@{Yes}} +\index{Yes@{Yes}!controls.c@{controls.c}} +\doxysubsubsection{\texorpdfstring{Yes}{Yes}} +{\footnotesize\ttfamily const char$\ast$ const Yes = \char`\"{}J\char`\"{}\hspace{0.3cm}{\ttfamily [static]}} + + + +OLED Text für Ja. + diff --git a/Documents/Doxygen/latex/controls_8c__incl.md5 b/Documents/Doxygen/latex/controls_8c__incl.md5 new file mode 100644 index 0000000..d789802 --- /dev/null +++ b/Documents/Doxygen/latex/controls_8c__incl.md5 @@ -0,0 +1 @@ +8b068ebba7fd3fa0c2eb43dd06f35ec5 \ No newline at end of file diff --git a/Documents/Doxygen/latex/controls_8c__incl.pdf b/Documents/Doxygen/latex/controls_8c__incl.pdf new file mode 100644 index 0000000..ebb2317 Binary files /dev/null and b/Documents/Doxygen/latex/controls_8c__incl.pdf differ diff --git a/Documents/Doxygen/latex/controls_8h.tex b/Documents/Doxygen/latex/controls_8h.tex new file mode 100644 index 0000000..7b3d2aa --- /dev/null +++ b/Documents/Doxygen/latex/controls_8h.tex @@ -0,0 +1,411 @@ +\hypertarget{controls_8h}{}\doxysection{controls.\+h-\/Dateireferenz} +\label{controls_8h}\index{controls.h@{controls.h}} + + +Headerdatei für \mbox{\hyperlink{controls_8c}{controls.\+c}}. + + +{\ttfamily \#include \char`\"{}globals.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}encoder.\+h\char`\"{}}\newline +Include-\/\+Abhängigkeitsdiagramm für controls.\+h\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{controls_8h__incl} +\end{center} +\end{figure} +Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=266pt]{controls_8h__dep__incl} +\end{center} +\end{figure} +\doxysubsection*{Funktionen} +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{controls_8h_a0366eaeb4aab61562dcd5b24994d0103}{Boop}} (void) +\begin{DoxyCompactList}\small\item\em Boop Ton ausgeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{controls_8h_a2f616a93763b4bc437c4311d653c0491}{Beep}} (void) +\begin{DoxyCompactList}\small\item\em Beep Ton ausgeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{controls_8h_a586bc00ad3164def7ec76ac9bda4f1bc}{Write\+EEprom}} (void) +\begin{DoxyCompactList}\small\item\em Akt. Einstellungen in EEPROM schreiben. \end{DoxyCompactList}\item +\mbox{\Hypertarget{controls_8h_a543d0f249e5b505063a706525f99ff3a}\label{controls_8h_a543d0f249e5b505063a706525f99ff3a}} +void {\bfseries Side\+Tone\+Off} (void) +\item +void \mbox{\hyperlink{controls_8h_a4e03330a0d63dbc5c8c0ce8a3ba10ff7}{Delay\+Milli\+Seconds}} (uint16\+\_\+t t) +\begin{DoxyCompactList}\small\item\em Zeitschleife von 1-\/65535 Millisekunden. \end{DoxyCompactList}\item +void \mbox{\hyperlink{controls_8h_a378d56bf0e68310b700bd4dbdc652803}{Tone}} (uint16\+\_\+t f, uint8\+\_\+t t) +\begin{DoxyCompactList}\small\item\em Ausgabe eines Tons mit Dauer und Frequenz. \end{DoxyCompactList}\item +void \mbox{\hyperlink{controls_8h_aa0e063cf32b840a3ed51ae9aa677e2be}{Set\+Ratio}} (void) +\begin{DoxyCompactList}\small\item\em Berechnung der Zeitdauer für Punkt und Strich. \end{DoxyCompactList}\item +\mbox{\Hypertarget{controls_8h_a7a31f60576d112eca1abddf447df8248}\label{controls_8h_a7a31f60576d112eca1abddf447df8248}} +void {\bfseries Set\+Weight} (void) +\item +void \mbox{\hyperlink{controls_8h_ae8011166e9324f9f3c6948249eb15fd1}{Sidetone\+Disable}} (void) +\begin{DoxyCompactList}\small\item\em Audioverstärker abschalten. \end{DoxyCompactList}\item +void \mbox{\hyperlink{controls_8h_a60f2f041b0803584ba5fc2e0a373ed50}{Sidetone\+Enable}} (void) +\begin{DoxyCompactList}\small\item\em Audioverstärker einschalten. \end{DoxyCompactList}\item +void \mbox{\hyperlink{controls_8h_ad82537f7ea58b4eb375952ce52615c4d}{Sidetone\+Off}} (void) +\begin{DoxyCompactList}\small\item\em Mithörton ausschalten. \end{DoxyCompactList}\item +void \mbox{\hyperlink{controls_8h_ac6dc8b683fdf1a5fc24b2a509279f887}{Drehencoder}} (void) +\begin{DoxyCompactList}\small\item\em Mit dieser Funktion wird per Polling der Drehencoder abgefragt. \end{DoxyCompactList}\item +void \mbox{\hyperlink{controls_8h_a582148370499a6b91171ed6134cc7041}{Config\+Menue}} (void) +\begin{DoxyCompactList}\small\item\em Ausgabe des Menues für die Einstellungen. \end{DoxyCompactList}\item +void \mbox{\hyperlink{controls_8h_ace58ee95637a8f220527dc8b20dbb662}{Update\+Display}} (void) +\begin{DoxyCompactList}\small\item\em Update\+Display. \end{DoxyCompactList}\item +void \mbox{\hyperlink{controls_8h_a9dec45875121142b6466b9475691b40a}{Display\+Version}} (void) +\begin{DoxyCompactList}\small\item\em Ausgabe der Softwareversion des BJ-\/\+Keyers. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Variablen} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structConfig}{Config}} \mbox{\hyperlink{controls_8h_a8c3e2d3135447df0d9e7057fea4ff5b0}{b\+Config}} +\begin{DoxyCompactList}\small\item\em Struktur für die Einstellungen. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structMenuCtrl}{Menu\+Ctrl}} \mbox{\hyperlink{controls_8h_a885b2af021946a60a0bd2a271711c17a}{b\+Menu\+Ctrl}} +\begin{DoxyCompactList}\small\item\em Struktur für die Menuesteuerung. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structState}{State}} \mbox{\hyperlink{controls_8h_a44ef5c8aeac95b862dab43408c149f9a}{b\+State}} +\begin{DoxyCompactList}\small\item\em Struktur für den aktuellen Status. \end{DoxyCompactList}\item +uint16\+\_\+t \mbox{\hyperlink{controls_8h_a088c685d08447f6614b3aea76cd94582}{Menu\+Ctrl\+Timer}} +\begin{DoxyCompactList}\small\item\em Diverse Zähler für Timer 0. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{controls_8h_a28fa6cb1767abefbe9c197700410d946}{WpM}} +\begin{DoxyCompactList}\small\item\em Aktuelle Zeichengeschwindigkeit. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Ausführliche Beschreibung} +Headerdatei für \mbox{\hyperlink{controls_8c}{controls.\+c}}. + +\begin{DoxyAuthor}{Autor} +Tom, DL7\+BJ +\end{DoxyAuthor} + + +\doxysubsection{Dokumentation der Funktionen} +\mbox{\Hypertarget{controls_8h_a2f616a93763b4bc437c4311d653c0491}\label{controls_8h_a2f616a93763b4bc437c4311d653c0491}} +\index{controls.h@{controls.h}!Beep@{Beep}} +\index{Beep@{Beep}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{Beep()}{Beep()}} +{\footnotesize\ttfamily void Beep (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Beep Ton ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{controls_8h_a0366eaeb4aab61562dcd5b24994d0103}\label{controls_8h_a0366eaeb4aab61562dcd5b24994d0103}} +\index{controls.h@{controls.h}!Boop@{Boop}} +\index{Boop@{Boop}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{Boop()}{Boop()}} +{\footnotesize\ttfamily void Boop (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Boop Ton ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{controls_8h_a582148370499a6b91171ed6134cc7041}\label{controls_8h_a582148370499a6b91171ed6134cc7041}} +\index{controls.h@{controls.h}!ConfigMenue@{ConfigMenue}} +\index{ConfigMenue@{ConfigMenue}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{ConfigMenue()}{ConfigMenue()}} +{\footnotesize\ttfamily void Config\+Menue (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Ausgabe des Menues für die Einstellungen. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{controls_8h_a4e03330a0d63dbc5c8c0ce8a3ba10ff7}\label{controls_8h_a4e03330a0d63dbc5c8c0ce8a3ba10ff7}} +\index{controls.h@{controls.h}!DelayMilliSeconds@{DelayMilliSeconds}} +\index{DelayMilliSeconds@{DelayMilliSeconds}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{DelayMilliSeconds()}{DelayMilliSeconds()}} +{\footnotesize\ttfamily void Delay\+Milli\+Seconds (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{ms }\end{DoxyParamCaption})} + + + +Zeitschleife von 1-\/65535 Millisekunden. + + +\begin{DoxyParams}{Parameter} +{\em ms} & Anzahl Millisekunden \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{controls_8h_a9dec45875121142b6466b9475691b40a}\label{controls_8h_a9dec45875121142b6466b9475691b40a}} +\index{controls.h@{controls.h}!DisplayVersion@{DisplayVersion}} +\index{DisplayVersion@{DisplayVersion}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{DisplayVersion()}{DisplayVersion()}} +{\footnotesize\ttfamily void Display\+Version (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Ausgabe der Softwareversion des BJ-\/\+Keyers. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{controls_8h_ac6dc8b683fdf1a5fc24b2a509279f887}\label{controls_8h_ac6dc8b683fdf1a5fc24b2a509279f887}} +\index{controls.h@{controls.h}!Drehencoder@{Drehencoder}} +\index{Drehencoder@{Drehencoder}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{Drehencoder()}{Drehencoder()}} +{\footnotesize\ttfamily void Drehencoder (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Mit dieser Funktion wird per Polling der Drehencoder abgefragt. + +\begin{DoxyVerb} Es wird die Stellung des Encoders und der Status des Tasters + abgefragt. Die Daten werden ausgewertet und die entsprechende + Funktion aufgerufen +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +neuen Wert in b\+Config speichern + +Status für Timer 0 setzen + +Status für Update\+Display setzen + +neuen Werte in Encoder\+Pos speichern + +neuen Wert in WpM übernehmen + +Timer 0 Variable löschen für Update EEprom\mbox{\Hypertarget{controls_8h_aa0e063cf32b840a3ed51ae9aa677e2be}\label{controls_8h_aa0e063cf32b840a3ed51ae9aa677e2be}} +\index{controls.h@{controls.h}!SetRatio@{SetRatio}} +\index{SetRatio@{SetRatio}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{SetRatio()}{SetRatio()}} +{\footnotesize\ttfamily void Set\+Ratio (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Berechnung der Zeitdauer für Punkt und Strich. + +\begin{DoxyVerb} Die Länge eines Symbols ist abhängig von der + eingestellten Geschwindigkeit. Intern wird immer + mit Wörtern pro Minute gerechnet. Das normale + Punkt/Strich Verhältnis ist 1:3. Dies kann durch + den Parameter Ratio in den Einstellungen verändert + werden. +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{controls_8h_ae8011166e9324f9f3c6948249eb15fd1}\label{controls_8h_ae8011166e9324f9f3c6948249eb15fd1}} +\index{controls.h@{controls.h}!SidetoneDisable@{SidetoneDisable}} +\index{SidetoneDisable@{SidetoneDisable}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{SidetoneDisable()}{SidetoneDisable()}} +{\footnotesize\ttfamily void Sidetone\+Disable (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Audioverstärker abschalten. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{controls_8h_a60f2f041b0803584ba5fc2e0a373ed50}\label{controls_8h_a60f2f041b0803584ba5fc2e0a373ed50}} +\index{controls.h@{controls.h}!SidetoneEnable@{SidetoneEnable}} +\index{SidetoneEnable@{SidetoneEnable}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{SidetoneEnable()}{SidetoneEnable()}} +{\footnotesize\ttfamily void Sidetone\+Enable (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Audioverstärker einschalten. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{controls_8h_ad82537f7ea58b4eb375952ce52615c4d}\label{controls_8h_ad82537f7ea58b4eb375952ce52615c4d}} +\index{controls.h@{controls.h}!SidetoneOff@{SidetoneOff}} +\index{SidetoneOff@{SidetoneOff}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{SidetoneOff()}{SidetoneOff()}} +{\footnotesize\ttfamily void Sidetone\+Off (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Mithörton ausschalten. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{controls_8h_a378d56bf0e68310b700bd4dbdc652803}\label{controls_8h_a378d56bf0e68310b700bd4dbdc652803}} +\index{controls.h@{controls.h}!Tone@{Tone}} +\index{Tone@{Tone}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{Tone()}{Tone()}} +{\footnotesize\ttfamily void Tone (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{f, }\item[{uint8\+\_\+t}]{duration }\end{DoxyParamCaption})} + + + +Ausgabe eines Tons mit Dauer und Frequenz. + + +\begin{DoxyParams}{Parameter} +{\em f} & Frequenz des Tons \\ +\hline +{\em duration} & Dauer des Tons \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{controls_8h_ace58ee95637a8f220527dc8b20dbb662}\label{controls_8h_ace58ee95637a8f220527dc8b20dbb662}} +\index{controls.h@{controls.h}!UpdateDisplay@{UpdateDisplay}} +\index{UpdateDisplay@{UpdateDisplay}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{UpdateDisplay()}{UpdateDisplay()}} +{\footnotesize\ttfamily void Update\+Display (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Update\+Display. + +\begin{DoxyVerb} Aktualisierung der Anzeigen auf dem Display je nach + aktueller Funktion. +\end{DoxyVerb} + DOUBLESIZE 4x10 character NORMALSIZE 8x21 character \mbox{\Hypertarget{controls_8h_a586bc00ad3164def7ec76ac9bda4f1bc}\label{controls_8h_a586bc00ad3164def7ec76ac9bda4f1bc}} +\index{controls.h@{controls.h}!WriteEEprom@{WriteEEprom}} +\index{WriteEEprom@{WriteEEprom}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{WriteEEprom()}{WriteEEprom()}} +{\footnotesize\ttfamily void Write\+EEprom (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Akt. Einstellungen in EEPROM schreiben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} + + +\doxysubsection{Variablen-\/\+Dokumentation} +\mbox{\Hypertarget{controls_8h_a8c3e2d3135447df0d9e7057fea4ff5b0}\label{controls_8h_a8c3e2d3135447df0d9e7057fea4ff5b0}} +\index{controls.h@{controls.h}!bConfig@{bConfig}} +\index{bConfig@{bConfig}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{bConfig}{bConfig}} +{\footnotesize\ttfamily struct \mbox{\hyperlink{structConfig}{Config}} b\+Config\hspace{0.3cm}{\ttfamily [extern]}} + + + +Struktur für die Einstellungen. + +\mbox{\Hypertarget{controls_8h_a885b2af021946a60a0bd2a271711c17a}\label{controls_8h_a885b2af021946a60a0bd2a271711c17a}} +\index{controls.h@{controls.h}!bMenuCtrl@{bMenuCtrl}} +\index{bMenuCtrl@{bMenuCtrl}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{bMenuCtrl}{bMenuCtrl}} +{\footnotesize\ttfamily struct \mbox{\hyperlink{structMenuCtrl}{Menu\+Ctrl}} b\+Menu\+Ctrl\hspace{0.3cm}{\ttfamily [extern]}} + + + +Struktur für die Menuesteuerung. + +\mbox{\Hypertarget{controls_8h_a44ef5c8aeac95b862dab43408c149f9a}\label{controls_8h_a44ef5c8aeac95b862dab43408c149f9a}} +\index{controls.h@{controls.h}!bState@{bState}} +\index{bState@{bState}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{bState}{bState}} +{\footnotesize\ttfamily struct \mbox{\hyperlink{structState}{State}} b\+State\hspace{0.3cm}{\ttfamily [extern]}} + + + +Struktur für den aktuellen Status. + +\mbox{\Hypertarget{controls_8h_a088c685d08447f6614b3aea76cd94582}\label{controls_8h_a088c685d08447f6614b3aea76cd94582}} +\index{controls.h@{controls.h}!MenuCtrlTimer@{MenuCtrlTimer}} +\index{MenuCtrlTimer@{MenuCtrlTimer}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{MenuCtrlTimer}{MenuCtrlTimer}} +{\footnotesize\ttfamily uint16\+\_\+t Menu\+Ctrl\+Timer\hspace{0.3cm}{\ttfamily [extern]}} + + + +Diverse Zähler für Timer 0. + +Wartezeit bis zur Betriebsanzeige nach \mbox{\hyperlink{structConfig}{Config}} \mbox{\Hypertarget{controls_8h_a28fa6cb1767abefbe9c197700410d946}\label{controls_8h_a28fa6cb1767abefbe9c197700410d946}} +\index{controls.h@{controls.h}!WpM@{WpM}} +\index{WpM@{WpM}!controls.h@{controls.h}} +\doxysubsubsection{\texorpdfstring{WpM}{WpM}} +{\footnotesize\ttfamily uint8\+\_\+t WpM\hspace{0.3cm}{\ttfamily [extern]}} + + + +Aktuelle Zeichengeschwindigkeit. + diff --git a/Documents/Doxygen/latex/controls_8h__dep__incl.md5 b/Documents/Doxygen/latex/controls_8h__dep__incl.md5 new file mode 100644 index 0000000..2d3b34d --- /dev/null +++ b/Documents/Doxygen/latex/controls_8h__dep__incl.md5 @@ -0,0 +1 @@ +15c87d3283b53560d0ef8f0c5f097dc8 \ No newline at end of file diff --git a/Documents/Doxygen/latex/controls_8h__dep__incl.pdf b/Documents/Doxygen/latex/controls_8h__dep__incl.pdf new file mode 100644 index 0000000..1963414 Binary files /dev/null and b/Documents/Doxygen/latex/controls_8h__dep__incl.pdf differ diff --git a/Documents/Doxygen/latex/controls_8h__incl.md5 b/Documents/Doxygen/latex/controls_8h__incl.md5 new file mode 100644 index 0000000..ed0b088 --- /dev/null +++ b/Documents/Doxygen/latex/controls_8h__incl.md5 @@ -0,0 +1 @@ +871caf097bfc2cb9f7ff740d7ea447b3 \ No newline at end of file diff --git a/Documents/Doxygen/latex/controls_8h__incl.pdf b/Documents/Doxygen/latex/controls_8h__incl.pdf new file mode 100644 index 0000000..14b710e Binary files /dev/null and b/Documents/Doxygen/latex/controls_8h__incl.pdf differ diff --git a/Documents/Doxygen/latex/dl7bj-logo.eps b/Documents/Doxygen/latex/dl7bj-logo.eps new file mode 100644 index 0000000..873b71a --- /dev/null +++ b/Documents/Doxygen/latex/dl7bj-logo.eps @@ -0,0 +1,515 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: GIMP PostScript file plugin V 1,17 by Peter Kirchgessner +%%Title: DL7BJ website logo.eps +%%CreationDate: Tue May 13 14:47:37 2014 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 14 14 483 75 +%%EndComments +%%BeginProlog +% Use own dictionary to avoid conflicts +10 dict begin +%%EndProlog +%%Page: 1 1 +% Translate for offset +14.173228346456694 14.173228346456694 translate +% Translate to begin of first scanline +0 59.992500937382829 translate +467.94150731158607 -59.992500937382829 scale +% Image geometry +468 60 8 +% Transformation matrix +[ 468 0 0 60 0 0 ] +% Strings to hold RGB-samples per scanline +/rstr 468 string def +/gstr 468 string def +/bstr 468 string def +{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} +true 3 +%%BeginData: 29288 ASCII Bytes +colorimage +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +_>jQ7nc&ajqtg-dl2Lb^p\t6mJcC<$W;hA~> +_Z'`4l0nQArrr5S`2oNVlMgqakPY/U!W2Vbrri?!s82eHs,I&/~> +_Z'`.fAcYurrr&2PA![ilMgq^eG8q?!Vl/Xrri;srqQGCs,I&/~> +aSuAAq=saapAt'brq?EfrqQTiq>U6jq>9mdr9=4^p\Fdf!r_ujrq?Hirq$-lqZ$Qor;QitrVZKg +!;uiqs8W,uj8],X&,lD$qu$ +r;QcpcMnaSUm@-qJ:NTNJ:WE8R%9e5R'EouVjN0hrI=mplMgq`JYE&B!oC/BrdY$NlLY#YW;-#Y +qYpL1qt&js`4j"$^rOI3c0=`gqZ$9`qtp?TrtPD&oBbVYUqG$SS_Nf7p#+,shl)>-J,l9os,I&/~> +r;Qform1T]lrlY6*Z,_H;&C5q1IOr35"'F2C1'FR)uUTRWp9TcqAWH5rrU)W2#\ +rr3)uq"OO^q>^6`pAk!^pB13dqY]^['E.e(q=jX\r;66_q"jd\q>0m\r;QZoroj@mq"OggrV?6d +q"OR[p\=^cpAYBsp\=RZp\=R^pBgWhp\=OXp\=LWr:p6b"Shijr;Q*`!<)]e!;Q6]"o8#mrVc_H +s,I&/~> +rr3GKML^>HTp^suJUrE*JbsrtMY;Q'M4CouqsXP"r:nsOYGZr&`6#lHJ#pg?sOlNW4M~> +rr3Fr.Ms3o<(/Sk)]B_<)Z(?O.eX\^.8+f^q!\4tqXM+=DI=A%PamgP(clmi4%=KB-DLLh!nlJa +kl2/N*;oiO +rVlotr;HKmq>U*hq"jj]')M@uqY^?krVlfprVQ?ap\=R]li.Ilp\b$dq>L9dq>C3ep\j(N#Q"2o +r:g'eq#0phrV-'apAY0jqYU9nrqcWgrqHNkq>U*grVQTsrr)fmrV-?e!rDionGiLd&cVh0r;69c +q"OX`q"X^[q"OZ:s+^Q(~> +rVm8he\f&8\Xe;%J<$c.J.o5@UUJY@guRebjQ=:6Mh$___t`Tu%`EqKm@U$+hhRiOjdC\[iVs.] +JEk4-Xm_ANJ-:MXKRh\JrrKs9qu6]f[/PR]N0KRCVLa8NjSSrZp#Y5FrI>$,NjHq'nGa6Vg>MAn +m*EM1Z&aI7g5hE(L5LMopjrI#s*t~> +rVm8UZ]^'%In^dt(c#k&(_^s3=F.12^WkK_c-hUu/Jp$EOn%f<%[7j:h,$ta`$J6]cUAesiVs-j +(tb;tC>h)M(^(nj*uMK\rrJ0lqu6][G5`oOV'c27MCmEj(/r>5Ya13B5ZnGa66]>rdu +h5HAoEASSB]/)Hk,:XOanU^^qs*t~> +pAY9nq=j[Zq=amepAY0lq>Bsfqu6!_&,Q%rrr;ihqYpEep\=aeqW%S[qtKj[q>9scpB:Bhq"OXZ +rrW/nqtg=$rqH0_q"ss_p\=LWq=jmirV69a!VlZYrsSi$q=sd\r;QWlp\KI@L&ZZ~> +pAY929*[t1jNbCtJ1nF`pDrs$DlKT2bGNW"A1_4d'E +[J0\&k(15Brs\4GKq+CA\VG^!JUsTkrrW2_P5Bb1QLX5>$hT@HOe@``l-[q2Z%;q/s*t~> +pAY8f<@01LqA95PXnMbq]NG+L![`WdmJd]7(fo2_Hl@([THY46j6^UArs"])+#$f_0`;gkO&\4] +H2%=?d2@`9rs[X'+\Y%UIjGpn)];`PrrW/K3r9`p5iq81$gT?82c;B6euYtnEe47Es*t~> +o`"pgq"Fd`oD\gfrV$Bgp\jO[&,Q&!rqcKjrqZ?ep\FdarT!nXr;$'kqYU$`s8)NbrrW&kqt^9l +p^-cnq"OU]q"OU`p&>'lq"sddq"s@V$iKbsqu6Wqqtp0`rIP!'s*t~> +o`"s.K)'osO7WAO_#AidL5gu@mf*g,JD0:hW9`cCNmEUhbQ(P^HJ>Br)N,rrW/jQi)@8Koih0rsR80aLgm?s2M[3P2CijLAuc~> +o`"rQ*;LEO1\C\Jrf$gn"!]KG\F0A-Hl0KKAmsHJId6q@XX'?fhuE\CKJY^-JcCK)J,~> +o`"pirV-?e"8DZhqssamqtKj]qY0d\rpTjqq=sd`s8;ZfrVQ?brSdbZrV-'_q#0plr;$3gr;-0b +q>UQqp\4X_rs/Gqr;$*]qt^6c!;uHg#laVnp\Fa_p\j@V$MaAps8DckqY0daJcCK)J,~> +o`"pErI>';OFaaQ](5k,`INTAWIg&$p[A+jUm@Orr76t(ikL#8g#;r6hLL-WP5]t +o`"p%r>5]'2&^UpK(K!Krfn<@B4;i3;Xj/T$sGnhV>7MV +o`#9np\4IYq"OU\q"sU]#l=;iqYg3`qYp!a$i0SsrqcBdrVlWerS[\Ur;HBip^6ipqYC*dqtp?e +q>1*mq=s^\rs\l'qYKs]qY0aZqtL$Zrs/Dpqtp0_p\="Q$2OQ"rVQTmrqHDCs+UK'~> +o`#8]J:NWSQ@Yp9NkFr_$3%;dJuRIeJ?nn+Ks4k?YhX5p]JcCH(J,~> +o`#7Y(`4r.5T*jC0o#9!$2o&n*+QTA(j#-7rsM^Zkj*(/K?WCS(s(Y8!1s-+%5^(DX)q^aI?oH% +3^`Z>rri7&.4"H\rsZbs@VHZDH6a=oIjCcZrs3rmKp"#)(ao.Ers;01s1jKQ_qu +p&>$jrq?Znq"t$dp\4LRrs8Psq>C$_p\4ORrs\f#r:p*ds8;cmp\XmIrtG;(p\=X_q"sj]p\Xdc +r;Z`iq#13l"TJ5lqtg-g$NBhpq"XUYrVZHcnG`Ucp\4XcpAk-Vrs8E!r;Q`rrqcD@s+LE&~> +p&>E_K7e]CQH.[WL4H/krs75.V:(0WJ:P)trsZK3bDMhPs2r7;JA07drtDtoJ;UkJMS>73KYjVU +aS=MEN8=L5"RMqH^TdP6$M'7.Od(BYf[Q"Anc&akNIZQ7rdY!jlMh0Sn]^:us6QkNpjrI!s*t~> +p&>EL*Zc.h5af2k,8a_Vrs6%R>HK5%(`7SgrsXKXTdrdargo:m(l>$HrtBu$(b0ud.u?;<+-9gi +S+=6;0#7Jd"Pd0?Mf8Fk$Kj5_2`qp9\?IhCnc&aj0GkYArYPX*lMh/Pk+gT/s4qEMnq$gps*t~> +p&G'k$2F8lrqcEdqY0mVrr`2np\=^]!;c6c%/T_or;ZcorVZNdq>0(M"SqffrqlZg')DG#p\4L\ +q"jj^q>:$_p\Oa`qYpj"q"OOXq"jsbrqGs_$N0YnrVZKeqY0gbm/I+]qu-Nsqu6BfJcCH(J,~> +p&>Hcl&^P:n#2&HZ%0C_nc&a7J:NH0rdY!Snc'$,J=Y-fn'U%>[=OmUiVs%SJ=Z&;rdYZ7R^ef? +JtBlAY-j+\^9)s:Yc,D7rsRY@LObVUXQQC0J;3Uo$IaTij3X3gW.q)7m/IBN\c)R.prDTb`e"/D +s*t~> +p&>HRf/4S6iF+'PEYs<%nc&`a(`4VErYPZWrpp'tHl,S[rSjlrWd#CUGN&Q)<>\HcJ,U8u*_1ZM ++rsIA2/@Fc4kP(`4OgrsGqM3m4Nl=(!7Sh +oD]-lqYU'brVQBcqsXR]pB(-aqt'jfq?d3$qYL*crVcKei;X&Xp](*aq>L3grs&K$q=jXZqYg-j +q"sjcqYq!&rqlHbqtp-`q"a^^o)B$qq"O[as8Dihq +oD],RXMBh/iQ%"I_XRR+qM5!!"+l_i\b#k$Z3pKr\$NfMinT*gq;M>ZTRlsFJ=k]8q>L +oD]+FBoOg%adP%UORW8Nod9SR!us?DJ+N^?EshZtI!(6Zb.nm3oAT]T;Ao1L(fA24oDS[on@)%- +(eAlnrYP_qO!s#arscHhLDqaqR3P?O8L]PpoD]0P3?*atrQpiP;#9PY!@"uOrrg_a3]pJps+UK'~> +oD]0nq#(*eq"OUZp\XI[!;uij"o.upr:g$YrsSZ#qt^-grr;olp\s+N"Sqijp\XX`$2sbtq=sd` +s7lNdrsJ\uqYBp]p\4LYq==OhqtKserV?He!;Pm[$2=K"qYL$drqQJDs+UK'~> +oD]/dOOW6gNJ*d[JA^mV!71Xp#*d%$bCH)]o`#;qf=[Tdkj\VsUO_^hrro'Sd=o:4p\tTqh7T\T +NMY2&QHf1($IF@1R>d5YJXVCco)Am(L8k46R/VU9Q0eMXre1:NZEBYPl\XtZs+UK'~> +oD].f2R1A50H`q>(m=Cg!2of5#!A%?TGU9!o`#;([Y7;.e`?b+"e75$P:)+Q#Jo)AlC,\-l!7/e#'54&:Vr#kq;F)4@^g*tg.s+UK'~> +oD]-lqtg'`rVlckqsOLapBUTpr;-0_p\FI]#5IreqYpNnrqQThqr%JVq=jX]mJd4bq"F^prV-'^ +q=ja`q=jdVrrW/pq>Bseq!A"frqHHkp\Y!hq"ao?s+UK'~> +o`#9tPK'qZZ/Y3/UUopo$M].,_=lHcJWt_To`#;bJUk)us4Wm5U4Bu9rr]0MK[fDh!m6i+p\tTQ +KRokiJ?$b`J@b:N!p?)Ir."g(qsFCjmXb;kJ\;$CQCdPrs+UK'~> +o`#9r3gXq*EQ[1W=For@$h>,]Npa;r)a,*2rq6:!5T1J^kl87`:f\Ehi;Wme)BZ3NrrScWq"Odq +\0)\k;&El::De]RrrUYC +o`#9sp\4L^s8Voip\aIZ$2FJuq"OR\qtKsZrsSVtrr;upp\Fdap\j%M!rDZemJd7ep\aab!W;]k +q$$Zjp\OX]nc&Ueq=amgmJdOlq>0pds8Minqu20HL&ZZ~> +o`#9UJ:OHTqY-G7JCa2h$iZ%;pQ^8la1d)'rq6:!M4a&4n%=@GgSo__i;WkeJ=c0.!pkZkpAYKB +J=`:$^QjJQJB%-Z!6Ftd!;>g[$J_2WV!\3PV!,DSJcCH(J,~> +o`#9:(`6H!p$kO"(q&i4$iMQfn37aMR>Dbir:U't.8e[rieAUP]j_i$i;Wk*(f'Ju!o,$*pAYJk +(f*duME`1q(msjn!1N^#!:T=T$G]AU=l',>>1A,SJcCH(J,~> +p&>F!p\4UbrV6-^q>'mTrsAPtp\Fgdq#1-do`#9mrr;ljqZ$Nip\3SF!rDZhmJd4_qXsjqr:fs_ +qY0g_q"XaVrrE#spAt0hrqPj[$N0\ss8W&or:p$bJcCH(J,~> +p&>EhJV2DAgm +p&>E[)'5pC^Hrtt>"!f,rsE4:,[fH75.R7lr:U't*TQjU-=lYq?l0pVi;Wjs(o-Ku!a'79pAYJl ++=;VH,Z][R/;Ncq!71W]"e)D?-nPAbrsGAZV#UJ(FIP6,d=M=Os*t~> +o`#*jq#'p]r;QNnp\F7Ws7Zfss8)Tlrr)Tfp&>6jq=j^as82ch!<(jU!rVflmf*@dq#:!e%0$(t +qY0a\q"aa[q#9ja#lXMpr;-9gs7u$]$N']"s82Zgr;-3eJcCH(J,~> +p&>EqSWqN[J^Us7W.:K.rs\gZK?X7l[J9:LJ?&J>rsOLXLSaS?_hEVkKB(ni!m6)emf*@=QhU4R% +/--NWJ,l$PFeM$NV)fA#j-cRe#BM1s.o#]$G!8hJcCH(J,~> +p&>El9g,O.)6J.1?l2Z-rs\]I*M`F +o`#9qp\F[\r;HNep\XCY"T/#mqY^?m!r_lipAYO"p\=^erV60bqY0dBrrN,nmf*@ep\jdb!WMln +pBUKjqY0pap\j[_"9%uhp\sshs7u$]s8**%qYC'hr;?HjJcG]K"9&/pr/L`,~> +o`#<>J=aiqEXJcG`L"o6rq_peIBs*t~> +o`#;f(eAa-S[k1+(k2DOrreEYW+r[X$A"NBE*]./SYLq`JcG`L"n]R"OfnA;s*t~> +o`#U*f$hsW"qY0gbq>C$^q;;2Qp\s[^!r_ljo`"pj +rqHHh#5@ogq"XU^oD\jjq#'mdq#Luq=sg. +s*t~> +o`#=?rsQ8cJ>i)>pTT4!U%A$Y%JbP8rNq-OnYF +o`#<":b]GV@N-.V1`2_NrsO,i(h)\/nS]?`<9a/W%J1L_qK<`Zk#n<2)+XM]rrW!Ag[P4Ec5qW1 +rs\<@(`IU5+[SaW5p">CrrLt6r"oK'@"dnH$XofYDqY##P5IifQ/2H@p6qr["8]<+*W6fT:s8kA +l^D*7F34H4~> +o`#9rp\Xpap\Fgdp\O=X#5S#hs8VukrV$UEjrVlWeq:tuNqt[5k$2jSnqu-Nos8;Z:rrrAtp\=Xa +aT$b~> +o`#9EKtZ3&J>_\XJZeG@#+U4As7jBcrI=mjpAYMNh4p%O\:K:BXb4=ErrL3mnc&[_Nh#_@$h&V4 +UQg:ZM8RDoeFNV>Sc+'ALRNmH[dF)&reHH/pAV,TkbE['h#@DkTrS,"rQC7Y\_?EFr5b,Irs%Ye +JrmM"rQ5(i~> +o`#8r+c!]i(gu$o)f+mA#"oe@s72*rr>5O,pAYL;_,iF]I2X,TC*&/frrJRsnc&[V0h_-<$fW!i +=?IE;.$C#QYk%eo:&Pn3-:f6rHgUhAr?a1&n,-hGeQ3Sirn[STN`E+Z$MpGQ."Jtdo(ne +o`#rr;??epAk0crsSStr;HEcqu6Nfq#9.M!<2Ng!r;Wjo)B'kq"X[Z +qY^-aq#'^_!;uij"Shlhq>KXZ$MXQ"rqZKiq"OO\h>[QUq"ibF!WN#Grr`5pp\Ode!VlT=rri>t +p\OjarrN,smJd4dr8ms/~> +o`#J,tAdpAYMRZ-(dcQGN%=L5GBVrrN,ko)AgjT8<.2rsSd\ +PDkl\[F(86O3$nl$-RjLKpTE5RGRr1rsSXQo)JaOC.liKSkmq#13o +pQX:UrrhkmLU?. +o`#;s5WU-=aJ:k/;^es?rrh4ESY7S3(]bi.pAYLBEhC!.6'(!.,UhX/rrN&`o)Agh;((Z#rsS]N +3\Ec>H)s521n+"8$)&1Q,!pr@7Do)krsSH9kPsaOW220e,e)V0!pVIQg]%<,S(%B?a?:ANo)8Ri +nNFA-rrhIs-?m`1rrLcAmJd4>S)s[#~> +o`#:!rM`ho)A^erq?Zor;$0e +rqQK`rs&8pqYBm[qs+1hrV-[QQqtf(I!W)]Crr`/mp\Fae!ri#nli."_roa:_ +rV6 +o`# +o`#<8,*CreH$?4B=":WGrsNW[(aU"9*Ec;X+li=s$S[2n?GlZ'.RtTuWQtMFIi+LBrsP,0(a`_" +:.N"R0\u@##k:'!Gu,h,L%O^2$d0CKd>u7X8q*F/K\cY0G*dX3rrHtfeGfZ8)]`&ZrVlrZ7]#GN +!Jp1,rr]enSFlRU!H!DTrrHtfjo9i~> +o`#9qp\FX^rr2chp\X@X$N'Smp\4L_rqQ6`pAYKoq#(0kq>:0gq"N)6!r_lhnc'!pp\=^ap\Xpa +q"OaYs8VltrVQ?brTX=irV-3aq#($cqY^3bhZ!]Wq#C3FrrMlmeGfXLrqZQlrrW/prTjIbrqHET +rrDlerrMlmmJd4]rT4'0~> +o`#9;Z7$dsQbjM6Pi +hj94NiUm-TqP9t@]RZL6l2M.RJB!J'aMG9`afU]^rr_VJqlSZR!r7Q5eGfX1m@!PDrrUi@i9UCE +n:L/nrrW"`q"F^hq1\#"rrW"MkN2_o~> +o`#8b,YhF*m+QV7(k:rQ$BH,h+;eD@h`)H[p\t[",:92ak=q#nPr0]Xci4'Z(g->.$`t7"c&=!7 +`'Ppjan5T

    +p&>Eup\4UcrqlQdp\=UPrsJ`!p\=[cqY:!cq=jmtrqHBkqt^3hp\ap_rQkKFq"OaWrsSc#r:p'b +q>'s`p\smd#Q=Mnp\=X`rTF1gr:fs]rqlWirVlTihZ!]Sr;ZTWrrE&tqtU0lr;"e@!WDlorrW2r +qtpBnrr2fdrrMukrr3#tr9O@arVQQfrrN&nqYpQprqlKj!W;ckrrN)rli2J~> +p&>ERJq28Go#.edJVpDnrsIS4J;V_IZ&I#JS+lpko75Wr_4'65J^hAaj3[f.qiH?inc'!IR*1YY +c(giQQ%8N$rs8GZWIfY_^sLs$rsQr!J=uSNc*#mmMp1&X"/s<@U$;R[n$om@rqZQpd@J_c!T(0^ +rr_kr]__R+"Rik1^&I[(!Oe +p&>E4*#PaOkEL!/)_5@arsHRZ(b2QSE\F>U9)&>okSV)7N_%$s)R+u8bg?@lpGEf7nc'!'6_QP, +UfU9a58`_\rsA;<@iZCGNN'hpkl2$](`60 +p&>0mq>($crq?Njq"X[PrsJc"qu6NgqZ$Tpp\+Upp\Xa\rVcKcrquNhd/O1Cp\F=Y#Q+8iqYKs` +r;QHjqYp9oq"OU[q"Xg^!;kgV$iKbrrqlZls8W#or87MWrV6ElqUKkr;6KtrV?Hmp\Xdd +!VuZkrrN,tli2J~> +p&>EFSt58AL4OoNPEVC$rsJLOa7ml=Wr;taLA1]Vqgc;>PN1SRMX/N;jO!o.V1>9/rt`+qJ?QG; +`QNjaJ?,]=R$j1nS"Q%3Jc:0%\c)R)k5Ph3JA_#mjOF50f!s5errh8?r:Z]HrrqD[p&'?Zq>UJn +anbr;jiHrk"S]a%Q07`<#,(#Vo"DR&qu6iZVtKt<`V'64oRtQirrM]IlMh"bbbWDZqYpSoanu)A +ihuJIJAq?a!N4';rrM]Ili2J~> +p&>Dr:/0PB,8hA#4$#dsrsJ66Rdd.-AGcD_,PV3Hp_\W>43PYb/)-j:c-ZIl>8UB0rt^##(i=XI +QD#<:(hR;K6Ua-_8Q%c;)ZCQUJ,90UJ' +Sb`9dd$sP)"RqFD5L]3'##i_FkD+NIqu6iB@.!b,QM(7ZlQE/*rrM<#lMh"`U04,bqYpS(SbrEj +b$aW4(mb!t!FVJrrrM<#li2J~> +o`#9sq=s^Zq"OR\q"X4U$2FJpp\Xj`p\jj\rsSi#p\Og_q"t'iqY/A:"8hlgrUBgpqY0j]q#'s_ +qt^!^rV$Ehq>:*hr<)uop\4[^!Vu`YrsSc!rqZNms8Dcgp\WkJ"SquqrqZ'`s8N#t#6+Gus8Mcg +q>UKirVHNqqtKj_rrE#ss8W)rrr`8qq#0a_"o\2lqYU9grs&Jus8W)mq=XagqtTmb!<2Bc!rVon +qu6]krVZ["rqZTorqH6arrMlmp&>$kr;Qcqrr3)uqY:$gs*t~> +o`#9SU5XVdP_PC9LmIE-$C';6JAo$eK\V+Qq#:`cJ:OrKOI!ZLnZ.2err^'$NnEk$+0gO$P*=+a +MoVZERXfp>LQSLSf%f*6b,^&COH,3lo]Z;_eU[%_f`2!3S!Sc>i;Wu[R*YfrSac[ZmJd+in##s] +pOK1*+O8\kR +!r_`hn,ELhe>_R-rrW"Lhu*KYn##s]pOK1 +o`#97<\G:O4X3"D-:$qt$9c*o(m]V@+M\ibq#:`O(`7=e2F35Yj_#FWrr\3B0t?`Q+*&Q=3]j*< +/=B`[8/N0^-9,D#[(jGdSn8fV2DQd^lKJ6UZ5DG%\GuTP8OFMNi;WuZ7&^.9:%8/`hVJ22#3&q^ +s6pk4qYpWh+2n'V"8mZe+8u3?rQ5'=!Unb?rr_1?6-Sm!"iV='C5qKSrs%IgpAaV!?hOF#Kf&]% +rrW&]qsXOerNThXr;Qij+2n*W#3&q^s6pk4qYpWh+2mmQ!rD0YrVm, +o`"pirq?ZmqYgUEmrVlfjdJj=Jq#1!Vrseo#p\F^\ +qu6Egq"jpfpAYBrp\4LXp\OjQrsS_uq#(0lrV-3gqY]:O"oS2rs8Dcjrri>ts8MlmrrW)lqYpL! +q>UEorV-0crr`8sp\4[^#5eH#q=sm_rVloqqYpKqq>C6ls8E&oq="@`q#LBfrs&;us8W&lqYC-p +rqu`op\agd!<)ol!<) +o`#rsRh;J:NmJDp;'$eBiiMP0P>in3tkJEHk3rpB^gnqbqSrp]ps +aG,55]RmrbUV`%oc0k<*#hXoaR=Kjrh>HR<$bV"QfDkm4J]@>hbM`C(c'eS2fq&$?"R`DlnZ_ul% +K=>!X8i5!U\"Nchgi*3rso"lZ[dacNf^sSqko_/M>dGY_Q3_:rL_42rri)hNhH7 +o`#<:*?c7cB>fiY(a#sLrsQsf(`4B2:DeMN(s)LP$agg/.oPR/b.$iq)!:hur9aLek9mber:'^r +Rj/b=KcH*+=HG:RUu21Grs6+\*(:\^H,9=ArsOMt3k,.hcPr59G+ddn"f+Tcs11r%rrh7ps5n7u +rsepm*bPHPr)i1_s25atr;R9(eoV`Q-8IK7s7]nbYUKJM#*`T"k^;seKpjdrrDimrrg+s68?.@rtYHn\c;^,eoV`Q-8IK7r)i1_s25atr;R-$ +eoV`Q-8IK7s7lQm&&:.k0tdPdk;<4h>I4?MZMslS~> +o`#-pp\4O_qYC-b!VlW]rsSc!p\Omcp\4LYp\agd$iKbnqu?Zlr;ZfqpZDJUq!J+]q>pQjn,Ego +q"jd\rV?3`q=j^ao`"phrqQHd!W2l_rsSVrr;Zcmq#1-jrVPRR#6+Drs8Vrkqu6fqr;HEcrr39' +q>:!cs8W#prr3&rp\k'j!;lci!Vu]lrri/orqZEirseu%rVuoop\t3mrV63`n,EIfp\FR`s8;lr +!rDZiqu6m!q"ag`p\=^es8;lr"o\5qs8Mi\rrW,tqu6L9ls8;lr!rDZirVllprq?HhrVccr +r;Q^-rV6BlrqZToqYL*arr<#orr2qJ~> +o`#-\J;1;d\#0.T!K6./rsR2(J?J+;J:aM^JBdlh$eBiZ^\[E$ec5[+JEQq5plFhB"1#)hVsjWo +cAnreP2iBkV4)q*p%87dc]+9PrdY')_:tp5A&4qmW-nrrfCRieiis +rs87m^7E[Os2rgirrTWZgAV$U_M!GiRGn)Crrr=oWV!$grr3JnKAuq2[".KBs5B05P54VI"5A?r +r:p9mb1$@i!k*X5qu6o^Q__9sJW'F)rrLWprr3/UOmE&8R-ahYbO`T(J:O'Hr;Q]sb1$@i!k*X5 +rVm)=KReT@iV`]T!S#Eort*nHli6C?s8TI.`0K`is.o8cs*t~> +o`#-K(aF"?I9lgh!A)agrsPeC(i.W8(`cXD(o6s,$agfjMY?%EZN'sA)!Co"nhfb6"*88#?gn"' +VD;aA3QkYJ>Y#]+m.C;[V_CFnrYP\]O4N[t$SE9qs6Ob_b-UcPN8ad@mk)lcpj>g5rrcrAaso:J +rs7mmM+t&Ns.6CmrrRK`]`%j7O<>AW7`bH*rrr3u@d733rr3J\*QnE^Fr8s5s2d>t3V2b?"2,OE +q=ssjT!&(m!dY]rqu6oG6 +o`#9tp\t$`q>9p_r;#a[%K?,#qtTs`rVH9_q"Xgars&8mqu?Znrr2our:fCS!WDc\rri>qrqcN\ +rs/Jsp\Fa]p\Fg_!<2Qh$2XDkqYKs]p\4RPrsS_urr;ckrqZEeq"WhJ#5\,kq=jXZr;R3(q#1'e +qZ$Toq>Lup\k$is7ufpq"t$i#5S,qs8;Werr3)tp\4XTrri/qr;$?f +rrDoprrW2oq"t'rqY:$hs8McirVm6"rVuosq#:u +p\k$i'_qY,s8Mfms8W)ns8Mceq#: +o`#9jJa0IiVn.Sjb*hYs%I8W#a,#\efr]dTNfi)nrs/C\KuEu^eaNM;!nVu%kl1_EJGAU5"RLp0 +ZcDP7$d4WbS'6P9R"U!?o()efY(2P?W/$7\Kt73NrsQ\on+Vgdn>*@sMN?`r#-j2qSqMWbr;R>k +Q.W:kW;lnYRcO%+rr;hprr3)pLPc$/rrh`2l\FBrrs&J%ZHncMr;Q^#TmGQ#I]]Us8VS?_uBZDrfQ@Cs6l9Cs8VJPm/I:]b3e*YLYr(1!W&hq +rr`"NM>mJR"RX=sLYr(1(&j?Xs8VPRnGiOUQN-K-JsH!.s7WAhs*t~> +o`#9`)q]*H?\0JJT1//I%GMo;RO9_A\S;ru1,uuErs/3O+d;igZf:ua!k0$Ekl1_-)"I(p"Pb?Y +Fd_^u$_]F"8Y[CF6m!6_kOSW[CD\gP?m[??+b9LYrsOo*ipe^uj'$MI.Pp&`#&uAA:*:BJr;R>X +5.>F:@/p8O8BpUBu;02d;S/>'$rr[cg*6msP +"A6&0>iY\\!VU+(rr_a:.K',D#CA;Us8V+"P5bIhr&<%'s5H<(s8Uq@m/I:RTAINP-,oi_!VU+( +rr_a:.K'/E"Q#['-,oi_(&U# +oDejbrV6Qmrr)WZrs\l#q"Xgdq"X^`p\4R[rri,nq"t'hrrW)lroj@_rV,a["Sqrnp\jR\$i0Pn +qY0a\p\=^^qsj[mq"ja\qY9j[p\aIZ$iKbrqYpHhqY^Biqr@\^r;-0_qYgHmq>C7(qY9mdqtpEk +q>UEkr;ZfprVlfuqY0jarr`/orV6UBns8)*^s8;os!WMllrrN&rrr3&rp\Ogf"8hom +q#(-mr:p9k!Vu`os8Vous8)Kbrr2ouqu-KnJ,~> +o`#9nJ;0PfURK-gh3@=,%HW/(NoAi]Mm1BTJ@bURrrr:_Xcg6brVlrS +rsPKMZ)iM2WJ?DiQc/Ip$MoscJYof8Mh$E1mf*[>JASA\gS(t#ql%HorsASNXaubHg%aHqr;R>- +Lo(*d]`69Inc-2Is8UO1rr3&,J?&SJ"oZ<*jc09rs.8 +o`#9h(aM^T=@\S2_*%,b%F?"S1!%7!/9%7!(kVGWrrr-XC,pe*rVlqa)"$Pe!k]QQn,EMqMRa_R +n,Eeo(ij:/,[r&Oa$Q!hoD]0k3b'(7G;Lif*OY>8$`"W$B(*E5FfG+DPiViNpT80J5CL*4`D-:1 +&7[(mrJZI1V+]tNJuSeMXjd:L!d5DkrVm&uO@.AKrVca!Fr2'0jo,2a].rmV\JlBfrr3$k(l.S[ +#JX7 +o`#9tp\FRXqYpHkqYBOY$iKbqrqcBdrr2`fqY:'mrqH0crVm$"qtKjakl1\]q="=dr:p6hq!S.i +q"k!bq>0m`rqcBgnc&spq"jg`qY9m^p\jR\$iKf"rqlKerr)`irT*t\rqZ:$arr2unrr2uqrr3*!p\4O`rrrArq>UU?m!;lcq"9%ugqYpL$rV6-bs8W)oq=jjf"o8&qs8DlprrW/nrU'UhrV6Bls8;clrrDrqrr`5o +p\Omh"o\5lrquZkrrr5qs8W&qrr33$p\k*cq#:6l!;ZQmJ,~> +o`#9_J=21H[di>#\!ZR_$dsX3n#h>TmcpBoX8)\sl\'rGrVm#g\:B;)kl1\5SF?I]er/GAQi6FR% +/uTnmuO*AO2LFiJFN+/$K6iLR)H@hSXP5an,Eg?MuN.WQF-#@]VaK_jo5GTTRt\krrAqprt+IHN +VLi9rr3.t]`8#laSu2@gO\PTrs%YMpAb06\GZ@,` +W#l>g44m`rr3/\QDXAs\GZ@1UqHa-j2h6"#2=^lnq3+srr3&sS,WBdJ,~> +o`#9M(e#bqHKN>EI7*E%$`tFiibKWehq1^AB))B.g)hEMrVm#XIMa6lkl1[f9^hubZn9546Mp9P% +/iM'i\XJD1m-a7)!(5e$HOW@6^2dF9h6A9n,Efk/c=O]6$D&2KjDIijo5GJ;B<%?rr?C(rt*j$0 +^o$9Lj)qms7&8Ks8SA`rr]kM+a*ea"irr8n!eb(rr^%R3Q_0u%8O#)^a>`nkPtSZ*\R*RrrH$*r +r3*!RTJ2@rrA>`rr]kM+a*ea$HPILXoJFi93iD4rr3.)L&_1rRf< +o`#*op\4OarquNXrsJc"q"O[cs8;fjq=jmsq=jdbrr;urrV?3_kPkS[qX=Feq#(!bp[8%grVHQm +q>1*gqtp0WrsJPtr:p*cqt^$]rUBgqr:p6cqZ$TnrVcNeqrIbXqu$?k!;cZo#Q"2ns8VifqYpKq +r;6Kn&H)S.rqQL6eq#(0lq>L9l!rMclr;Zfq%/Bl#q#16frr<#tp\aL[!WMlkrrW2pqu6U0 +r;Zfrq"apbrVZKdr:g6krqZKlq#:9srqHEls82fq!r_limJd7cq#13l!Vu]lrt,,.s8MfhrqZNj +q=smfs7uWlrrrDrrr<#qrr33$p\Opeq#:6l!W;ims*t~> +o`#Jqa'hrsS7FM1W86r5m3WRJlp\%&8?ejluO.jPu_[Mu2`U#nG`i\W6:6ieAI`@K&cA#%F^EoN3N<\ceRK8U;?chrrKm_qu6])qYpL' +Y(>F/rI]X$r;Zf<\c2U?e,TI8MP'C/g@P*S_DGcP1,']s66!$regOOs7M$6s8Tt4s8V)4[I4%srlg8Urr3"p +hu*Kce,TI8MP'C/g +o`#$];\jlYlF`,`Vofs6Ulgs8S2Rs8U4cGjbS6rLtdWrr3"& +`Vf`IYQ+XY.oG>$];\jlYlF`,`VofIm2k?gs,cpRs2lO1s*d,orVlo'PPkH2~> +oD\pequ?KhpAk0[rsJc"p\k-krVuomq"F^pq=jaarVl`jqtKpLrrMrlnG`[hq"sj\qL^Hmqt^$arqH3_rr<#qqu?]oq!S1^qt^74 +q>1-krVuikq>^Kor;6Hms7lQiqYpNpqtpEnr;-Em"oJ?"r:g'[rrN#qrr*'!qtU!drVllmqu7$% +s8D`gs8W)rqu-Kn!;QKl!W;fnrsAT&s8;Wfs8W#rr;QforqueH~> +o`#'jK"LoRqg\\0mf*[YJ:ubYn_4$CO,s86rsP6IZ.mpqbaZ5"Rf;ON!MZgfrroop]Tn&:mf*[G +\B^Arg9\c8J:Q_MrsQr!R)?dtX3%*-UYu(M"1!]De,'(Pc[^PRs8V*-\,!D_jSo8=^&%a;f#@[h +n:J7Os6P9@rr2ouS)F;G$Jb[CNM61Jo>nl1rr3&tN;`_T(=]/Zp>nl1s8S&=_liP0s1H8Ls37_Grs$F>s3l_(rUp0s^>APUmG>L; +RcsbN!rS#Ur;R,Zs5f66q>^'-`8gjs!rS#UrVloCY5\G-`;KYaL91@RaS5W4!O_:ls*t~> +o`#'f*J=)cq\T=_mf*[F(a$Qnk.L]n1Gen%rsM7:Ek]'8UIp.b8,VTN!EO1/rrmg0L-?PImf*^' +I\oR8rrrCC-8ht*qu7&&(`7PurlVEloQI_)rrL/qqYpu3 +QN.!F*.e.ih&(/1rr3!j`r>uL_#Mb8>S_sQjI +_hL$>eGfILq(MXCrt*!GcnJJls65u9bPqPAq(MXDrrJp2rr3:gq>[TBC&@q!nGN:eGhi5sJ,~> +oD\jcq"j^bq!J(gqY0pdqYC0kr:g-`rsSf"p\=[cqu$Bfq#'@U!rhrjnc&gmp\=U^p\F7W%/p)$ +rV??fqY9m\p\s[^"Shihqu$Hj!rVfkrr3#uq>L$gq>Uuq=sjXrs&Dsp\4IZrVZZrrVHEk"9&)kqtL*krVHHl!W)fprri>u +q=sj]rrDuos*t~> +oD\lEQ\PBf!JpaCrsH2cbi,Uus8UQ"c1h5GidlWAeEaZgetA)Hkl1_TKXC:L#5!Y,XLs(]mf*^M +^")85_Rck0R"9hUnc'!nM6NJ`ago4*aarINrrMkbrI=p:lMUYifmpa8n_(=es7(rsjo5DHWrDkp +$N@0es2qDAs8Vf,r;Qebnc&OkfW0hDrV6BnkHb$c%/crQJ<-YUqZ$TLcMRV@"oGQVXj>D_rrKCn +q>Ua!]__Z\X,+Riq>UN`dI-u5"oc$Ds/k\frrr)3S<1_ho`#0paI.a8PHj!BrrM;gqu6fOX,+Ri +q#:BXZMa_'XmQ,f"nf^%ON%4orrLCDr;V9~> +oD\k466uFF!@Ia4rsO/kU<$tNs8K/@V#L/h$d'A)26bhcTX7WST'61Uk9"m;rs%a6-u"AP?gdq& +^5'#A7Z`191.)s!hXUURp*joOLn0'UPFNT7rr3#g:&Pn07G.P<$b7+.s5pn;OT+>j[H7Dif4FmV +rsSa>b5\)Gr;ZfbM>mJR!CQ#KrrfiE-]IrtrrLVjr;R3$>8\87@&ir#s1G3&rr3/rE?&_kXR?)h +ET6fo#lB>Ls0u\hN;NGN!oC$:rVm'!IY@`9hZ!NYm#F^sQMpIU#PslY+Wrje_YjE7e8tNe"Lr(l +N;NDM!Ru2grrHlkrr3/gN_;9rrV6BnV#C5kJ,~> +oD\mdqYL0b"T%lfqtoj^$N0Yoq"k!fq"OO]p\tX"p\4[bqYgBjs7lKTrrW,mq=4IhqtKm_p\4LO +rsSc"q"amaq>C6gp\aO\#5n5mrqlTlrqulnrr2otq#0phr;69frVm'!p\t-er;Q]sqtK4P!ri#p +l2Lb^JcEC_J,~> +oD\lBW3cJR"ba.2N4[*ursI8/U5ZSQc]*I+i:m6Zgjk+Ce#hZbci0-=kl1_,J>_r;#0)=W`IWQ7 +mf*[ +oD\k/@!)Ab"X%e%08#V[rsH"R<\AgbW%]&+`qTK@^_e6HYA27oVu8]-kl1^U(gun6#+-MhQ5^ZC +mf*Zf1-naQ6r9T;?l5a0rstnFKAD3@gV_(L +oDed`#5J#kqtKj_mf*Iep\Ophq#:!fqtC$tqtU!aqZ$Hlrr;chkl1_[qY0O[!r;clrq?Ehn,E[l +q"O^ap\Operq?EhnGa!tq>9scs8Vrps8)`ps8)Zf"8i,rq>L +oDef?#_@f$]YT>QcMI#0"g3BWs6u3NJ,m7UrsQl(S@c'(a7o<%OJ_7A"/DiHq""FhVUWeAJ:O]h +rs\%GJ^M\o[/IanJ:P,ursnIga-YTWqQ'>iW9jQaZi#=U\GapRrVm5VJC0h8s8VoRs/G/\!o8q" +JcDJEJ,~> +o`"pjrYPnY-VB,S,8d9Nn,EQ-(his13rTrrL%bNSROLm^Er)3nn*r;Bkl1`e@iOt/rruf7TH+jd +B(,a.d3fg4U)nOTM]ioSI.7.Gi(f\-^[q,2n,HeOs8I0=(^#6`Z!@8-$FUeQ8$W*ooZ@,Ck5PLu +1X^jSUAo`~> +o`#'kp\4IYrqccqqYBOY#l",nqt^!]p\=C\$MsMprVHNns8;Wgl2Lncq>0jboD]'pp\ssaq"X^S +rs8Mtp\=U`r;$-ep[8%ip\Fddqu?]qrVHNnr;63jq"O[[rVlrtp\Omh"TA>urV5XW"TA>rp\f[C +U&TW~> +o`#9=J:NKO\\lJCWh/VX$&"N2\Y"D6JrBX$rsGfZe(h4ps8UDt`p*L+ka]#1oCMteo7HUrZAOLA +n,Eg5Sq)d"gWPtEJ:NFMnG`slLS!Jd_ts/rk,IbJd/8CtJV]'!KDYZJ$ep32r;ZfTo&\Y_rp'Ld +kNfI.h1>U"s*t~> +o`#8d(`4Z&J!$28A5DXn$N;,.iI=]A2'"7Gp&>A2*j3;!h>dMR*gl3l"Op(f)!UYl#O!2o2018r +D"%B4OA?]GA\Oj+0c1`RnaQPfnKgrOd$"(mi6l)ks/Go5"WA^4PTKW!rsQOX@f$-)`ok[_-iE90 +"Ou.I,/Jj1U&TW~> +p&>Erp\4I^q=sd_rquZ]rr`8prV6Bd!rDZdo`#GmET`9N~> +p&>E#J:O!RVN.1`pW:&8rsA7HgQR/BL95ufo`#<6Q/g?js6RP@J=50WrreplZ@ME8rs-f2]98)W +nXJtH"IFYYeWp,a"+u2Xp$_nsXKnG_rOnrAqi9;.Rt-$QKX.\iR%9?'rr3>[JFig?_Y9nIc]IDk +"0mQNk(3Q*s*t~> +p&>D3(`5Tq?8>39n=5.!rs@j*^,d)U,\e/So`#;W50U2(s4iR#(e24(rrc))EuZKK1T' +k">(A"@>)!V(uORQJCW&Eo? +"*#MZdXhFks*t~> +p&G'f$2=;nq>'sgs82W[rrW/nq#:!iq"OO\o`#9qp\4[erqcQhp\F+S"oe8nrqH?^s8Viuq=jac +s7lT^rrW)mq>U*kq"ss_q!\5"rqQ9frqcKjrVQEis7c9_q=sg\p\Fd`rVlg(rV- +p&>DlV1>MVR@DP&s1+llrs@M5Oaqt7NIZQ)o`#< +p&>Cr>Spk%77sNYs+"2=rs?I\3#EJR0GkY'o`#;a(a7T4ggHt)(f0eirrq9sOOk>EoD](`02rj3 +rr5(8n,EH>5?.V!"?qNh*A$[Z)!O%AmbDl2j1:L_nG+=H.TJ0;(a;\n8^.26$H*eGrHLG'cLEl' +JcCE'J,~> +o`#9sp\4O[rr<#tp\F7W#lFDnp\Og_p\OL]$MjGps8;cns82QglMpn["982krUg*rrqHU*grp]q)rV6 +o`#9QJ:Or!p](9dJ>2K3#e?8(JZHkKJ?neH$DN14rmeRLqo+*3li.1dVPO$TJDg)"$0m,T['&he +oS1!Hrs.8FJUiTrigg!u!9iqP)!?h-aKt$HUp]*Brp,*/a6C4C[_CVuL$\g=$L<5kR=MU@s6lA` +JcCE'J,~> +o`#94(`7 +o`# +p&>I!_gm9PoDejEk+@=Fn,EZoJ;)+RP_b"XoD]00TC\u@h<;PsK&#\l#/l2Cer>3go`#3.SB&PG +YN`*Lmf*^AJ:XWJM2AI+J;_YDnc'F$N/6*8TYT^:rN6,"Q\!lST?t=Fl)0jGrsJ=IJ +p&>HtOr,$okl:XpdSM$Mn,EZ+(a>Js4XVB)oD]/N; +D:`DXrpTjqW#-F\Yp_#=8Jj%SlLFlkoIhQ"Yu?Y0Wr$Q2s$Ia;ePN6%mFP`2rr2p)k85%%ec4QL +i^9_ss+LE&~> +p&>-kp\4L_rrr>tqtTp^n,EXeq"sj`r:g0\rsJYtq>L?jq#16eqX"4erV60^q"a[\p&>Bup\F^c +qYp?ip\jR\%/BSmq=ja_q"ORXp\jX^(]=(*q>:0hqYpBgs8VrlrV?Efrr;ojr;HX&qtKmbs8Dcf +q=ji=s+LE&~> +p&>H8J:O-hrr(9 +n[@eaj+c^brsXd_k4L)e?%uOW;ln&WTC#8VY:&:J^=;p$H@U^m/Q48 +L8KO[JcCE'J,~> +p&>GX(`5mFr;*RELFsEZnG`de+u"s1P-c1?o)B&b,[8%[R3p2X+`H`I#JVi?,pl(uCA%T6ef@25 +k'GiobTkO(rsUA!?:>`DIP)Hc(`gK`rth[cP#-\^Y\;dM@/p7I@aAB#?17fn)5mH5$C;Sph>bkj +,@28-JcCE'J,~> +p&>I!r;$9jr;6?fqY0danG`akp\FRXq"O[UrsJPqrVl`hqY^Bgq!J(]rVlNoqYg3`rUp0sqtL$f +qu6HkqtTUZ$iKeop\FUYqtp0_rUBh&qtKscr;Q`qq=jacs8D`fp\F^`q=j^_rsAYurVufjq=s^\ +JcCB&J,~> +p&>H^c_&M^e\eW-W.C$&nG`aAJ=;"AP(:.7rsSadJD^(EKX]D0N0Wf1#j6kkL9'-mJD'Vq$+YZ4 +m`+^om_XkLrsR#8K864`J]GZkJD0Mm(:essjO*T!n#(]Fs8V,;Q%>aA\YOeQr;R)UJDU=SNgP`V +WIb)%s*t~> +p&>HIW)9DhZ]T3e?l:ffnG``q(e5Dc3>d> +oDejc"T&#lq>($dn,EC`r:^3fnc'!mp\Opeq"t'jqtKmQrs8Jqp\k!drqQ?^rsAGsqu6Nnrr2]j +n,EdoqYg9bqYg6bq=jaUrsJSrq>C-irVQKeq>L +oD],_PH;^%V4=Qd[.""pSG[m;Y4;N#VgtfG_26&%r5F2FqsOIiX+5c^\B"<0WqHB!qLlYpoZd.' +oT7>drsRScj/dd4kFdX"J?nbG%/QcNU"%$YfYP=hSG<*`#Fg;,l,]gBn,*+kc[bTHNS)I*MXc8t +KE$H~> +oD]+_3bagf>YJ[@G45G29DfV,D"7N6?Pm>MO!p+Wq3DjNq!S.fAf)E1I[]^lAbH'1ocT6Dl_O(< +l8>C+rsQP[b@h`,do.Sa(j#9J%/!dA#l^es^!3iqr`^V\nU@0Y!kp.cu<^ +KE$H~> +o`#$lp\4I^pB13fq>9[]#6";kq"OOZnG`pop\FX^s8Vukqu$3cn,E^kp\Ogcqu-Nhq=O[mq=spd +s8Droq!S.irV6-_qtg-dr:p$bo)B'nq=j^`rqZEdp\Fae!r_lkpAYBpp](*hqY0i;s+13#~> +o`#9ZJ:Nf6J;'5uTtg*s#MO`cO+;b_q!n@m^4;]C`q]JHNkEMb_!h:0^OWE9b.QTuO-oS>$)#$a-:UU"\k2\"eMJr;HWsgO[]Ers68gr3>OnJ[>*%s+:9$~> +o`#9D(`5:O(a2"kL +o`#9tp\FXZq#(!`p\XL\!WMlmpAk-[rsei!qZ$Toq"aphrV60enc&smp\FXZrVufnqYBd`#lFJo +s8;lpq>'IY#5n5lqY:!crqHNgr:9jorqQ9eqtg-_p\Xge!rDZip](9h"TSDpq##^CJc>`MJ,~> +o`#9`J>\uhO3b4kJAC^T#5411K7JWtn,Ej(J>rSKj,]i#s4r]sp@8.i[Xb9QK'30bc)@0)rs639 +T)[(.fVb;.rsR&$Wj%E4_NL%DJC=#g$M0=>jh7smJ:P91qu6`%K&l\+#+2:fb(u%uJcC<$!<7Q~> +o`#9O(gp,V1oPXL(l\"b#OaVi*Z-#krpg!urc]2grr:.t:uMAh1,eUlrsSgQ(ggPhe,QhO?qg4m +#_?M]s.o"j?VTtg$_eJLD_/8W3]K&8Xn)K!kqk3CLN?B2(khe`rrR-ZcM.>C6XKea-8:p?s+11M +s*t~> +o`"phrq?WorqZs+14M +s*t~> +o`#9>J:N +o`#8e(`4BZemK@mA:O1M#3J,e(`H`)nc'4"\kO#-p%s(Y=7uE==`tWSqXjdsia"--,AH +p&>$irq?]ss8D`ks8Mfko`"phrq?Hgrq$0irW<#oq#:!uqYU'^p\Xj_p\=[`p\=Xaq#:j%q=jgc +p\=^dqY^6gq"jX_#laSorr;utq>B[\$i0Spq"ag^qu6Ngq=O[frV6Bd"Shllq>L$e!r;Terqufn +#5\,hp\=L[JcC<$rVqB~> +p&>KNJq/R4s4`Onrp#Tpq=agmrlU"HJ4Gkd/CNc'#$ursAPnK;Rr6m/EO&mf*]_MR]"I\raYod$CR,p&>?TP_+O +p&>K+*>fs8P(d$IDrrrAaeuj$IrYQ8^KK9qeLQFD2/Zb-Q4atTQrVZQm% +]r>HT">mneC8W2R%u`Mp&>?lkoF'_s5!WHXR?)s6n<^R +pAY9pq=jX\qYpZqp\=a`rrN,qrq?HirU^$hqYp3qq>:*equ$BgqYpKorr)uqq"X^[rV6?cs7lWi +!;QHc!<2Ti#5n5lrqQ9amf*gqq#:-grV?ElqY:$bq"jmarrrAuq"OX_rV$ +pAY9aV1=*:rr2unrr3)CJhb3J:W?) +JUrN2MN3[LJ:WK4OI2W!J:N3$J;!Uers-r(Wq;RBV>BZ\&D*3;WSl^4ir?-@hP-(8\buC*%/J\j +Q[u*\Kn+]+Y5.bj!r9BZq1&O&[,-B6JcGZJJ,~> +pAY9T>SnOC`O?0@*8*@0k)4A+\[BVR"268C3/5'p\s+/jC^M,(`OM9 +)]9eG.l&e#(`=YL2+(+m(`4/.(a&/:rs,VGAEl?E>kRRc&@OgcA&cMqb5Z33_cAU5JGT3D%.q;f +65j:/+rD.;D"RE#!qUm_q%s/\G/Ah1JcGZJJ,~> +r;R'%r;61'Zs8W)`rs/N#qu$Bks8W)tqu6j!rVZTlrUKmj +rV?3_r:L"/rqu]kqu$?cqY^6fr;6Bfq=sd\p\4IZqYBs`q>L$lqYBm[q"t$[rs8W%qYBm[q"jo> +s+14Gs*t~> +r;R)ee[hTFQ'@]:]`,qd`4rpmZF%3NYGnLmQ&LKQJ;92U[c-cV!rh`^li.CmkKLiheaJj*U_+sa1]^9KsB"B^!FO.YbRMQP(87IX/r+p\!r!KJ-N*KJ:Nlr +j73-Un]8,+KnGJgeGOmtJcGTHJ,~> +r;R)RZ@Q7L5!2;FLAmVVPDb'?F*E4\D.7!M5;+?/(a_%3HHG^W!r_6Hli.Cle"`)&ZebZ[i8O)% +rVm-%hRL#'^!HTHrrgVI,Uo>WruL$kW1&L9Q6L=KOb]lrLN$<[83.S21hLE(@!kNcrYPiQ<>ZQ8 +K?Wlc$0@V$7Nrm2BsIJbs+14Hs*t~> +r;Qp!r;HWolMpn`RK!9aqY(*grV?3eq#pQnrVulqrs\o'q"XUXq"t!dqu$GEs+14+s*t~> +r;Qofbi%^Tli.%_nFi:M!P*m]J.7(/h4]RoUn+RMkPk/Prr3DtZ'U8uLR,Ho]>2qaJcC<$h>`!~> +r;QoXUW1gFli.%[jR8N:!Iu"rVZeGS\0rr3DiEC)#n,sZpSK8d(nJcC<$h>`!~> +JcGBBrVhBJJcEIaJ,~> +JcGBB"SD0MmeVM7JcELbJ,~> +JcGBB"RG((i:_a%JcELbJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +JcC<$JcDkPJ,~> +%%EndData +showpage +%%Trailer +end +%%EOF diff --git a/Documents/Doxygen/latex/dl7bj-shadow-vert.png b/Documents/Doxygen/latex/dl7bj-shadow-vert.png new file mode 100644 index 0000000..86bdb79 Binary files /dev/null and b/Documents/Doxygen/latex/dl7bj-shadow-vert.png differ diff --git a/Documents/Doxygen/latex/doxygen.sty b/Documents/Doxygen/latex/doxygen.sty new file mode 100644 index 0000000..8f59bcc --- /dev/null +++ b/Documents/Doxygen/latex/doxygen.sty @@ -0,0 +1,576 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} + +% Packages used by this style file +\RequirePackage{alltt} +%%\RequirePackage{array} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package +\RequirePackage{calc} +\RequirePackage{float} +%%\RequirePackage{ifthen} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package +\RequirePackage{verbatim} +\RequirePackage[table]{xcolor} +\RequirePackage{longtable_doxygen} +\RequirePackage{tabu_doxygen} +\RequirePackage{fancyvrb} +\RequirePackage{tabularx} +\RequirePackage{multicol} +\RequirePackage{multirow} +\RequirePackage{hanging} +\RequirePackage{ifpdf} +\RequirePackage{adjustbox} +\RequirePackage{amssymb} +\RequirePackage{stackengine} +\RequirePackage[normalem]{ulem} % for strikeout, but don't modify emphasis + +%---------- Internal commands used in this style file ---------------- + +\newcommand{\ensurespace}[1]{% + \begingroup% + \setlength{\dimen@}{#1}% + \vskip\z@\@plus\dimen@% + \penalty -100\vskip\z@\@plus -\dimen@% + \vskip\dimen@% + \penalty 9999% + \vskip -\dimen@% + \vskip\z@skip% hide the previous |\vskip| from |\addvspace| + \endgroup% +} + +\newcommand{\DoxyHorRuler}[1]{% + \setlength{\parskip}{0ex plus 0ex minus 0ex}% + \ifthenelse{#1=0}% + {% + \hrule% + }% + {% + \hrulefilll% + }% +} +\newcommand{\DoxyLabelFont}{} +\newcommand{\entrylabel}[1]{% + {% + \parbox[b]{\labelwidth-4pt}{% + \makebox[0pt][l]{\DoxyLabelFont#1}% + \vspace{1.5\baselineskip}% + }% + }% +} + +\newenvironment{DoxyDesc}[1]{% + \ensurespace{4\baselineskip}% + \begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + %\setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + }% + \item[#1]% +}{% + \end{list}% +} + +\newsavebox{\xrefbox} +\newlength{\xreflength} +\newcommand{\xreflabel}[1]{% + \sbox{\xrefbox}{#1}% + \setlength{\xreflength}{\wd\xrefbox}% + \ifthenelse{\xreflength>\labelwidth}{% + \begin{minipage}{\textwidth}% + \setlength{\parindent}{0pt}% + \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% + \end{minipage}% + }{% + \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% + }% +} + +%---------- Commands used by doxygen LaTeX output generator ---------- + +% Used by

     ... 
    +\newenvironment{DoxyPre}{% + \small% + \begin{alltt}% +}{% + \end{alltt}% + \normalsize% +} +% Necessary for redefining not defined characters, i.e. "Replacement Character" in tex output. +\newlength{\CodeWidthChar} +\newlength{\CodeHeightChar} +\settowidth{\CodeWidthChar}{?} +\settoheight{\CodeHeightChar}{?} +% Necessary for hanging indent +\newlength{\DoxyCodeWidth} + +\newcommand\DoxyCodeLine[1]{\hangpara{\DoxyCodeWidth}{1}{#1}\par} + +\newcommand\NiceSpace{% + \discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}% +} + +% Used by @code ... @endcode +\newenvironment{DoxyCode}[1]{% + \par% + \scriptsize% + \normalfont\ttfamily% + \rightskip0pt plus 1fil% + \settowidth{\DoxyCodeWidth}{000000}% + \settowidth{\CodeWidthChar}{?}% + \settoheight{\CodeHeightChar}{?}% + \setlength{\parskip}{0ex plus 0ex minus 0ex}% + \ifthenelse{\equal{#1}{0}} + { + {\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces% + } + { + {\lccode`~32 \lowercase{\global\let~}}\obeyspaces% + } + +}{% + \normalfont% + \normalsize% + \settowidth{\CodeWidthChar}{?}% + \settoheight{\CodeHeightChar}{?}% +} + +% Redefining not defined characters, i.e. "Replacement Character" in tex output. +\def\ucr{\adjustbox{width=\CodeWidthChar,height=\CodeHeightChar}{\stackinset{c}{}{c}{-.2pt}{% + \textcolor{white}{\sffamily\bfseries\small ?}}{% + \rotatebox{45}{$\blacksquare$}}}} + +% Used by @example, @include, @includelineno and @dontinclude +\newenvironment{DoxyCodeInclude}[1]{% + \DoxyCode{#1}% +}{% + \endDoxyCode% +} + +% Used by @verbatim ... @endverbatim +\newenvironment{DoxyVerb}{% + \footnotesize% + \verbatim% +}{% + \endverbatim% + \normalsize% +} + +% Used by @verbinclude +\newenvironment{DoxyVerbInclude}{% + \DoxyVerb% +}{% + \endDoxyVerb% +} + +% Used by numbered lists (using '-#' or
      ...
    ) +\newenvironment{DoxyEnumerate}{% + \enumerate% +}{% + \endenumerate% +} + +% Used by bullet lists (using '-', @li, @arg, or
      ...
    ) +\newenvironment{DoxyItemize}{% + \itemize% +}{% + \enditemize% +} + +% Used by description lists (using
    ...
    ) +\newenvironment{DoxyDescription}{% + \description% +}{% + \enddescription% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if caption is specified) +\newenvironment{DoxyImage}{% + \begin{figure}[H]% + \centering% +}{% + \end{figure}% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if no caption is specified) +\newenvironment{DoxyImageNoCaption}{% + \begin{center}% +}{% + \end{center}% +} + +% Used by @image +% (only if inline is specified) +\newenvironment{DoxyInlineImage}{% +}{% +} + +% Used by @attention +\newenvironment{DoxyAttention}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @author and @authors +\newenvironment{DoxyAuthor}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @date +\newenvironment{DoxyDate}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @invariant +\newenvironment{DoxyInvariant}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @note +\newenvironment{DoxyNote}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @post +\newenvironment{DoxyPostcond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @pre +\newenvironment{DoxyPrecond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @copyright +\newenvironment{DoxyCopyright}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @remark +\newenvironment{DoxyRemark}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @return and @returns +\newenvironment{DoxyReturn}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @since +\newenvironment{DoxySince}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @see +\newenvironment{DoxySeeAlso}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @version +\newenvironment{DoxyVersion}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @warning +\newenvironment{DoxyWarning}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @internal +\newenvironment{DoxyInternal}[1]{% + \paragraph*{#1}% +}{% +} + +% Used by @par and @paragraph +\newenvironment{DoxyParagraph}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by parameter lists +\newenvironment{DoxyParams}[2][]{% + \tabulinesep=1mm% + \par% + \ifthenelse{\equal{#1}{}}% + {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description + {\ifthenelse{\equal{#1}{1}}% + {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc + {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc + } + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for fields of simple structs +\newenvironment{DoxyFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for fields simple class style enums +\newenvironment{DoxyEnumFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for parameters within a detailed function description +\newenvironment{DoxyParamCaption}{% + \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}% +}{% +} + +% Used by return value lists +\newenvironment{DoxyRetVals}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used by exception lists +\newenvironment{DoxyExceptions}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used by template parameter lists +\newenvironment{DoxyTemplParams}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for member lists +\newenvironment{DoxyCompactItemize}{% + \begin{itemize}% + \setlength{\itemsep}{-3pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \setlength{\partopsep}{0pt}% +}{% + \end{itemize}% +} + +% Used for member descriptions +\newenvironment{DoxyCompactList}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + \setlength{\itemsep}{0pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \renewcommand{\makelabel}{\hfill}% + }% +}{% + \end{list}% +} + +% Used for reference lists (@bug, @deprecated, @todo, etc.) +\newenvironment{DoxyRefList}{% + \begin{list}{}{% + \setlength{\labelwidth}{10pt}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \renewcommand{\makelabel}{\xreflabel}% + }% +}{% + \end{list}% +} + +% Used by @bug, @deprecated, @todo, etc. +\newenvironment{DoxyRefDesc}[1]{% + \begin{list}{}{% + \renewcommand\makelabel[1]{\textbf{##1}}% + \settowidth\labelwidth{\makelabel{#1}}% + \setlength\leftmargin{\labelwidth+\labelsep}% + }% +}{% + \end{list}% +} + +% Used by parameter lists and simple sections +\newenvironment{Desc} +{\begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + } +}{% + \end{list}% +} + +% Used by tables +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% +\newenvironment{TabularC}[1]% +{\tabulinesep=1mm +\begin{longtabu*}spread 0pt [c]{*#1{|X[-1]}|}}% +{\end{longtabu*}\par}% + +\newenvironment{TabularNC}[1]% +{\begin{tabu}spread 0pt [l]{*#1{|X[-1]}|}}% +{\end{tabu}\par}% + +% Used for member group headers +\newenvironment{Indent}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + }% + \item[]\ignorespaces% +}{% + \unskip% + \end{list}% +} + +% Used when hyperlinks are turned off +\newcommand{\doxyref}[3]{% + \textbf{#1} (\textnormal{#2}\,\pageref{#3})% +} + +% Used to link to a table when hyperlinks are turned on +\newcommand{\doxytablelink}[2]{% + \ref{#1}% +} + +% Used to link to a table when hyperlinks are turned off +\newcommand{\doxytableref}[3]{% + \ref{#3}% +} + +% Used by @addindex +\newcommand{\lcurly}{\{} +\newcommand{\rcurly}{\}} + +% Colors used for syntax highlighting +\definecolor{comment}{rgb}{0.5,0.0,0.0} +\definecolor{keyword}{rgb}{0.0,0.5,0.0} +\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} +\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} +\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} +\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} +\definecolor{charliteral}{rgb}{0.0,0.5,0.5} +\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} +\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} +\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} +\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} + +% Color used for table heading +\newcommand{\tableheadbgcolor}{lightgray}% + +% Version of hypertarget with correct landing location +\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}} + +% possibility to have sections etc. be within the margins +% unfortunately had to copy part of book.cls and add \raggedright +\makeatletter +\newcommand\doxysection{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\raggedright\normalfont\Large\bfseries}} +\newcommand\doxysubsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\large\bfseries}} +\newcommand\doxysubsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxyparagraph{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxysubparagraph{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\raggedright\normalfont\normalsize\bfseries}} +\makeatother +% Define caption that is also suitable in a table +\makeatletter +\def\doxyfigcaption{% +\H@refstepcounter{figure}% +\@dblarg{\@caption{figure}}} +\makeatother diff --git a/Documents/Doxygen/latex/encoder_8c.tex b/Documents/Doxygen/latex/encoder_8c.tex new file mode 100644 index 0000000..f6cce01 --- /dev/null +++ b/Documents/Doxygen/latex/encoder_8c.tex @@ -0,0 +1,132 @@ +\hypertarget{encoder_8c}{}\doxysection{encoder.\+c-\/Dateireferenz} +\label{encoder_8c}\index{encoder.c@{encoder.c}} + + +Drehencoder Library. + + +{\ttfamily \#include $<$avr/io.\+h$>$}\newline +{\ttfamily \#include $<$avr/interrupt.\+h$>$}\newline +{\ttfamily \#include \char`\"{}encoder.\+h\char`\"{}}\newline +Include-\/\+Abhängigkeitsdiagramm für encoder.\+c\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=301pt]{encoder_8c__incl} +\end{center} +\end{figure} +\doxysubsection*{Typdefinitionen} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{encoder_8c_aedeed12448cdc285bc8c21763ae9f1a0}\label{encoder_8c_aedeed12448cdc285bc8c21763ae9f1a0}} +typedef enum EButton\+State {\bfseries t\+EButton\+State} +\end{DoxyCompactItemize} +\doxysubsection*{Aufzählungen} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{encoder_8c_a7e7392f1e24ef55450099d5e7d095c4b}\label{encoder_8c_a7e7392f1e24ef55450099d5e7d095c4b}} +enum {\bfseries EButton\+State} \{ {\bfseries Button\+State\+\_\+\+Unpressed} +, {\bfseries Button\+State\+\_\+\+Pressed} +, {\bfseries Button\+State\+\_\+\+Hold} +, {\bfseries Button\+State\+\_\+\+Released} + \} +\end{DoxyCompactItemize} +\doxysubsection*{Funktionen} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{encoder_8c_a80ec2c177aa9c2636f797ca881381827}\label{encoder_8c_a80ec2c177aa9c2636f797ca881381827}} +void {\bfseries Encoder\+Init} (void) +\item +void \mbox{\hyperlink{encoder_8c_a660e5b11dce82f5b307f628def81d188}{Encoder\+Polling}} (void) +\begin{DoxyCompactList}\small\item\em Encoder\+Polling. \end{DoxyCompactList}\item +\mbox{\Hypertarget{encoder_8c_aaf6a92358a883c87b032984732655084}\label{encoder_8c_aaf6a92358a883c87b032984732655084}} +int8\+\_\+t {\bfseries Encode\+Read} (void) +\item +\mbox{\Hypertarget{encoder_8c_a9ec6df4b13c9134f1c61546b718cd563}\label{encoder_8c_a9ec6df4b13c9134f1c61546b718cd563}} +int8\+\_\+t {\bfseries Encoder\+Read} (char Ueberlauf) +\item +\mbox{\Hypertarget{encoder_8c_ac9e955efd05fd5f6579bb5e179b506c7}\label{encoder_8c_ac9e955efd05fd5f6579bb5e179b506c7}} +void {\bfseries Encoder\+Write} (int8\+\_\+t \mbox{\hyperlink{globals_8h_a3a1db669858552a5c21490149c648e12}{Encoder\+Pos}}) +\item +\mbox{\Hypertarget{encoder_8c_ab5afede50bbce8aae40f3d02be64a374}\label{encoder_8c_ab5afede50bbce8aae40f3d02be64a374}} +void {\bfseries Encoder\+Min\+Max} (int8\+\_\+t Encoder\+Min, int8\+\_\+t Encoder\+Max) +\item +\mbox{\Hypertarget{encoder_8c_a2de57e0e3c5f3e0ab176c11363a58bf1}\label{encoder_8c_a2de57e0e3c5f3e0ab176c11363a58bf1}} +t\+EButton\+Pressed\+State {\bfseries Encoder\+Get\+Button\+State} (void) +\end{DoxyCompactItemize} +\doxysubsection*{Variablen} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{encoder_8c_abdbce2c910e9ca583dbbf74a99d50d72}\label{encoder_8c_abdbce2c910e9ca583dbbf74a99d50d72}} +int8\+\_\+t {\bfseries Drehgeber\+Position} +\item +\mbox{\Hypertarget{encoder_8c_aa7c6a2827b1cc4fcb2c5ff33d8d05300}\label{encoder_8c_aa7c6a2827b1cc4fcb2c5ff33d8d05300}} +int8\+\_\+t {\bfseries Drehgeber\+Max} = 127 +\item +\mbox{\Hypertarget{encoder_8c_af734dbab527768cb6207a4a5bd90bd1d}\label{encoder_8c_af734dbab527768cb6207a4a5bd90bd1d}} +int8\+\_\+t {\bfseries Drehgeber\+Min} = -\/127 +\item +\mbox{\Hypertarget{encoder_8c_a25f7e7becdadc23b1f28f301dbf0325d}\label{encoder_8c_a25f7e7becdadc23b1f28f301dbf0325d}} +volatile int16\+\_\+t {\bfseries i\+Button\+Pressed\+Counter} = 0 +\item +\mbox{\Hypertarget{encoder_8c_a93ec6852319d923e71003f50ad073327}\label{encoder_8c_a93ec6852319d923e71003f50ad073327}} +volatile int16\+\_\+t {\bfseries i\+Button\+Debounce\+Cycles} = 0 +\item +\mbox{\Hypertarget{encoder_8c_aa12d33a8833ab123443cfe09d8c385e8}\label{encoder_8c_aa12d33a8833ab123443cfe09d8c385e8}} +volatile int16\+\_\+t {\bfseries i\+Button\+Pressed\+Long\+Cycles} = 0 +\item +\mbox{\Hypertarget{encoder_8c_a3f5ba1853e96736d1ffcc756e9138849}\label{encoder_8c_a3f5ba1853e96736d1ffcc756e9138849}} +volatile int8\+\_\+t {\bfseries enc\+\_\+delta} +\item +\mbox{\Hypertarget{encoder_8c_a904a7151d59a45adae73c4e0a68b5a1f}\label{encoder_8c_a904a7151d59a45adae73c4e0a68b5a1f}} +static int8\+\_\+t {\bfseries last} +\item +\mbox{\Hypertarget{encoder_8c_a9031f1bbc45388b7f4d7a6d534114e64}\label{encoder_8c_a9031f1bbc45388b7f4d7a6d534114e64}} +volatile t\+EButton\+State {\bfseries button\+State} = Button\+State\+\_\+\+Unpressed +\item +\mbox{\Hypertarget{encoder_8c_a32833c1bd4da805038b020ba58750218}\label{encoder_8c_a32833c1bd4da805038b020ba58750218}} +volatile t\+EButton\+Pressed\+State {\bfseries button\+Pressed} = Button\+Pressed\+\_\+\+Unpressed +\end{DoxyCompactItemize} + + +\doxysubsection{Ausführliche Beschreibung} +Drehencoder Library. + +\begin{DoxyDate}{Datum} +2014-\/12-\/04 +\end{DoxyDate} +\begin{DoxyAuthor}{Autor} +Frank Klee \begin{DoxyVerb} Basisroutinen zum Abfragen eines Drehencoders mittels Polling. + Quelle: https://www.mikrocontroller.net/articles/Drehgeber +\end{DoxyVerb} + + +Tom, DL7\+BJ +\end{DoxyAuthor} +\begin{DoxyDate}{Datum} +2023-\/03-\/23 +\end{DoxyDate} +Formatierungen und Umbenennungen der Funktionen + +\doxysubsection{Dokumentation der Funktionen} +\mbox{\Hypertarget{encoder_8c_a660e5b11dce82f5b307f628def81d188}\label{encoder_8c_a660e5b11dce82f5b307f628def81d188}} +\index{encoder.c@{encoder.c}!EncoderPolling@{EncoderPolling}} +\index{EncoderPolling@{EncoderPolling}!encoder.c@{encoder.c}} +\doxysubsubsection{\texorpdfstring{EncoderPolling()}{EncoderPolling()}} +{\footnotesize\ttfamily void Encoder\+Polling (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Encoder\+Polling. + +\begin{DoxyVerb} Abfrage des Drehencoders und des Tasters + Wird vom Timer 0 aufgerufen +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Rückgabe} +none +\end{DoxyReturn} diff --git a/Documents/Doxygen/latex/encoder_8c__incl.md5 b/Documents/Doxygen/latex/encoder_8c__incl.md5 new file mode 100644 index 0000000..c969a61 --- /dev/null +++ b/Documents/Doxygen/latex/encoder_8c__incl.md5 @@ -0,0 +1 @@ +649d9b44e7ace5cc2daf966d2ab23cce \ No newline at end of file diff --git a/Documents/Doxygen/latex/encoder_8c__incl.pdf b/Documents/Doxygen/latex/encoder_8c__incl.pdf new file mode 100644 index 0000000..219eb08 Binary files /dev/null and b/Documents/Doxygen/latex/encoder_8c__incl.pdf differ diff --git a/Documents/Doxygen/latex/files.tex b/Documents/Doxygen/latex/files.tex new file mode 100644 index 0000000..6100ed4 --- /dev/null +++ b/Documents/Doxygen/latex/files.tex @@ -0,0 +1,13 @@ +\doxysection{Auflistung der Dateien} +Hier folgt die Aufzählung aller dokumentierten Dateien mit einer Kurzbeschreibung\+:\begin{DoxyCompactList} +\item\contentsline{section}{\mbox{\hyperlink{controls_8c}{controls.\+c}} \\*Display und Bedienelemente }{\pageref{controls_8c}}{} +\item\contentsline{section}{\mbox{\hyperlink{controls_8h}{controls.\+h}} \\*Headerdatei für \mbox{\hyperlink{controls_8c}{controls.\+c}} }{\pageref{controls_8h}}{} +\item\contentsline{section}{\mbox{\hyperlink{encoder_8c}{encoder.\+c}} \\*Drehencoder Library }{\pageref{encoder_8c}}{} +\item\contentsline{section}{{\bfseries encoder.\+h} }{\pageref{encoder_8h}}{} +\item\contentsline{section}{\mbox{\hyperlink{functions_8c}{functions.\+c}} \\*Diverse Funktionen }{\pageref{functions_8c}}{} +\item\contentsline{section}{\mbox{\hyperlink{functions_8h}{functions.\+h}} \\*Headerdatei für \mbox{\hyperlink{functions_8c}{functions.\+c}} }{\pageref{functions_8h}}{} +\item\contentsline{section}{\mbox{\hyperlink{globals_8h}{globals.\+h}} \\*Globale Variablen, Definitionen und Prototypen }{\pageref{globals_8h}}{} +\item\contentsline{section}{\mbox{\hyperlink{main_8h}{main.\+h}} \\*BJ-\/\+Keyer }{\pageref{main_8h}}{} +\item\contentsline{section}{\mbox{\hyperlink{vt100_8c}{vt100.\+c}} \\*VT100 Terminalausgabe }{\pageref{vt100_8c}}{} +\item\contentsline{section}{\mbox{\hyperlink{vt100_8h}{vt100.\+h}} \\*VT100 Terminal }{\pageref{vt100_8h}}{} +\end{DoxyCompactList} diff --git a/Documents/Doxygen/latex/functions_8c.tex b/Documents/Doxygen/latex/functions_8c.tex new file mode 100644 index 0000000..47c2d96 --- /dev/null +++ b/Documents/Doxygen/latex/functions_8c.tex @@ -0,0 +1,1006 @@ +\hypertarget{functions_8c}{}\doxysection{functions.\+c-\/Dateireferenz} +\label{functions_8c}\index{functions.c@{functions.c}} + + +Diverse Funktionen. + + +{\ttfamily \#include \char`\"{}functions.\+h\char`\"{}}\newline +Include-\/\+Abhängigkeitsdiagramm für functions.\+c\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{functions_8c__incl} +\end{center} +\end{figure} +\doxysubsection*{Funktionen} +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{functions_8c_ada3125b546b3115e7afc2e51bc7db894}{Delay\+Milli\+Seconds}} (uint16\+\_\+t ms) +\begin{DoxyCompactList}\small\item\em Zeitschleife von 1-\/65535 Millisekunden. \end{DoxyCompactList}\item +uint16\+\_\+t \mbox{\hyperlink{functions_8c_a682e380769f82867a41c13d632bb3cca}{Get\+Milli\+Seconds}} (void) +\begin{DoxyCompactList}\small\item\em Zählerwert für Zeitschleifen auslesen. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a318f7eb176f7797e0166cbd652855a3c}{Reset\+Milli\+Seconds}} (void) +\begin{DoxyCompactList}\small\item\em Setzt den Millisekundenzähler für Zeitschleifen auf 0. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_ab321d23dfab578b6a40f3c5e8894c280}{Int\+Enable}} (void) +\begin{DoxyCompactList}\small\item\em Register wieder herstellen und Interrupts erlauben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_ae2f4a274ba95c3e94edd58ce6f129de4}{Int\+Disable}} (void) +\begin{DoxyCompactList}\small\item\em Register sichern und Interrupts verbieten. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a586bc00ad3164def7ec76ac9bda4f1bc}{Write\+EEprom}} (void) +\begin{DoxyCompactList}\small\item\em Akt. Einstellungen in EEPROM schreiben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a3435bb0409b2c91ab253f4bd4cdc03e1}{Read\+EEprom\+WpM}} (void) +\begin{DoxyCompactList}\small\item\em Gespeicherte Einstellung für die Geschwindigkeit aus EEprom lesen. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a838ffc3ce94fc8c85429e5297a185022}{Write\+EEprom\+WpM}} (void) +\begin{DoxyCompactList}\small\item\em Akt. Einstellung für die Geschwindigkeit in EEprom schreiben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a4e592b116ccf5c55bbb5979bb7193981}{Set\+EEprom}} (void) +\begin{DoxyCompactList}\small\item\em Standardeinstellungen (bei neuem Controller) \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_adf7f3486f66ae3386f330a5172dfdf52}{Read\+EEprom}} (void) +\begin{DoxyCompactList}\small\item\em Einstellungen aus dem EEprom lesen. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a8684d17e55772fc84a10c9e778705eda}{Serial\+Write\+Char}} (unsigned char data) +\begin{DoxyCompactList}\small\item\em Ein Zeichen über serielle Schnittstelle ausgeben. \end{DoxyCompactList}\item +\mbox{\Hypertarget{functions_8c_ac2bac61999066f61501cd244a237192e}\label{functions_8c_ac2bac61999066f61501cd244a237192e}} +void {\bfseries Serial\+Write\+String} (char $\ast$s) +\item +void \mbox{\hyperlink{functions_8c_aa037229dc16e974a22eedcd6990a7b9d}{Sidetone\+On}} (void) +\begin{DoxyCompactList}\small\item\em Mithörton einschalten. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_ad82537f7ea58b4eb375952ce52615c4d}{Sidetone\+Off}} (void) +\begin{DoxyCompactList}\small\item\em Mithörton ausschalten. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_ae8011166e9324f9f3c6948249eb15fd1}{Sidetone\+Disable}} (void) +\begin{DoxyCompactList}\small\item\em Audioverstärker abschalten. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a60f2f041b0803584ba5fc2e0a373ed50}{Sidetone\+Enable}} (void) +\begin{DoxyCompactList}\small\item\em Audioverstärker einschalten. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_aafcd99a76b601d8b43b6827d414ccddb}{TXKey}} (uint8\+\_\+t \mbox{\hyperlink{structState}{State}}) +\begin{DoxyCompactList}\small\item\em Gibt ein Symbol aus. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a4010a7257caeca55f68c98ee199d3ea2}{Check\+Buttons}} (void) +\begin{DoxyCompactList}\small\item\em Fragt die Taster ab und löst entsprechende Funktion aus. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a68bed2cd125260e9c6eb7f6f8e0c9106}{Check\+Straight\+Key}} (void) +\begin{DoxyCompactList}\small\item\em Fragt die Handtasteneingänge ab und gibt das entsprechende Symbol aus. Bei der Handtaste findet über einen Timer eine Entprellung statt. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a9bd61bc3c9e38f6b325e4ba3f96d9472}{Check\+Paddles}} (void) +\begin{DoxyCompactList}\small\item\em Diese Funktion prüft, ob ein Paddle betätigt wurde. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a7783dcd27ef486bce541c85e10131394}{Check\+Dit\+Paddle}} (void) +\begin{DoxyCompactList}\small\item\em Prüfen, ob das Punkt Paddle betätigt wurde. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_ac0bccd022514697217eaf063b1b2c0fa}{Check\+Dah\+Paddle}} (void) +\begin{DoxyCompactList}\small\item\em Prüfen, ob das Strich Paddle betätigt wurde. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_aa0e063cf32b840a3ed51ae9aa677e2be}{Set\+Ratio}} (void) +\begin{DoxyCompactList}\small\item\em Berechnung der Zeitdauer für Punkt und Strich. \end{DoxyCompactList}\item +\mbox{\Hypertarget{functions_8c_a7a31f60576d112eca1abddf447df8248}\label{functions_8c_a7a31f60576d112eca1abddf447df8248}} +void {\bfseries Set\+Weight} (void) +\item +void \mbox{\hyperlink{functions_8c_a3e6e9a204e6bac15fdc0fe500390517c}{Send\+Symbol}} (uint8\+\_\+t Dit) +\begin{DoxyCompactList}\small\item\em Symbol senden. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a22d2dd23cb17e53e75c7d6366d9205d6}{Send\+Dit}} (void) +\begin{DoxyCompactList}\small\item\em Gibt einen Punkt aus. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a3dfd0f785e0377a124c423ac5ef8ddde}{Send\+Dah}} (void) +\begin{DoxyCompactList}\small\item\em Gibt einen Strich aus. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a683e588b64df83d67f1342ed5eeb099b}{Send\+Iambic}} (void) +\begin{DoxyCompactList}\small\item\em Wenn beide Paddle betätigt sind, wird alternierend ein Punkt und Strich ausgegeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_af3375f394993997701d75ee441810edc}{Set\+Frequency}} (uint16\+\_\+t f) +\begin{DoxyCompactList}\small\item\em Verändert die Frequenz des Mithörtons. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a859cf4a556750b8aa340761627fb6c42}{Tone}} (uint16\+\_\+t f, uint8\+\_\+t duration) +\begin{DoxyCompactList}\small\item\em Ausgabe eines Tons mit Dauer und Frequenz. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a0366eaeb4aab61562dcd5b24994d0103}{Boop}} (void) +\begin{DoxyCompactList}\small\item\em Boop Ton ausgeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a2f616a93763b4bc437c4311d653c0491}{Beep}} (void) +\begin{DoxyCompactList}\small\item\em Beep Ton ausgeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a72913eefa74c0c044d815a0b759577fa}{Beep\+Boop}} (void) +\begin{DoxyCompactList}\small\item\em Beep\+Boop Doppelton ausgeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a33edcf2aa23f97390659434ead6ef593}{Send\+String}} (char $\ast$s) +\begin{DoxyCompactList}\small\item\em Gibt eine Zeichenkette als Morsecode aus. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8c_a49e16203823a4921910161bd2610987a}{Send\+Char}} (unsigned char c) +\begin{DoxyCompactList}\small\item\em Gibt ein Zeichen aus. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Variablen} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{functions_8c_a763e48e059d99b10646ca16a7e177df8}\label{functions_8c_a763e48e059d99b10646ca16a7e177df8}} +uint8\+\_\+t {\bfseries Dummy} +\item +uint8\+\_\+t \mbox{\hyperlink{functions_8c_a42f0b8f91ce6b2a23dd6ff8672d13b95}{ee\+\_\+\+Dummy}} = 0x55 +\begin{DoxyCompactList}\small\item\em Dummy for Address 0. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{functions_8c_a1c70858b9aea8006017b70d201604a96}{ee\+\_\+\+Trx1}} = 0 +\begin{DoxyCompactList}\small\item\em TRX 1. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{functions_8c_a6f6cc3866f25698f6f9185e422ce7b8c}{ee\+\_\+\+Trx2}} = 0 +\begin{DoxyCompactList}\small\item\em TRX 2. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{functions_8c_a169f1099862f2dc874d344eb240fd8c2}{ee\+\_\+\+Keyer\+Mode}} = 1 +\begin{DoxyCompactList}\small\item\em Iambic A, Iambic B oder Ultimatic. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{functions_8c_a8f9b2a72d7b1d5f1c28673c36a51a33a}{ee\+\_\+\+Sidetone\+Enabled}} = 1 +\begin{DoxyCompactList}\small\item\em Mithörton eingeschaltet. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{functions_8c_a7c955b77d04539b88678e94d72deeef0}{ee\+\_\+\+Wp\+MBpM}} = 0 +\begin{DoxyCompactList}\small\item\em WpM oder BpM Anzeige. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{functions_8c_ad5a1c7f3fe4cc3af1873519f70586866}{ee\+\_\+\+Reverse}} = 0 +\begin{DoxyCompactList}\small\item\em linkes/rechtes Paddle vertauschen \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{functions_8c_a3f1e9ffbb5d98febdd58a4fa82b01f30}{ee\+\_\+\+Mem\+Button\+Mode}} = 0 +\begin{DoxyCompactList}\small\item\em Funktion des ersten Tasters (MEM5) \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{functions_8c_a8814741a33f0a4f2e14eee14d8c00dad}{ee\+\_\+\+Ratio}} = 30 +\begin{DoxyCompactList}\small\item\em Punkt/\+Strich Verhältnis 1\+:3. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{functions_8c_ac8f8c751bbe43f711df2e1ba13f79994}{ee\+\_\+\+Weight}} = 50 +\begin{DoxyCompactList}\small\item\em Punkt/\+Strich Gewichtung. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{functions_8c_a5f69205a6897625598ead5ab6a740fc7}{ee\+\_\+\+Memory}} = 0 +\begin{DoxyCompactList}\small\item\em Punkt/\+Strich Speicher. \end{DoxyCompactList}\item +uint16\+\_\+t \mbox{\hyperlink{functions_8c_a025c31b4a3c9adca80df2782808579a7}{ee\+\_\+\+Sidetone\+Freq}} = 600 +\begin{DoxyCompactList}\small\item\em Frequenz des Mithörtons. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{functions_8c_af636ee63fad94f56f61f334e0c2e46b0}{ee\+\_\+\+WpM}} = 12 +\begin{DoxyCompactList}\small\item\em Geschwindigkeit WpM. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{functions_8c_acde6a28c5a5747443f823ff09dce682b}{ee\+\_\+\+Rise\+Time}} = 5 +\begin{DoxyCompactList}\small\item\em Anstiegszeit Sinuston. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{functions_8c_a138d8a4a73593b01e9ffdfebc7134c89}{ee\+\_\+\+Rise\+Time\+Counter}} = 5 +\begin{DoxyCompactList}\small\item\em Anzahl Sinusschwingungen für den Anstieg. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{functions_8c_af46a7ac73709b59ac331e84016c6600f}{ee\+\_\+\+Debounce\+Time}} = 6 +\begin{DoxyCompactList}\small\item\em Entprellzeit für Straight Key Eingang. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Ausführliche Beschreibung} +Diverse Funktionen. + + + +\doxysubsection{Dokumentation der Funktionen} +\mbox{\Hypertarget{functions_8c_a2f616a93763b4bc437c4311d653c0491}\label{functions_8c_a2f616a93763b4bc437c4311d653c0491}} +\index{functions.c@{functions.c}!Beep@{Beep}} +\index{Beep@{Beep}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{Beep()}{Beep()}} +{\footnotesize\ttfamily void Beep (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Beep Ton ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a72913eefa74c0c044d815a0b759577fa}\label{functions_8c_a72913eefa74c0c044d815a0b759577fa}} +\index{functions.c@{functions.c}!BeepBoop@{BeepBoop}} +\index{BeepBoop@{BeepBoop}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{BeepBoop()}{BeepBoop()}} +{\footnotesize\ttfamily void Beep\+Boop (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Beep\+Boop Doppelton ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a0366eaeb4aab61562dcd5b24994d0103}\label{functions_8c_a0366eaeb4aab61562dcd5b24994d0103}} +\index{functions.c@{functions.c}!Boop@{Boop}} +\index{Boop@{Boop}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{Boop()}{Boop()}} +{\footnotesize\ttfamily void Boop (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Boop Ton ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a4010a7257caeca55f68c98ee199d3ea2}\label{functions_8c_a4010a7257caeca55f68c98ee199d3ea2}} +\index{functions.c@{functions.c}!CheckButtons@{CheckButtons}} +\index{CheckButtons@{CheckButtons}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{CheckButtons()}{CheckButtons()}} +{\footnotesize\ttfamily void Check\+Buttons (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Fragt die Taster ab und löst entsprechende Funktion aus. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_ac0bccd022514697217eaf063b1b2c0fa}\label{functions_8c_ac0bccd022514697217eaf063b1b2c0fa}} +\index{functions.c@{functions.c}!CheckDahPaddle@{CheckDahPaddle}} +\index{CheckDahPaddle@{CheckDahPaddle}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{CheckDahPaddle()}{CheckDahPaddle()}} +{\footnotesize\ttfamily void Check\+Dah\+Paddle (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Prüfen, ob das Strich Paddle betätigt wurde. + +\begin{DoxyVerb} Ist dies der Fall, wird das Statusbit gesetzt. Wurde in den + Einstellungen der Reverse Mode aktiviert, werden in der + Abfrage die Paddle vertauscht. +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a7783dcd27ef486bce541c85e10131394}\label{functions_8c_a7783dcd27ef486bce541c85e10131394}} +\index{functions.c@{functions.c}!CheckDitPaddle@{CheckDitPaddle}} +\index{CheckDitPaddle@{CheckDitPaddle}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{CheckDitPaddle()}{CheckDitPaddle()}} +{\footnotesize\ttfamily void Check\+Dit\+Paddle (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Prüfen, ob das Punkt Paddle betätigt wurde. + +\begin{DoxyVerb} Ist dies der Fall, wird das Statusbit gesetzt.Wurde in den + Einstellungen der Reverse Mode aktiviert, werden in der + Abfrage die Paddle vertauscht. +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a9bd61bc3c9e38f6b325e4ba3f96d9472}\label{functions_8c_a9bd61bc3c9e38f6b325e4ba3f96d9472}} +\index{functions.c@{functions.c}!CheckPaddles@{CheckPaddles}} +\index{CheckPaddles@{CheckPaddles}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{CheckPaddles()}{CheckPaddles()}} +{\footnotesize\ttfamily void Check\+Paddles (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Diese Funktion prüft, ob ein Paddle betätigt wurde. + +\begin{DoxyVerb} Wenn dies der Fall war, ist das jeweilige Statusbit gesetzt + und die Funktion für die Ausgabe des entsprechenden Symbols + wird aufgerufen. +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a68bed2cd125260e9c6eb7f6f8e0c9106}\label{functions_8c_a68bed2cd125260e9c6eb7f6f8e0c9106}} +\index{functions.c@{functions.c}!CheckStraightKey@{CheckStraightKey}} +\index{CheckStraightKey@{CheckStraightKey}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{CheckStraightKey()}{CheckStraightKey()}} +{\footnotesize\ttfamily void Check\+Straight\+Key (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Fragt die Handtasteneingänge ab und gibt das entsprechende Symbol aus. Bei der Handtaste findet über einen Timer eine Entprellung statt. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_ada3125b546b3115e7afc2e51bc7db894}\label{functions_8c_ada3125b546b3115e7afc2e51bc7db894}} +\index{functions.c@{functions.c}!DelayMilliSeconds@{DelayMilliSeconds}} +\index{DelayMilliSeconds@{DelayMilliSeconds}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{DelayMilliSeconds()}{DelayMilliSeconds()}} +{\footnotesize\ttfamily void Delay\+Milli\+Seconds (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{ms }\end{DoxyParamCaption})} + + + +Zeitschleife von 1-\/65535 Millisekunden. + + +\begin{DoxyParams}{Parameter} +{\em ms} & Anzahl Millisekunden \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a682e380769f82867a41c13d632bb3cca}\label{functions_8c_a682e380769f82867a41c13d632bb3cca}} +\index{functions.c@{functions.c}!GetMilliSeconds@{GetMilliSeconds}} +\index{GetMilliSeconds@{GetMilliSeconds}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{GetMilliSeconds()}{GetMilliSeconds()}} +{\footnotesize\ttfamily uint16\+\_\+t Get\+Milli\+Seconds (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Zählerwert für Zeitschleifen auslesen. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em Millisekunden} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_ae2f4a274ba95c3e94edd58ce6f129de4}\label{functions_8c_ae2f4a274ba95c3e94edd58ce6f129de4}} +\index{functions.c@{functions.c}!IntDisable@{IntDisable}} +\index{IntDisable@{IntDisable}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{IntDisable()}{IntDisable()}} +{\footnotesize\ttfamily void Int\+Disable (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Register sichern und Interrupts verbieten. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_ab321d23dfab578b6a40f3c5e8894c280}\label{functions_8c_ab321d23dfab578b6a40f3c5e8894c280}} +\index{functions.c@{functions.c}!IntEnable@{IntEnable}} +\index{IntEnable@{IntEnable}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{IntEnable()}{IntEnable()}} +{\footnotesize\ttfamily void Int\+Enable (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Register wieder herstellen und Interrupts erlauben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_adf7f3486f66ae3386f330a5172dfdf52}\label{functions_8c_adf7f3486f66ae3386f330a5172dfdf52}} +\index{functions.c@{functions.c}!ReadEEprom@{ReadEEprom}} +\index{ReadEEprom@{ReadEEprom}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ReadEEprom()}{ReadEEprom()}} +{\footnotesize\ttfamily void Read\+EEprom (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Einstellungen aus dem EEprom lesen. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a3435bb0409b2c91ab253f4bd4cdc03e1}\label{functions_8c_a3435bb0409b2c91ab253f4bd4cdc03e1}} +\index{functions.c@{functions.c}!ReadEEpromWpM@{ReadEEpromWpM}} +\index{ReadEEpromWpM@{ReadEEpromWpM}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ReadEEpromWpM()}{ReadEEpromWpM()}} +{\footnotesize\ttfamily void Read\+EEprom\+WpM (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Gespeicherte Einstellung für die Geschwindigkeit aus EEprom lesen. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a318f7eb176f7797e0166cbd652855a3c}\label{functions_8c_a318f7eb176f7797e0166cbd652855a3c}} +\index{functions.c@{functions.c}!ResetMilliSeconds@{ResetMilliSeconds}} +\index{ResetMilliSeconds@{ResetMilliSeconds}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ResetMilliSeconds()}{ResetMilliSeconds()}} +{\footnotesize\ttfamily void Reset\+Milli\+Seconds (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Setzt den Millisekundenzähler für Zeitschleifen auf 0. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a49e16203823a4921910161bd2610987a}\label{functions_8c_a49e16203823a4921910161bd2610987a}} +\index{functions.c@{functions.c}!SendChar@{SendChar}} +\index{SendChar@{SendChar}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{SendChar()}{SendChar()}} +{\footnotesize\ttfamily void Send\+Char (\begin{DoxyParamCaption}\item[{unsigned char}]{c }\end{DoxyParamCaption})} + + + +Gibt ein Zeichen aus. + +\begin{DoxyVerb} Mit dieser Symboltabelle werden die Zeichen + der Textspeicher gesendet +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em c} & Zeichen, das Ausgegeben wird \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a3dfd0f785e0377a124c423ac5ef8ddde}\label{functions_8c_a3dfd0f785e0377a124c423ac5ef8ddde}} +\index{functions.c@{functions.c}!SendDah@{SendDah}} +\index{SendDah@{SendDah}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{SendDah()}{SendDah()}} +{\footnotesize\ttfamily void Send\+Dah (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Gibt einen Strich aus. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a22d2dd23cb17e53e75c7d6366d9205d6}\label{functions_8c_a22d2dd23cb17e53e75c7d6366d9205d6}} +\index{functions.c@{functions.c}!SendDit@{SendDit}} +\index{SendDit@{SendDit}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{SendDit()}{SendDit()}} +{\footnotesize\ttfamily void Send\+Dit (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Gibt einen Punkt aus. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a683e588b64df83d67f1342ed5eeb099b}\label{functions_8c_a683e588b64df83d67f1342ed5eeb099b}} +\index{functions.c@{functions.c}!SendIambic@{SendIambic}} +\index{SendIambic@{SendIambic}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{SendIambic()}{SendIambic()}} +{\footnotesize\ttfamily void Send\+Iambic (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Wenn beide Paddle betätigt sind, wird alternierend ein Punkt und Strich ausgegeben. + +Beim Iambic B Mode und Ultimatic Mode wird gegebenenfalls noch ein gegensätzliches Zeichen des zuletzt betätigten Paddle angefügt. Erläuterung und Timing siehe Dokumentation. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a33edcf2aa23f97390659434ead6ef593}\label{functions_8c_a33edcf2aa23f97390659434ead6ef593}} +\index{functions.c@{functions.c}!SendString@{SendString}} +\index{SendString@{SendString}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{SendString()}{SendString()}} +{\footnotesize\ttfamily void Send\+String (\begin{DoxyParamCaption}\item[{char $\ast$}]{s }\end{DoxyParamCaption})} + + + +Gibt eine Zeichenkette als Morsecode aus. + +\begin{DoxyVerb} Wenn die Zeichenkette ein Leerzeichen enthält, wird dieses als Pause + zwischen zwei Wörtern interpretiert und eine Pause der Länge von 7 + Dits (in Abhängigkeit der eingestellten Geschwindigkeit) wird eingefügt + Zwischen einzelnen Zeichen wird eine Pause von 3 Dits eingefügt +\end{DoxyVerb} + \begin{DoxyRefDesc}{Noch zu erledigen} +\item[\mbox{\hyperlink{todo__todo000001}{Noch zu erledigen}}]Für die Zeichenausgabe der Textspeicher könnte hier noch die Beachtung des eingestellten Ratios und der Gewichtung zugefügt werden.\end{DoxyRefDesc} + + + +\begin{DoxyParams}{Parameter} +{\em s} & Zeiger auf die Zeichenkette \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a3e6e9a204e6bac15fdc0fe500390517c}\label{functions_8c_a3e6e9a204e6bac15fdc0fe500390517c}} +\index{functions.c@{functions.c}!SendSymbol@{SendSymbol}} +\index{SendSymbol@{SendSymbol}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{SendSymbol()}{SendSymbol()}} +{\footnotesize\ttfamily void Send\+Symbol (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{Dit }\end{DoxyParamCaption})} + + + +Symbol senden. + + +\begin{DoxyParams}{Parameter} +{\em Dit} & = 1, wenn Symbol ein Punkt ist \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a8684d17e55772fc84a10c9e778705eda}\label{functions_8c_a8684d17e55772fc84a10c9e778705eda}} +\index{functions.c@{functions.c}!SerialWriteChar@{SerialWriteChar}} +\index{SerialWriteChar@{SerialWriteChar}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{SerialWriteChar()}{SerialWriteChar()}} +{\footnotesize\ttfamily void Serial\+Write\+Char (\begin{DoxyParamCaption}\item[{unsigned char}]{data }\end{DoxyParamCaption})} + + + +Ein Zeichen über serielle Schnittstelle ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em data} & Zeichen, das seriell ausgegeben wird \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a4e592b116ccf5c55bbb5979bb7193981}\label{functions_8c_a4e592b116ccf5c55bbb5979bb7193981}} +\index{functions.c@{functions.c}!SetEEprom@{SetEEprom}} +\index{SetEEprom@{SetEEprom}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{SetEEprom()}{SetEEprom()}} +{\footnotesize\ttfamily void Set\+EEprom (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Standardeinstellungen (bei neuem Controller) + +\begin{DoxyVerb} Wird ein neuer Controller verwendet, gibt es keine + Einstellungswerte im EEprom. Diese Funktion schreibt + die initialen Werte in das EEprom. Wird sehr selten + benötigt ;-) +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_af3375f394993997701d75ee441810edc}\label{functions_8c_af3375f394993997701d75ee441810edc}} +\index{functions.c@{functions.c}!SetFrequency@{SetFrequency}} +\index{SetFrequency@{SetFrequency}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{SetFrequency()}{SetFrequency()}} +{\footnotesize\ttfamily void Set\+Frequency (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{f }\end{DoxyParamCaption})} + + + +Verändert die Frequenz des Mithörtons. + +\begin{DoxyVerb} Durch die Anpassung des Timers 1 für das + Laden der Werte der Sinuskurve wird die + Tonhöhe des Mithörtons verändert. +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em f} & Frequenz des Mithörtons in Hz \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_aa0e063cf32b840a3ed51ae9aa677e2be}\label{functions_8c_aa0e063cf32b840a3ed51ae9aa677e2be}} +\index{functions.c@{functions.c}!SetRatio@{SetRatio}} +\index{SetRatio@{SetRatio}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{SetRatio()}{SetRatio()}} +{\footnotesize\ttfamily void Set\+Ratio (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Berechnung der Zeitdauer für Punkt und Strich. + +\begin{DoxyVerb} Die Länge eines Symbols ist abhängig von der + eingestellten Geschwindigkeit. Intern wird immer + mit Wörtern pro Minute gerechnet. Das normale + Punkt/Strich Verhältnis ist 1:3. Dies kann durch + den Parameter Ratio in den Einstellungen verändert + werden. +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_ae8011166e9324f9f3c6948249eb15fd1}\label{functions_8c_ae8011166e9324f9f3c6948249eb15fd1}} +\index{functions.c@{functions.c}!SidetoneDisable@{SidetoneDisable}} +\index{SidetoneDisable@{SidetoneDisable}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{SidetoneDisable()}{SidetoneDisable()}} +{\footnotesize\ttfamily void Sidetone\+Disable (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Audioverstärker abschalten. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a60f2f041b0803584ba5fc2e0a373ed50}\label{functions_8c_a60f2f041b0803584ba5fc2e0a373ed50}} +\index{functions.c@{functions.c}!SidetoneEnable@{SidetoneEnable}} +\index{SidetoneEnable@{SidetoneEnable}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{SidetoneEnable()}{SidetoneEnable()}} +{\footnotesize\ttfamily void Sidetone\+Enable (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Audioverstärker einschalten. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_ad82537f7ea58b4eb375952ce52615c4d}\label{functions_8c_ad82537f7ea58b4eb375952ce52615c4d}} +\index{functions.c@{functions.c}!SidetoneOff@{SidetoneOff}} +\index{SidetoneOff@{SidetoneOff}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{SidetoneOff()}{SidetoneOff()}} +{\footnotesize\ttfamily void Sidetone\+Off (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Mithörton ausschalten. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_aa037229dc16e974a22eedcd6990a7b9d}\label{functions_8c_aa037229dc16e974a22eedcd6990a7b9d}} +\index{functions.c@{functions.c}!SidetoneOn@{SidetoneOn}} +\index{SidetoneOn@{SidetoneOn}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{SidetoneOn()}{SidetoneOn()}} +{\footnotesize\ttfamily void Sidetone\+On (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Mithörton einschalten. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a859cf4a556750b8aa340761627fb6c42}\label{functions_8c_a859cf4a556750b8aa340761627fb6c42}} +\index{functions.c@{functions.c}!Tone@{Tone}} +\index{Tone@{Tone}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{Tone()}{Tone()}} +{\footnotesize\ttfamily void Tone (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{f, }\item[{uint8\+\_\+t}]{duration }\end{DoxyParamCaption})} + + + +Ausgabe eines Tons mit Dauer und Frequenz. + + +\begin{DoxyParams}{Parameter} +{\em f} & Frequenz des Tons \\ +\hline +{\em duration} & Dauer des Tons \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_aafcd99a76b601d8b43b6827d414ccddb}\label{functions_8c_aafcd99a76b601d8b43b6827d414ccddb}} +\index{functions.c@{functions.c}!TXKey@{TXKey}} +\index{TXKey@{TXKey}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{TXKey()}{TXKey()}} +{\footnotesize\ttfamily void TXKey (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{State }\end{DoxyParamCaption})} + + + +Gibt ein Symbol aus. + +\begin{DoxyVerb} Je nach Einstellung wird ein oder beide Transceiver + getastet oder nur der Mithörton ausgegeben. +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em \mbox{\hyperlink{structState}{State}}} & Bitfeld für Transceiver und Tonausgabe \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a586bc00ad3164def7ec76ac9bda4f1bc}\label{functions_8c_a586bc00ad3164def7ec76ac9bda4f1bc}} +\index{functions.c@{functions.c}!WriteEEprom@{WriteEEprom}} +\index{WriteEEprom@{WriteEEprom}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{WriteEEprom()}{WriteEEprom()}} +{\footnotesize\ttfamily void Write\+EEprom (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Akt. Einstellungen in EEPROM schreiben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8c_a838ffc3ce94fc8c85429e5297a185022}\label{functions_8c_a838ffc3ce94fc8c85429e5297a185022}} +\index{functions.c@{functions.c}!WriteEEpromWpM@{WriteEEpromWpM}} +\index{WriteEEpromWpM@{WriteEEpromWpM}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{WriteEEpromWpM()}{WriteEEpromWpM()}} +{\footnotesize\ttfamily void Write\+EEprom\+WpM (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Akt. Einstellung für die Geschwindigkeit in EEprom schreiben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} + + +\doxysubsection{Variablen-\/\+Dokumentation} +\mbox{\Hypertarget{functions_8c_af46a7ac73709b59ac331e84016c6600f}\label{functions_8c_af46a7ac73709b59ac331e84016c6600f}} +\index{functions.c@{functions.c}!ee\_DebounceTime@{ee\_DebounceTime}} +\index{ee\_DebounceTime@{ee\_DebounceTime}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_DebounceTime}{ee\_DebounceTime}} +{\footnotesize\ttfamily uint8\+\_\+t ee\+\_\+\+Debounce\+Time = 6} + + + +Entprellzeit für Straight Key Eingang. + +\mbox{\Hypertarget{functions_8c_a42f0b8f91ce6b2a23dd6ff8672d13b95}\label{functions_8c_a42f0b8f91ce6b2a23dd6ff8672d13b95}} +\index{functions.c@{functions.c}!ee\_Dummy@{ee\_Dummy}} +\index{ee\_Dummy@{ee\_Dummy}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_Dummy}{ee\_Dummy}} +{\footnotesize\ttfamily uint8\+\_\+t ee\+\_\+\+Dummy = 0x55} + + + +Dummy for Address 0. + +\mbox{\Hypertarget{functions_8c_a169f1099862f2dc874d344eb240fd8c2}\label{functions_8c_a169f1099862f2dc874d344eb240fd8c2}} +\index{functions.c@{functions.c}!ee\_KeyerMode@{ee\_KeyerMode}} +\index{ee\_KeyerMode@{ee\_KeyerMode}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_KeyerMode}{ee\_KeyerMode}} +{\footnotesize\ttfamily uint8\+\_\+t ee\+\_\+\+Keyer\+Mode = 1} + + + +Iambic A, Iambic B oder Ultimatic. + +\mbox{\Hypertarget{functions_8c_a3f1e9ffbb5d98febdd58a4fa82b01f30}\label{functions_8c_a3f1e9ffbb5d98febdd58a4fa82b01f30}} +\index{functions.c@{functions.c}!ee\_MemButtonMode@{ee\_MemButtonMode}} +\index{ee\_MemButtonMode@{ee\_MemButtonMode}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_MemButtonMode}{ee\_MemButtonMode}} +{\footnotesize\ttfamily uint8\+\_\+t ee\+\_\+\+Mem\+Button\+Mode = 0} + + + +Funktion des ersten Tasters (MEM5) + +\mbox{\Hypertarget{functions_8c_a5f69205a6897625598ead5ab6a740fc7}\label{functions_8c_a5f69205a6897625598ead5ab6a740fc7}} +\index{functions.c@{functions.c}!ee\_Memory@{ee\_Memory}} +\index{ee\_Memory@{ee\_Memory}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_Memory}{ee\_Memory}} +{\footnotesize\ttfamily uint8\+\_\+t ee\+\_\+\+Memory = 0} + + + +Punkt/\+Strich Speicher. + +\mbox{\Hypertarget{functions_8c_a8814741a33f0a4f2e14eee14d8c00dad}\label{functions_8c_a8814741a33f0a4f2e14eee14d8c00dad}} +\index{functions.c@{functions.c}!ee\_Ratio@{ee\_Ratio}} +\index{ee\_Ratio@{ee\_Ratio}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_Ratio}{ee\_Ratio}} +{\footnotesize\ttfamily uint8\+\_\+t ee\+\_\+\+Ratio = 30} + + + +Punkt/\+Strich Verhältnis 1\+:3. + +\mbox{\Hypertarget{functions_8c_ad5a1c7f3fe4cc3af1873519f70586866}\label{functions_8c_ad5a1c7f3fe4cc3af1873519f70586866}} +\index{functions.c@{functions.c}!ee\_Reverse@{ee\_Reverse}} +\index{ee\_Reverse@{ee\_Reverse}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_Reverse}{ee\_Reverse}} +{\footnotesize\ttfamily uint8\+\_\+t ee\+\_\+\+Reverse = 0} + + + +linkes/rechtes Paddle vertauschen + +\mbox{\Hypertarget{functions_8c_acde6a28c5a5747443f823ff09dce682b}\label{functions_8c_acde6a28c5a5747443f823ff09dce682b}} +\index{functions.c@{functions.c}!ee\_RiseTime@{ee\_RiseTime}} +\index{ee\_RiseTime@{ee\_RiseTime}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_RiseTime}{ee\_RiseTime}} +{\footnotesize\ttfamily uint8\+\_\+t ee\+\_\+\+Rise\+Time = 5} + + + +Anstiegszeit Sinuston. + +\mbox{\Hypertarget{functions_8c_a138d8a4a73593b01e9ffdfebc7134c89}\label{functions_8c_a138d8a4a73593b01e9ffdfebc7134c89}} +\index{functions.c@{functions.c}!ee\_RiseTimeCounter@{ee\_RiseTimeCounter}} +\index{ee\_RiseTimeCounter@{ee\_RiseTimeCounter}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_RiseTimeCounter}{ee\_RiseTimeCounter}} +{\footnotesize\ttfamily uint8\+\_\+t ee\+\_\+\+Rise\+Time\+Counter = 5} + + + +Anzahl Sinusschwingungen für den Anstieg. + +\mbox{\Hypertarget{functions_8c_a8f9b2a72d7b1d5f1c28673c36a51a33a}\label{functions_8c_a8f9b2a72d7b1d5f1c28673c36a51a33a}} +\index{functions.c@{functions.c}!ee\_SidetoneEnabled@{ee\_SidetoneEnabled}} +\index{ee\_SidetoneEnabled@{ee\_SidetoneEnabled}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_SidetoneEnabled}{ee\_SidetoneEnabled}} +{\footnotesize\ttfamily uint8\+\_\+t ee\+\_\+\+Sidetone\+Enabled = 1} + + + +Mithörton eingeschaltet. + +\mbox{\Hypertarget{functions_8c_a025c31b4a3c9adca80df2782808579a7}\label{functions_8c_a025c31b4a3c9adca80df2782808579a7}} +\index{functions.c@{functions.c}!ee\_SidetoneFreq@{ee\_SidetoneFreq}} +\index{ee\_SidetoneFreq@{ee\_SidetoneFreq}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_SidetoneFreq}{ee\_SidetoneFreq}} +{\footnotesize\ttfamily uint16\+\_\+t ee\+\_\+\+Sidetone\+Freq = 600} + + + +Frequenz des Mithörtons. + +\mbox{\Hypertarget{functions_8c_a1c70858b9aea8006017b70d201604a96}\label{functions_8c_a1c70858b9aea8006017b70d201604a96}} +\index{functions.c@{functions.c}!ee\_Trx1@{ee\_Trx1}} +\index{ee\_Trx1@{ee\_Trx1}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_Trx1}{ee\_Trx1}} +{\footnotesize\ttfamily uint8\+\_\+t ee\+\_\+\+Trx1 = 0} + + + +TRX 1. + +\mbox{\Hypertarget{functions_8c_a6f6cc3866f25698f6f9185e422ce7b8c}\label{functions_8c_a6f6cc3866f25698f6f9185e422ce7b8c}} +\index{functions.c@{functions.c}!ee\_Trx2@{ee\_Trx2}} +\index{ee\_Trx2@{ee\_Trx2}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_Trx2}{ee\_Trx2}} +{\footnotesize\ttfamily uint8\+\_\+t ee\+\_\+\+Trx2 = 0} + + + +TRX 2. + +\mbox{\Hypertarget{functions_8c_ac8f8c751bbe43f711df2e1ba13f79994}\label{functions_8c_ac8f8c751bbe43f711df2e1ba13f79994}} +\index{functions.c@{functions.c}!ee\_Weight@{ee\_Weight}} +\index{ee\_Weight@{ee\_Weight}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_Weight}{ee\_Weight}} +{\footnotesize\ttfamily uint8\+\_\+t ee\+\_\+\+Weight = 50} + + + +Punkt/\+Strich Gewichtung. + +\mbox{\Hypertarget{functions_8c_af636ee63fad94f56f61f334e0c2e46b0}\label{functions_8c_af636ee63fad94f56f61f334e0c2e46b0}} +\index{functions.c@{functions.c}!ee\_WpM@{ee\_WpM}} +\index{ee\_WpM@{ee\_WpM}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_WpM}{ee\_WpM}} +{\footnotesize\ttfamily uint8\+\_\+t ee\+\_\+\+WpM = 12} + + + +Geschwindigkeit WpM. + +\mbox{\Hypertarget{functions_8c_a7c955b77d04539b88678e94d72deeef0}\label{functions_8c_a7c955b77d04539b88678e94d72deeef0}} +\index{functions.c@{functions.c}!ee\_WpMBpM@{ee\_WpMBpM}} +\index{ee\_WpMBpM@{ee\_WpMBpM}!functions.c@{functions.c}} +\doxysubsubsection{\texorpdfstring{ee\_WpMBpM}{ee\_WpMBpM}} +{\footnotesize\ttfamily uint8\+\_\+t ee\+\_\+\+Wp\+MBpM = 0} + + + +WpM oder BpM Anzeige. + diff --git a/Documents/Doxygen/latex/functions_8c__incl.md5 b/Documents/Doxygen/latex/functions_8c__incl.md5 new file mode 100644 index 0000000..c92e30e --- /dev/null +++ b/Documents/Doxygen/latex/functions_8c__incl.md5 @@ -0,0 +1 @@ +22082166f666716f39d38bb78deeae46 \ No newline at end of file diff --git a/Documents/Doxygen/latex/functions_8c__incl.pdf b/Documents/Doxygen/latex/functions_8c__incl.pdf new file mode 100644 index 0000000..12a0422 Binary files /dev/null and b/Documents/Doxygen/latex/functions_8c__incl.pdf differ diff --git a/Documents/Doxygen/latex/functions_8h.tex b/Documents/Doxygen/latex/functions_8h.tex new file mode 100644 index 0000000..1cd1226 --- /dev/null +++ b/Documents/Doxygen/latex/functions_8h.tex @@ -0,0 +1,608 @@ +\hypertarget{functions_8h}{}\doxysection{functions.\+h-\/Dateireferenz} +\label{functions_8h}\index{functions.h@{functions.h}} + + +Headerdatei für \mbox{\hyperlink{functions_8c}{functions.\+c}}. + + +{\ttfamily \#include \char`\"{}main.\+h\char`\"{}}\newline +Include-\/\+Abhängigkeitsdiagramm für functions.\+h\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{functions_8h__incl} +\end{center} +\end{figure} +Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=273pt]{functions_8h__dep__incl} +\end{center} +\end{figure} +\doxysubsection*{Funktionen} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{functions_8h_a2a5677c9c6904f13c1fa4fd1b4bc0fd8}\label{functions_8h_a2a5677c9c6904f13c1fa4fd1b4bc0fd8}} +void {\bfseries Symbol\+Loop} (uint8\+\_\+t Len) +\item +void \mbox{\hyperlink{functions_8h_a9bd61bc3c9e38f6b325e4ba3f96d9472}{Check\+Paddles}} (void) +\begin{DoxyCompactList}\small\item\em Diese Funktion prüft, ob ein Paddle betätigt wurde. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_aa0e063cf32b840a3ed51ae9aa677e2be}{Set\+Ratio}} (void) +\begin{DoxyCompactList}\small\item\em Berechnung der Zeitdauer für Punkt und Strich. \end{DoxyCompactList}\item +\mbox{\Hypertarget{functions_8h_a7a31f60576d112eca1abddf447df8248}\label{functions_8h_a7a31f60576d112eca1abddf447df8248}} +void {\bfseries Set\+Weight} (void) +\item +void \mbox{\hyperlink{functions_8h_a22d2dd23cb17e53e75c7d6366d9205d6}{Send\+Dit}} (void) +\begin{DoxyCompactList}\small\item\em Gibt einen Punkt aus. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_a3dfd0f785e0377a124c423ac5ef8ddde}{Send\+Dah}} (void) +\begin{DoxyCompactList}\small\item\em Gibt einen Strich aus. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_a683e588b64df83d67f1342ed5eeb099b}{Send\+Iambic}} (void) +\begin{DoxyCompactList}\small\item\em Wenn beide Paddle betätigt sind, wird alternierend ein Punkt und Strich ausgegeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_a49e16203823a4921910161bd2610987a}{Send\+Char}} (unsigned char c) +\begin{DoxyCompactList}\small\item\em Gibt ein Zeichen aus. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_a33edcf2aa23f97390659434ead6ef593}{Send\+String}} (char $\ast$s) +\begin{DoxyCompactList}\small\item\em Gibt eine Zeichenkette als Morsecode aus. \end{DoxyCompactList}\item +\mbox{\Hypertarget{functions_8h_ab97cfac63db09807e98220a4b660bba1}\label{functions_8h_ab97cfac63db09807e98220a4b660bba1}} +void {\bfseries Side\+Tone\+On} (void) +\item +\mbox{\Hypertarget{functions_8h_a543d0f249e5b505063a706525f99ff3a}\label{functions_8h_a543d0f249e5b505063a706525f99ff3a}} +void {\bfseries Side\+Tone\+Off} (void) +\item +void \mbox{\hyperlink{functions_8h_a859cf4a556750b8aa340761627fb6c42}{Tone}} (uint16\+\_\+t f, uint8\+\_\+t duration) +\begin{DoxyCompactList}\small\item\em Ausgabe eines Tons mit Dauer und Frequenz. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_a0366eaeb4aab61562dcd5b24994d0103}{Boop}} (void) +\begin{DoxyCompactList}\small\item\em Boop Ton ausgeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_a2f616a93763b4bc437c4311d653c0491}{Beep}} (void) +\begin{DoxyCompactList}\small\item\em Beep Ton ausgeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_a72913eefa74c0c044d815a0b759577fa}{Beep\+Boop}} (void) +\begin{DoxyCompactList}\small\item\em Beep\+Boop Doppelton ausgeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_ae2f4a274ba95c3e94edd58ce6f129de4}{Int\+Disable}} (void) +\begin{DoxyCompactList}\small\item\em Register sichern und Interrupts verbieten. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_ab321d23dfab578b6a40f3c5e8894c280}{Int\+Enable}} (void) +\begin{DoxyCompactList}\small\item\em Register wieder herstellen und Interrupts erlauben. \end{DoxyCompactList}\item +\mbox{\Hypertarget{functions_8h_afeb1aaa538ce3d5ffb072786aed23a55}\label{functions_8h_afeb1aaa538ce3d5ffb072786aed23a55}} +void {\bfseries Disable\+Pin\+Change\+IRQ} (void) +\item +\mbox{\Hypertarget{functions_8h_a002f7b6558d9508ba71e95c8defd3ab4}\label{functions_8h_a002f7b6558d9508ba71e95c8defd3ab4}} +void {\bfseries Enable\+Pin\+Change\+IRQ} (void) +\item +void \mbox{\hyperlink{functions_8h_a586bc00ad3164def7ec76ac9bda4f1bc}{Write\+EEprom}} (void) +\begin{DoxyCompactList}\small\item\em Akt. Einstellungen in EEPROM schreiben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_adf7f3486f66ae3386f330a5172dfdf52}{Read\+EEprom}} (void) +\begin{DoxyCompactList}\small\item\em Einstellungen aus dem EEprom lesen. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_a838ffc3ce94fc8c85429e5297a185022}{Write\+EEprom\+WpM}} (void) +\begin{DoxyCompactList}\small\item\em Akt. Einstellung für die Geschwindigkeit in EEprom schreiben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_a3435bb0409b2c91ab253f4bd4cdc03e1}{Read\+EEprom\+WpM}} (void) +\begin{DoxyCompactList}\small\item\em Gespeicherte Einstellung für die Geschwindigkeit aus EEprom lesen. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_a4e592b116ccf5c55bbb5979bb7193981}{Set\+EEprom}} (void) +\begin{DoxyCompactList}\small\item\em Standardeinstellungen (bei neuem Controller) \end{DoxyCompactList}\item +\mbox{\Hypertarget{functions_8h_ac2bac61999066f61501cd244a237192e}\label{functions_8h_ac2bac61999066f61501cd244a237192e}} +void {\bfseries Serial\+Write\+String} (char $\ast$s) +\item +void \mbox{\hyperlink{functions_8h_a8684d17e55772fc84a10c9e778705eda}{Serial\+Write\+Char}} (unsigned char data) +\begin{DoxyCompactList}\small\item\em Ein Zeichen über serielle Schnittstelle ausgeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_ada3125b546b3115e7afc2e51bc7db894}{Delay\+Milli\+Seconds}} (uint16\+\_\+t ms) +\begin{DoxyCompactList}\small\item\em Zeitschleife von 1-\/65535 Millisekunden. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_a318f7eb176f7797e0166cbd652855a3c}{Reset\+Milli\+Seconds}} (void) +\begin{DoxyCompactList}\small\item\em Setzt den Millisekundenzähler für Zeitschleifen auf 0. \end{DoxyCompactList}\item +uint16\+\_\+t \mbox{\hyperlink{functions_8h_a682e380769f82867a41c13d632bb3cca}{Get\+Milli\+Seconds}} (void) +\begin{DoxyCompactList}\small\item\em Zählerwert für Zeitschleifen auslesen. \end{DoxyCompactList}\item +void \mbox{\hyperlink{functions_8h_adf505a2f38b0bd35e6030c8e9a82ae2a}{Send\+Memory}} (uint8\+\_\+t Button\+Pressed) +\begin{DoxyCompactList}\small\item\em Sendet den Text eines Speichers. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Variablen} +\begin{DoxyCompactItemize} +\item +uint8\+\_\+t \mbox{\hyperlink{functions_8h_a82a35872e59db8f8de1f0e42854355dd}{sreg\+\_\+tmp}} +\begin{DoxyCompactList}\small\item\em Merker für Registerinhalte. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Ausführliche Beschreibung} +Headerdatei für \mbox{\hyperlink{functions_8c}{functions.\+c}}. + + + +\doxysubsection{Dokumentation der Funktionen} +\mbox{\Hypertarget{functions_8h_a2f616a93763b4bc437c4311d653c0491}\label{functions_8h_a2f616a93763b4bc437c4311d653c0491}} +\index{functions.h@{functions.h}!Beep@{Beep}} +\index{Beep@{Beep}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{Beep()}{Beep()}} +{\footnotesize\ttfamily void Beep (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Beep Ton ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_a72913eefa74c0c044d815a0b759577fa}\label{functions_8h_a72913eefa74c0c044d815a0b759577fa}} +\index{functions.h@{functions.h}!BeepBoop@{BeepBoop}} +\index{BeepBoop@{BeepBoop}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{BeepBoop()}{BeepBoop()}} +{\footnotesize\ttfamily void Beep\+Boop (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Beep\+Boop Doppelton ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_a0366eaeb4aab61562dcd5b24994d0103}\label{functions_8h_a0366eaeb4aab61562dcd5b24994d0103}} +\index{functions.h@{functions.h}!Boop@{Boop}} +\index{Boop@{Boop}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{Boop()}{Boop()}} +{\footnotesize\ttfamily void Boop (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Boop Ton ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_a9bd61bc3c9e38f6b325e4ba3f96d9472}\label{functions_8h_a9bd61bc3c9e38f6b325e4ba3f96d9472}} +\index{functions.h@{functions.h}!CheckPaddles@{CheckPaddles}} +\index{CheckPaddles@{CheckPaddles}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{CheckPaddles()}{CheckPaddles()}} +{\footnotesize\ttfamily void Check\+Paddles (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Diese Funktion prüft, ob ein Paddle betätigt wurde. + +\begin{DoxyVerb} Wenn dies der Fall war, ist das jeweilige Statusbit gesetzt + und die Funktion für die Ausgabe des entsprechenden Symbols + wird aufgerufen. +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_ada3125b546b3115e7afc2e51bc7db894}\label{functions_8h_ada3125b546b3115e7afc2e51bc7db894}} +\index{functions.h@{functions.h}!DelayMilliSeconds@{DelayMilliSeconds}} +\index{DelayMilliSeconds@{DelayMilliSeconds}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{DelayMilliSeconds()}{DelayMilliSeconds()}} +{\footnotesize\ttfamily void Delay\+Milli\+Seconds (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{ms }\end{DoxyParamCaption})} + + + +Zeitschleife von 1-\/65535 Millisekunden. + + +\begin{DoxyParams}{Parameter} +{\em ms} & Anzahl Millisekunden \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_a682e380769f82867a41c13d632bb3cca}\label{functions_8h_a682e380769f82867a41c13d632bb3cca}} +\index{functions.h@{functions.h}!GetMilliSeconds@{GetMilliSeconds}} +\index{GetMilliSeconds@{GetMilliSeconds}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{GetMilliSeconds()}{GetMilliSeconds()}} +{\footnotesize\ttfamily uint16\+\_\+t Get\+Milli\+Seconds (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Zählerwert für Zeitschleifen auslesen. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em Millisekunden} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_ae2f4a274ba95c3e94edd58ce6f129de4}\label{functions_8h_ae2f4a274ba95c3e94edd58ce6f129de4}} +\index{functions.h@{functions.h}!IntDisable@{IntDisable}} +\index{IntDisable@{IntDisable}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{IntDisable()}{IntDisable()}} +{\footnotesize\ttfamily void Int\+Disable (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Register sichern und Interrupts verbieten. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_ab321d23dfab578b6a40f3c5e8894c280}\label{functions_8h_ab321d23dfab578b6a40f3c5e8894c280}} +\index{functions.h@{functions.h}!IntEnable@{IntEnable}} +\index{IntEnable@{IntEnable}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{IntEnable()}{IntEnable()}} +{\footnotesize\ttfamily void Int\+Enable (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Register wieder herstellen und Interrupts erlauben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_adf7f3486f66ae3386f330a5172dfdf52}\label{functions_8h_adf7f3486f66ae3386f330a5172dfdf52}} +\index{functions.h@{functions.h}!ReadEEprom@{ReadEEprom}} +\index{ReadEEprom@{ReadEEprom}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{ReadEEprom()}{ReadEEprom()}} +{\footnotesize\ttfamily void Read\+EEprom (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Einstellungen aus dem EEprom lesen. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_a3435bb0409b2c91ab253f4bd4cdc03e1}\label{functions_8h_a3435bb0409b2c91ab253f4bd4cdc03e1}} +\index{functions.h@{functions.h}!ReadEEpromWpM@{ReadEEpromWpM}} +\index{ReadEEpromWpM@{ReadEEpromWpM}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{ReadEEpromWpM()}{ReadEEpromWpM()}} +{\footnotesize\ttfamily void Read\+EEprom\+WpM (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Gespeicherte Einstellung für die Geschwindigkeit aus EEprom lesen. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_a318f7eb176f7797e0166cbd652855a3c}\label{functions_8h_a318f7eb176f7797e0166cbd652855a3c}} +\index{functions.h@{functions.h}!ResetMilliSeconds@{ResetMilliSeconds}} +\index{ResetMilliSeconds@{ResetMilliSeconds}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{ResetMilliSeconds()}{ResetMilliSeconds()}} +{\footnotesize\ttfamily void Reset\+Milli\+Seconds (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Setzt den Millisekundenzähler für Zeitschleifen auf 0. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_a49e16203823a4921910161bd2610987a}\label{functions_8h_a49e16203823a4921910161bd2610987a}} +\index{functions.h@{functions.h}!SendChar@{SendChar}} +\index{SendChar@{SendChar}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{SendChar()}{SendChar()}} +{\footnotesize\ttfamily void Send\+Char (\begin{DoxyParamCaption}\item[{unsigned char}]{c }\end{DoxyParamCaption})} + + + +Gibt ein Zeichen aus. + +\begin{DoxyVerb} Mit dieser Symboltabelle werden die Zeichen + der Textspeicher gesendet +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em c} & Zeichen, das Ausgegeben wird \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_a3dfd0f785e0377a124c423ac5ef8ddde}\label{functions_8h_a3dfd0f785e0377a124c423ac5ef8ddde}} +\index{functions.h@{functions.h}!SendDah@{SendDah}} +\index{SendDah@{SendDah}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{SendDah()}{SendDah()}} +{\footnotesize\ttfamily void Send\+Dah (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Gibt einen Strich aus. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_a22d2dd23cb17e53e75c7d6366d9205d6}\label{functions_8h_a22d2dd23cb17e53e75c7d6366d9205d6}} +\index{functions.h@{functions.h}!SendDit@{SendDit}} +\index{SendDit@{SendDit}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{SendDit()}{SendDit()}} +{\footnotesize\ttfamily void Send\+Dit (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Gibt einen Punkt aus. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_a683e588b64df83d67f1342ed5eeb099b}\label{functions_8h_a683e588b64df83d67f1342ed5eeb099b}} +\index{functions.h@{functions.h}!SendIambic@{SendIambic}} +\index{SendIambic@{SendIambic}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{SendIambic()}{SendIambic()}} +{\footnotesize\ttfamily void Send\+Iambic (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Wenn beide Paddle betätigt sind, wird alternierend ein Punkt und Strich ausgegeben. + +Beim Iambic B Mode und Ultimatic Mode wird gegebenenfalls noch ein gegensätzliches Zeichen des zuletzt betätigten Paddle angefügt. Erläuterung und Timing siehe Dokumentation. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_adf505a2f38b0bd35e6030c8e9a82ae2a}\label{functions_8h_adf505a2f38b0bd35e6030c8e9a82ae2a}} +\index{functions.h@{functions.h}!SendMemory@{SendMemory}} +\index{SendMemory@{SendMemory}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{SendMemory()}{SendMemory()}} +{\footnotesize\ttfamily void Send\+Memory (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{Memory\+Index }\end{DoxyParamCaption})} + + + +Sendet den Text eines Speichers. + + +\begin{DoxyParams}{Parameter} +{\em Nummer} & des Speichers \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Rückgabe} +none +\end{DoxyReturn} +\mbox{\Hypertarget{functions_8h_a33edcf2aa23f97390659434ead6ef593}\label{functions_8h_a33edcf2aa23f97390659434ead6ef593}} +\index{functions.h@{functions.h}!SendString@{SendString}} +\index{SendString@{SendString}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{SendString()}{SendString()}} +{\footnotesize\ttfamily void Send\+String (\begin{DoxyParamCaption}\item[{char $\ast$}]{s }\end{DoxyParamCaption})} + + + +Gibt eine Zeichenkette als Morsecode aus. + +\begin{DoxyVerb} Wenn die Zeichenkette ein Leerzeichen enthält, wird dieses als Pause + zwischen zwei Wörtern interpretiert und eine Pause der Länge von 7 + Dits (in Abhängigkeit der eingestellten Geschwindigkeit) wird eingefügt + Zwischen einzelnen Zeichen wird eine Pause von 3 Dits eingefügt +\end{DoxyVerb} + \begin{DoxyRefDesc}{Noch zu erledigen} +\item[\mbox{\hyperlink{todo__todo000001}{Noch zu erledigen}}]Für die Zeichenausgabe der Textspeicher könnte hier noch die Beachtung des eingestellten Ratios und der Gewichtung zugefügt werden.\end{DoxyRefDesc} + + + +\begin{DoxyParams}{Parameter} +{\em s} & Zeiger auf die Zeichenkette \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_a8684d17e55772fc84a10c9e778705eda}\label{functions_8h_a8684d17e55772fc84a10c9e778705eda}} +\index{functions.h@{functions.h}!SerialWriteChar@{SerialWriteChar}} +\index{SerialWriteChar@{SerialWriteChar}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{SerialWriteChar()}{SerialWriteChar()}} +{\footnotesize\ttfamily void Serial\+Write\+Char (\begin{DoxyParamCaption}\item[{unsigned char}]{data }\end{DoxyParamCaption})} + + + +Ein Zeichen über serielle Schnittstelle ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em data} & Zeichen, das seriell ausgegeben wird \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_a4e592b116ccf5c55bbb5979bb7193981}\label{functions_8h_a4e592b116ccf5c55bbb5979bb7193981}} +\index{functions.h@{functions.h}!SetEEprom@{SetEEprom}} +\index{SetEEprom@{SetEEprom}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{SetEEprom()}{SetEEprom()}} +{\footnotesize\ttfamily void Set\+EEprom (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Standardeinstellungen (bei neuem Controller) + +\begin{DoxyVerb} Wird ein neuer Controller verwendet, gibt es keine + Einstellungswerte im EEprom. Diese Funktion schreibt + die initialen Werte in das EEprom. Wird sehr selten + benötigt ;-) +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_aa0e063cf32b840a3ed51ae9aa677e2be}\label{functions_8h_aa0e063cf32b840a3ed51ae9aa677e2be}} +\index{functions.h@{functions.h}!SetRatio@{SetRatio}} +\index{SetRatio@{SetRatio}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{SetRatio()}{SetRatio()}} +{\footnotesize\ttfamily void Set\+Ratio (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Berechnung der Zeitdauer für Punkt und Strich. + +\begin{DoxyVerb} Die Länge eines Symbols ist abhängig von der + eingestellten Geschwindigkeit. Intern wird immer + mit Wörtern pro Minute gerechnet. Das normale + Punkt/Strich Verhältnis ist 1:3. Dies kann durch + den Parameter Ratio in den Einstellungen verändert + werden. +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_a859cf4a556750b8aa340761627fb6c42}\label{functions_8h_a859cf4a556750b8aa340761627fb6c42}} +\index{functions.h@{functions.h}!Tone@{Tone}} +\index{Tone@{Tone}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{Tone()}{Tone()}} +{\footnotesize\ttfamily void Tone (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{f, }\item[{uint8\+\_\+t}]{duration }\end{DoxyParamCaption})} + + + +Ausgabe eines Tons mit Dauer und Frequenz. + + +\begin{DoxyParams}{Parameter} +{\em f} & Frequenz des Tons \\ +\hline +{\em duration} & Dauer des Tons \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_a586bc00ad3164def7ec76ac9bda4f1bc}\label{functions_8h_a586bc00ad3164def7ec76ac9bda4f1bc}} +\index{functions.h@{functions.h}!WriteEEprom@{WriteEEprom}} +\index{WriteEEprom@{WriteEEprom}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{WriteEEprom()}{WriteEEprom()}} +{\footnotesize\ttfamily void Write\+EEprom (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Akt. Einstellungen in EEPROM schreiben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{functions_8h_a838ffc3ce94fc8c85429e5297a185022}\label{functions_8h_a838ffc3ce94fc8c85429e5297a185022}} +\index{functions.h@{functions.h}!WriteEEpromWpM@{WriteEEpromWpM}} +\index{WriteEEpromWpM@{WriteEEpromWpM}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{WriteEEpromWpM()}{WriteEEpromWpM()}} +{\footnotesize\ttfamily void Write\+EEprom\+WpM (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Akt. Einstellung für die Geschwindigkeit in EEprom schreiben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} + + +\doxysubsection{Variablen-\/\+Dokumentation} +\mbox{\Hypertarget{functions_8h_a82a35872e59db8f8de1f0e42854355dd}\label{functions_8h_a82a35872e59db8f8de1f0e42854355dd}} +\index{functions.h@{functions.h}!sreg\_tmp@{sreg\_tmp}} +\index{sreg\_tmp@{sreg\_tmp}!functions.h@{functions.h}} +\doxysubsubsection{\texorpdfstring{sreg\_tmp}{sreg\_tmp}} +{\footnotesize\ttfamily uint8\+\_\+t sreg\+\_\+tmp} + + + +Merker für Registerinhalte. + diff --git a/Documents/Doxygen/latex/functions_8h__dep__incl.md5 b/Documents/Doxygen/latex/functions_8h__dep__incl.md5 new file mode 100644 index 0000000..b167915 --- /dev/null +++ b/Documents/Doxygen/latex/functions_8h__dep__incl.md5 @@ -0,0 +1 @@ +e2fa4110e6f23730c1f16f509e9a79ba \ No newline at end of file diff --git a/Documents/Doxygen/latex/functions_8h__dep__incl.pdf b/Documents/Doxygen/latex/functions_8h__dep__incl.pdf new file mode 100644 index 0000000..df8781e Binary files /dev/null and b/Documents/Doxygen/latex/functions_8h__dep__incl.pdf differ diff --git a/Documents/Doxygen/latex/functions_8h__incl.md5 b/Documents/Doxygen/latex/functions_8h__incl.md5 new file mode 100644 index 0000000..e6dd877 --- /dev/null +++ b/Documents/Doxygen/latex/functions_8h__incl.md5 @@ -0,0 +1 @@ +2f2f09334f4a375b58e1b58e2fd73593 \ No newline at end of file diff --git a/Documents/Doxygen/latex/functions_8h__incl.pdf b/Documents/Doxygen/latex/functions_8h__incl.pdf new file mode 100644 index 0000000..b5ca175 Binary files /dev/null and b/Documents/Doxygen/latex/functions_8h__incl.pdf differ diff --git a/Documents/Doxygen/latex/globals_8h.tex b/Documents/Doxygen/latex/globals_8h.tex new file mode 100644 index 0000000..fce9702 --- /dev/null +++ b/Documents/Doxygen/latex/globals_8h.tex @@ -0,0 +1,667 @@ +\hypertarget{globals_8h}{}\doxysection{globals.\+h-\/Dateireferenz} +\label{globals_8h}\index{globals.h@{globals.h}} + + +Globale Variablen, Definitionen und Prototypen. + + +{\ttfamily \#include $<$stdlib.\+h$>$}\newline +{\ttfamily \#include $<$stdio.\+h$>$}\newline +{\ttfamily \#include $<$stdint.\+h$>$}\newline +{\ttfamily \#include $<$string.\+h$>$}\newline +{\ttfamily \#include $<$math.\+h$>$}\newline +{\ttfamily \#include $<$inttypes.\+h$>$}\newline +{\ttfamily \#include $<$avr/io.\+h$>$}\newline +{\ttfamily \#include $<$avr/pgmspace.\+h$>$}\newline +{\ttfamily \#include $<$avr/wdt.\+h$>$}\newline +{\ttfamily \#include $<$avr/interrupt.\+h$>$}\newline +{\ttfamily \#include $<$avr/eeprom.\+h$>$}\newline +{\ttfamily \#include $<$util/delay.\+h$>$}\newline +{\ttfamily \#include $<$util/atomic.\+h$>$}\newline +{\ttfamily \#include \char`\"{}oled/i2c.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}oled/lcd.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}oled/font.\+h\char`\"{}}\newline +Include-\/\+Abhängigkeitsdiagramm für globals.\+h\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{globals_8h__incl} +\end{center} +\end{figure} +Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=266pt]{globals_8h__dep__incl} +\end{center} +\end{figure} +\doxysubsection*{Datenstrukturen} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structState}{State}} +\item +struct \mbox{\hyperlink{structMenuCtrl}{Menu\+Ctrl}} +\item +struct \mbox{\hyperlink{structConfig}{Config}} +\item +struct \mbox{\hyperlink{structMessage}{Message}} +\end{DoxyCompactItemize} +\doxysubsection*{Makrodefinitionen} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{globals_8h_a43bafb28b29491ec7f871319b5a3b2f8}\label{globals_8h_a43bafb28b29491ec7f871319b5a3b2f8}} +\#define {\bfseries F\+\_\+\+CPU}~16000000\+UL +\item +\mbox{\Hypertarget{globals_8h_a0fac869d83ac1a584d6c45cf609f5fe7}\label{globals_8h_a0fac869d83ac1a584d6c45cf609f5fe7}} +\#define {\bfseries PRESCALER}~8 +\item +\mbox{\Hypertarget{globals_8h_a89bbee3eaf4759d9c2bb75f2cc463c1c}\label{globals_8h_a89bbee3eaf4759d9c2bb75f2cc463c1c}} +\#define {\bfseries SINEWAVELENGTH}~64 +\item +\mbox{\Hypertarget{globals_8h_a1ff3ba8cf4ac5bd14d4189d600c5d367}\label{globals_8h_a1ff3ba8cf4ac5bd14d4189d600c5d367}} +\#define {\bfseries F\+\_\+\+CPUPRESIN}~(F\+\_\+\+CPU/(PRESCALER$\ast$SINEWAVELENGTH)) +\item +\mbox{\Hypertarget{globals_8h_a6a53a6c94a70cc286e300a0ea8f46ba4}\label{globals_8h_a6a53a6c94a70cc286e300a0ea8f46ba4}} +\#define {\bfseries USART\+\_\+\+BAUDRATE}~9600 +\item +\mbox{\Hypertarget{globals_8h_a0b029ff580b042a27aaac4bd2ec925e2}\label{globals_8h_a0b029ff580b042a27aaac4bd2ec925e2}} +\#define {\bfseries UBRR\+\_\+\+VALUE}~(((F\+\_\+\+CPU/(USART\+\_\+\+BAUDRATE$\ast$16UL)))-\/1) +\item +\mbox{\Hypertarget{globals_8h_ae70baf5399951da1e7ad45a0ed890832}\label{globals_8h_ae70baf5399951da1e7ad45a0ed890832}} +\#define {\bfseries cbi}(sfr, bit)~(\+\_\+\+SFR\+\_\+\+BYTE(sfr) \&= $\sim$\+\_\+\+BV(bit)) +\item +\mbox{\Hypertarget{globals_8h_ac4a5536d9bf092116f88b94797ddc882}\label{globals_8h_ac4a5536d9bf092116f88b94797ddc882}} +\#define {\bfseries sbi}(sfr, bit)~(\+\_\+\+SFR\+\_\+\+BYTE(sfr) $\vert$= \+\_\+\+BV(bit)) +\item +\mbox{\Hypertarget{globals_8h_a2a59d5a77252e56299995f56e137cac6}\label{globals_8h_a2a59d5a77252e56299995f56e137cac6}} +\#define {\bfseries NOINIT}~\+\_\+\+\_\+attribute\+\_\+\+\_\+ ((section (\char`\"{}.noinit\char`\"{}))) +\item +\mbox{\Hypertarget{globals_8h_aa980b5e5e502cf62bdca6c0452b97516}\label{globals_8h_aa980b5e5e502cf62bdca6c0452b97516}} +\#define {\bfseries CALL}~\char`\"{} DL7\+BJ \char`\"{} +\item +\mbox{\Hypertarget{globals_8h_a687ae7445182571cc179ad43ecd329e6}\label{globals_8h_a687ae7445182571cc179ad43ecd329e6}} +\#define {\bfseries PRG}~\char`\"{} BJ-\/Keyer \char`\"{} +\item +\mbox{\Hypertarget{globals_8h_a98ed931f97fef7e06e3ea441d0326c67}\label{globals_8h_a98ed931f97fef7e06e3ea441d0326c67}} +\#define {\bfseries VER}~\char`\"{} V1.\+03 \char`\"{} +\item +\#define \mbox{\hyperlink{globals_8h_aad4a7ebff687dc5228cc3fd4d25067f2}{NOTHING}}~0 +\begin{DoxyCompactList}\small\item\em Keying states. \end{DoxyCompactList}\item +\mbox{\Hypertarget{globals_8h_a518c76a915f90d5175ce01e2007b62be}\label{globals_8h_a518c76a915f90d5175ce01e2007b62be}} +\#define {\bfseries DIT\+\_\+\+DAH\+\_\+\+OFF}~1 +\item +\mbox{\Hypertarget{globals_8h_a2206cbd4be1ac8deb197ce07f11ee3e5}\label{globals_8h_a2206cbd4be1ac8deb197ce07f11ee3e5}} +\#define {\bfseries DAH\+\_\+\+DIT\+\_\+\+OFF}~2 +\item +\mbox{\Hypertarget{globals_8h_a0486f3908c841216f2b7a08d8fde0098}\label{globals_8h_a0486f3908c841216f2b7a08d8fde0098}} +\#define {\bfseries DIT\+\_\+\+DAH\+\_\+\+ON}~3 +\item +\mbox{\Hypertarget{globals_8h_a979c3e4f92443067e0d4844f11a11f47}\label{globals_8h_a979c3e4f92443067e0d4844f11a11f47}} +\#define {\bfseries DAH\+\_\+\+DIT\+\_\+\+ON}~4 +\item +\#define \mbox{\hyperlink{globals_8h_ae5284d1a5b3e5a009614298e3e7730bc}{STRAIGHT}}~0 +\begin{DoxyCompactList}\small\item\em Keyer mode. \end{DoxyCompactList}\item +\mbox{\Hypertarget{globals_8h_ab4856cba3700d9faf68f3c36c38a64d5}\label{globals_8h_ab4856cba3700d9faf68f3c36c38a64d5}} +\#define {\bfseries IAMBIC\+\_\+B}~1 +\item +\mbox{\Hypertarget{globals_8h_a1887a861cea3b6644def420638c0fc98}\label{globals_8h_a1887a861cea3b6644def420638c0fc98}} +\#define {\bfseries IAMBIC\+\_\+A}~2 +\item +\mbox{\Hypertarget{globals_8h_a37afa2db2d5b90d445555f29ed6d44a9}\label{globals_8h_a37afa2db2d5b90d445555f29ed6d44a9}} +\#define {\bfseries ULTIMATIC}~3 +\item +\mbox{\Hypertarget{globals_8h_a21db5f41a6f17da0c82b95cda61b48ff}\label{globals_8h_a21db5f41a6f17da0c82b95cda61b48ff}} +\#define {\bfseries SINGLE\+\_\+\+PADDLE}~4 +\item +\#define \mbox{\hyperlink{globals_8h_a0f491a526845fa7f262309a82a0d7190}{PADDLE\+\_\+\+NORMAL}}~0 +\begin{DoxyCompactList}\small\item\em Paddle Mode. \end{DoxyCompactList}\item +\mbox{\Hypertarget{globals_8h_ab8fe6659548cbcff654c32b32903beab}\label{globals_8h_ab8fe6659548cbcff654c32b32903beab}} +\#define {\bfseries PADDLE\+\_\+\+REVERSE}~1 +\item +\#define \mbox{\hyperlink{globals_8h_a26467aab195715bb21eca2df8d729078}{SENDING\+\_\+\+NOTHING}}~0 +\begin{DoxyCompactList}\small\item\em Sending Mode. \end{DoxyCompactList}\item +\mbox{\Hypertarget{globals_8h_a153dd0d1d330ebe85d5681984b690f19}\label{globals_8h_a153dd0d1d330ebe85d5681984b690f19}} +\#define {\bfseries SENDING\+\_\+\+DIT}~1 +\item +\mbox{\Hypertarget{globals_8h_accfd3eb8f7e07b630344f41ecafc6e79}\label{globals_8h_accfd3eb8f7e07b630344f41ecafc6e79}} +\#define {\bfseries SENDING\+\_\+\+DAH}~2 +\item +\mbox{\Hypertarget{globals_8h_acfc4030c7ccaf6767ce25766c334c07b}\label{globals_8h_acfc4030c7ccaf6767ce25766c334c07b}} +\#define {\bfseries SENDING\+\_\+\+SPC}~3 +\item +\mbox{\Hypertarget{globals_8h_a69c769033e48b3d24d40255e3811a068}\label{globals_8h_a69c769033e48b3d24d40255e3811a068}} +\#define {\bfseries SENDING\+\_\+\+STRAIGHT}~4 +\item +\mbox{\Hypertarget{globals_8h_acbf37f526e50d2774c17f10d8d167532}\label{globals_8h_acbf37f526e50d2774c17f10d8d167532}} +\#define {\bfseries SENDING\+\_\+\+AUTOMATIC}~5 +\item +\#define \mbox{\hyperlink{globals_8h_a0cc6f7717df9fbdc0f33efb88720a639}{AUTO}}~0 +\begin{DoxyCompactList}\small\item\em Sending Type. \end{DoxyCompactList}\item +\mbox{\Hypertarget{globals_8h_accc898f427bcfab8f8554d0683a736de}\label{globals_8h_accc898f427bcfab8f8554d0683a736de}} +\#define {\bfseries MAN}~1 +\item +\#define \mbox{\hyperlink{globals_8h_a8f0a217b99055286939b536efe9516f1}{LEFT\+\_\+\+PADDLE}}~PD2 +\begin{DoxyCompactList}\small\item\em Ports. \end{DoxyCompactList}\item +\mbox{\Hypertarget{globals_8h_a2531fa489a13983ebf61c93e71ec43d5}\label{globals_8h_a2531fa489a13983ebf61c93e71ec43d5}} +\#define {\bfseries RIGHT\+\_\+\+PADDLE}~PD3 +\item +\mbox{\Hypertarget{globals_8h_a7ce37f67d167ed8deb6c5e0e24c213d8}\label{globals_8h_a7ce37f67d167ed8deb6c5e0e24c213d8}} +\#define {\bfseries STRAIGHT\+\_\+\+KEY}~PD4 +\item +\mbox{\Hypertarget{globals_8h_adb6b98f999edb7b4152f2e3f8785406a}\label{globals_8h_adb6b98f999edb7b4152f2e3f8785406a}} +\#define {\bfseries MORSE\+\_\+\+LED}~PC3 +\item +\mbox{\Hypertarget{globals_8h_a5e91fefffdc4ae99555253d521d70d42}\label{globals_8h_a5e91fefffdc4ae99555253d521d70d42}} +\#define {\bfseries MEM1}~PD5 +\item +\mbox{\Hypertarget{globals_8h_af81f3155e333a7c017258f1a69949b0b}\label{globals_8h_af81f3155e333a7c017258f1a69949b0b}} +\#define {\bfseries MEM2}~PD6 +\item +\mbox{\Hypertarget{globals_8h_afbacae6e435d743bef46dfc8369bf7c5}\label{globals_8h_afbacae6e435d743bef46dfc8369bf7c5}} +\#define {\bfseries MEM3}~PD7 +\item +\mbox{\Hypertarget{globals_8h_ab305dee14a45b9899420fb017b6b0838}\label{globals_8h_ab305dee14a45b9899420fb017b6b0838}} +\#define {\bfseries MEM4}~PC0 +\item +\mbox{\Hypertarget{globals_8h_a25a135b8117cdf599cdfe176200df2fa}\label{globals_8h_a25a135b8117cdf599cdfe176200df2fa}} +\#define {\bfseries MEM5}~PB5 +\item +\mbox{\Hypertarget{globals_8h_a23a8a741ec974d3d82de16f4a59af347}\label{globals_8h_a23a8a741ec974d3d82de16f4a59af347}} +\#define {\bfseries TRX1}~PC1 +\item +\mbox{\Hypertarget{globals_8h_a8bf6fec9796ce1a4372b299d2ac6079e}\label{globals_8h_a8bf6fec9796ce1a4372b299d2ac6079e}} +\#define {\bfseries TRX2}~PC2 +\item +\mbox{\Hypertarget{globals_8h_a73ed4be5c2afc6b3c6d872c67f06b27b}\label{globals_8h_a73ed4be5c2afc6b3c6d872c67f06b27b}} +\#define {\bfseries AUDIO}~PB3 +\item +\mbox{\Hypertarget{globals_8h_a9aae0b11edb13ba23962062c6310b48a}\label{globals_8h_a9aae0b11edb13ba23962062c6310b48a}} +\#define {\bfseries AUDIO\+\_\+\+EN}~PB4 +\item +\mbox{\Hypertarget{globals_8h_ab5ffc4751921608954bb7a5687566b2d}\label{globals_8h_ab5ffc4751921608954bb7a5687566b2d}} +\#define {\bfseries SCL}~PC5 +\item +\mbox{\Hypertarget{globals_8h_a6890442e1cc24a0d61597a13576b8727}\label{globals_8h_a6890442e1cc24a0d61597a13576b8727}} +\#define {\bfseries SDA}~PC4 +\item +\mbox{\Hypertarget{globals_8h_ad76d1750a6cdeebd506bfcd6752554d2}\label{globals_8h_ad76d1750a6cdeebd506bfcd6752554d2}} +\#define {\bfseries ON}~1 +\item +\mbox{\Hypertarget{globals_8h_a29e413f6725b2ba32d165ffaa35b01e5}\label{globals_8h_a29e413f6725b2ba32d165ffaa35b01e5}} +\#define {\bfseries OFF}~0 +\item +\mbox{\Hypertarget{globals_8h_a1d71d0c10cdc379fc3a1b2f029d3d9c9}\label{globals_8h_a1d71d0c10cdc379fc3a1b2f029d3d9c9}} +\#define {\bfseries DIT}~1 +\item +\mbox{\Hypertarget{globals_8h_a3e7e891ff7a66fac8cbf2d81c91499a5}\label{globals_8h_a3e7e891ff7a66fac8cbf2d81c91499a5}} +\#define {\bfseries DAH}~0 +\item +\mbox{\Hypertarget{globals_8h_aefdcc3e9dbabb74aeb89ff310722ba51}\label{globals_8h_aefdcc3e9dbabb74aeb89ff310722ba51}} +\#define {\bfseries NO\+\_\+\+KEY\+\_\+\+PRESSED}~0 +\item +\mbox{\Hypertarget{globals_8h_a9e2cfe84dafa1c4834ff619652d9a64c}\label{globals_8h_a9e2cfe84dafa1c4834ff619652d9a64c}} +\#define {\bfseries KEY\+\_\+\+PRESSED\+\_\+\+DEBOUNCE}~1 +\item +\mbox{\Hypertarget{globals_8h_a8386b89daf8ec3a1805554fd95b80a9e}\label{globals_8h_a8386b89daf8ec3a1805554fd95b80a9e}} +\#define {\bfseries KEY\+\_\+\+PRESSED}~2 +\item +\mbox{\Hypertarget{globals_8h_ad54285de16d1e4eb57197272b15527c2}\label{globals_8h_ad54285de16d1e4eb57197272b15527c2}} +\#define {\bfseries M\+\_\+\+TRX1}~1 +\item +\mbox{\Hypertarget{globals_8h_a57235a40744e5ada2d7597832be662f6}\label{globals_8h_a57235a40744e5ada2d7597832be662f6}} +\#define {\bfseries M\+\_\+\+TRX2}~2 +\item +\mbox{\Hypertarget{globals_8h_a84501feff2919521b6051a205eb9467c}\label{globals_8h_a84501feff2919521b6051a205eb9467c}} +\#define {\bfseries M\+\_\+\+TON}~3 +\item +\mbox{\Hypertarget{globals_8h_aa6f3b49681da4d4092468fb4dd1fe3d6}\label{globals_8h_aa6f3b49681da4d4092468fb4dd1fe3d6}} +\#define {\bfseries M\+\_\+\+TON\+\_\+\+FREQ}~4 +\item +\mbox{\Hypertarget{globals_8h_ae27e8d0e9f4019e3317b663153269b59}\label{globals_8h_ae27e8d0e9f4019e3317b663153269b59}} +\#define {\bfseries M\+\_\+\+IAMBICA}~5 +\item +\mbox{\Hypertarget{globals_8h_a799f279139320d58849c9b39873bed97}\label{globals_8h_a799f279139320d58849c9b39873bed97}} +\#define {\bfseries M\+\_\+\+IAMBICB}~6 +\item +\mbox{\Hypertarget{globals_8h_a0ef7a9454ad52abf182e22a751f37e9d}\label{globals_8h_a0ef7a9454ad52abf182e22a751f37e9d}} +\#define {\bfseries M\+\_\+\+ULTIMATIC}~7 +\item +\mbox{\Hypertarget{globals_8h_a0b7f5f1f400522efde7ac959d42e6acb}\label{globals_8h_a0b7f5f1f400522efde7ac959d42e6acb}} +\#define {\bfseries M\+\_\+\+MEMORY}~8 +\item +\mbox{\Hypertarget{globals_8h_afa9ef2159f32ec11b39b7408a90d3cf9}\label{globals_8h_afa9ef2159f32ec11b39b7408a90d3cf9}} +\#define {\bfseries M\+\_\+\+REVERSE}~9 +\item +\mbox{\Hypertarget{globals_8h_a935c2d21e455b9b554384acebcff05b0}\label{globals_8h_a935c2d21e455b9b554384acebcff05b0}} +\#define {\bfseries M\+\_\+\+RATIO}~10 +\item +\mbox{\Hypertarget{globals_8h_a7cf02cee6c492d10d81fa7f8cd9e75d6}\label{globals_8h_a7cf02cee6c492d10d81fa7f8cd9e75d6}} +\#define {\bfseries M\+\_\+\+WEIGHT}~11 +\item +\mbox{\Hypertarget{globals_8h_a3531d6078fac920f06b5d54f073c66c7}\label{globals_8h_a3531d6078fac920f06b5d54f073c66c7}} +\#define {\bfseries M\+\_\+\+WPMBPM}~12 +\item +\mbox{\Hypertarget{globals_8h_a4ffa488bf9e0bec3211bfc7325ad1adc}\label{globals_8h_a4ffa488bf9e0bec3211bfc7325ad1adc}} +\#define {\bfseries M\+\_\+\+MEMBUTTONMODE}~13 +\item +\mbox{\Hypertarget{globals_8h_aac1d2918a98167deeddc74dfb73e0515}\label{globals_8h_aac1d2918a98167deeddc74dfb73e0515}} +\#define {\bfseries M\+\_\+\+RISETIME}~14 +\item +\mbox{\Hypertarget{globals_8h_a80ca77ca3492d1b5046c74dd71f3c0ba}\label{globals_8h_a80ca77ca3492d1b5046c74dd71f3c0ba}} +\#define {\bfseries M\+\_\+\+DEBOUNCE}~15 +\item +\mbox{\Hypertarget{globals_8h_a61819141b0164a35f4d791b0e696721f}\label{globals_8h_a61819141b0164a35f4d791b0e696721f}} +\#define {\bfseries M\+\_\+\+MAX}~15 +\item +\#define \mbox{\hyperlink{globals_8h_ae39a97a19b2e372929dabdc0e3822910}{CLEARLINE}}~\char`\"{} \char`\"{} +\begin{DoxyCompactList}\small\item\em OLED. \end{DoxyCompactList}\item +\mbox{\Hypertarget{globals_8h_a1291f416b069313021b519eea62d5bf1}\label{globals_8h_a1291f416b069313021b519eea62d5bf1}} +\#define {\bfseries NORMAL}~0 +\item +\#define \mbox{\hyperlink{globals_8h_a57332b76331a1bbe1d6807ddbb6d0522}{MSGSIZE}}~60 +\begin{DoxyCompactList}\small\item\em 60 Zeichen für jeden Textspeicher \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Variablen} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{globals_8h_a69df8d53e45e7fceeeca61ebeed0c249}\label{globals_8h_a69df8d53e45e7fceeeca61ebeed0c249}} +uint8\+\_\+t {\bfseries Last\+PINDState} +\item +volatile uint8\+\_\+t \mbox{\hyperlink{globals_8h_a1756e538888c2c722809420489b62a53}{Encoder\+Timer}} +\begin{DoxyCompactList}\small\item\em 10ms Timer for Encoder \end{DoxyCompactList}\item +volatile int8\+\_\+t \mbox{\hyperlink{globals_8h_a426d3fb4cd1535f9e7616df2601f4ddc}{Encoder\+Counter}} +\begin{DoxyCompactList}\small\item\em Vor/\+Rück Zähler. \end{DoxyCompactList}\item +volatile int8\+\_\+t \mbox{\hyperlink{globals_8h_a3a1db669858552a5c21490149c648e12}{Encoder\+Pos}} +\begin{DoxyCompactList}\small\item\em Encoderposition für Wp\+M/\+BpM. \end{DoxyCompactList}\item +volatile int8\+\_\+t \mbox{\hyperlink{globals_8h_a2b61ba3fb70419b8b5151d7216f6ab87}{Encoder\+Pos\+Config}} +\begin{DoxyCompactList}\small\item\em Encoderposition für Einstellungen. \end{DoxyCompactList}\item +volatile int8\+\_\+t \mbox{\hyperlink{globals_8h_a2afbcb36398df196b3205ab28f612edf}{Encoder\+Pos\+Sub\+Config}} +\begin{DoxyCompactList}\small\item\em Encoderposition für Submenues. \end{DoxyCompactList}\item +\mbox{\Hypertarget{globals_8h_a74c15b62456a6a231784b094c888bb24}\label{globals_8h_a74c15b62456a6a231784b094c888bb24}} +uint16\+\_\+t {\bfseries Store\+EEprom\+Timer} +\item +uint8\+\_\+t \mbox{\hyperlink{globals_8h_a28fa6cb1767abefbe9c197700410d946}{WpM}} +\begin{DoxyCompactList}\small\item\em Aktuelle Zeichengeschwindigkeit. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{globals_8h_ad7f78d2aebfab57b15aa5bf6e28d8723}{Paddle\+Mode}} +\begin{DoxyCompactList}\small\item\em Merker für Links / Rechts vertauscht. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{globals_8h_a9a19b6437a6a56a5855dd3488c6428f8}{Keyer\+Mode}} +\begin{DoxyCompactList}\small\item\em Merker für Iambic A, Iambic B oder Ultimatic. \end{DoxyCompactList}\item +\mbox{\Hypertarget{globals_8h_ad1fad28daa019aa1084957dd6e7a808a}\label{globals_8h_ad1fad28daa019aa1084957dd6e7a808a}} +uint8\+\_\+t {\bfseries Key\+TX} +\item +\mbox{\Hypertarget{globals_8h_a5a4807ab81f5583d7c509be8897714a1}\label{globals_8h_a5a4807ab81f5583d7c509be8897714a1}} +volatile uint8\+\_\+t {\bfseries icnt} +\item +\mbox{\Hypertarget{globals_8h_a7f2869abff8463c80351c1a4dda05b0d}\label{globals_8h_a7f2869abff8463c80351c1a4dda05b0d}} +volatile uint8\+\_\+t {\bfseries ocr2a} +\item +volatile uint8\+\_\+t \mbox{\hyperlink{globals_8h_acee5a37cadaac095a39a4ae4d033df7d}{last\+Button}} +\begin{DoxyCompactList}\small\item\em Wert der letzten Buttonabfrage. \end{DoxyCompactList}\item +volatile uint16\+\_\+t \mbox{\hyperlink{globals_8h_a2f7701e9783a70804580512902c10ee7}{Dit\+Millis}} +\begin{DoxyCompactList}\small\item\em Dauer eines Dits. \end{DoxyCompactList}\item +volatile uint16\+\_\+t \mbox{\hyperlink{globals_8h_ad4e6326c3ab1d15391fcc416ff86c436}{Dah\+Millis}} +\begin{DoxyCompactList}\small\item\em Dauer eines Dahs. \end{DoxyCompactList}\item +volatile uint16\+\_\+t \mbox{\hyperlink{globals_8h_a7db74a7792308dd1d7c35be61d5ff9e8}{Spc\+Millis}} +\begin{DoxyCompactList}\small\item\em Dauer einer Pause zwischen den Zeichen. \end{DoxyCompactList}\item +volatile uint8\+\_\+t \mbox{\hyperlink{globals_8h_a39b1d9792105a52be2c2713ecf044a97}{State\+Straight\+Key\+Pressed}} +\begin{DoxyCompactList}\small\item\em Merker für Straight\+Key betätigt. \end{DoxyCompactList}\item +volatile uint8\+\_\+t \mbox{\hyperlink{globals_8h_a0ca92f009021ed55c2f9199cf5bf80c3}{Timer\+Straight\+Key\+Pressed}} +\begin{DoxyCompactList}\small\item\em Timer Variable für Entprellung. \end{DoxyCompactList}\item +volatile uint8\+\_\+t \mbox{\hyperlink{globals_8h_a9684e7a5392d3dc5b8436002c3ce1c85}{State\+Paddle\+Dit\+Key\+Pressed}} +\begin{DoxyCompactList}\small\item\em Merker für Paddle betätigt. \end{DoxyCompactList}\item +volatile uint8\+\_\+t \mbox{\hyperlink{globals_8h_a170fcf4ece2368541f1bcb04a3dd1511}{Timer\+Paddle\+Dit\+Key\+Pressed}} +\begin{DoxyCompactList}\small\item\em Timer Variable für Entprellung. \end{DoxyCompactList}\item +volatile uint8\+\_\+t \mbox{\hyperlink{globals_8h_a92483c848dd64122cc79472ad979f5e5}{State\+Paddle\+Dah\+Key\+Pressed}} +\begin{DoxyCompactList}\small\item\em Merker für Paddle betätigt. \end{DoxyCompactList}\item +volatile uint8\+\_\+t \mbox{\hyperlink{globals_8h_a57e73db78b59b4d79e72189fb0158f7a}{Timer\+Paddle\+Dah\+Key\+Pressed}} +\begin{DoxyCompactList}\small\item\em Timer Variable für Entprellung. \end{DoxyCompactList}\item +volatile uint8\+\_\+t \mbox{\hyperlink{globals_8h_a094f3d15714cd07a3536db03d58cb818}{State\+Button\+Pressed}} +\begin{DoxyCompactList}\small\item\em Merker für Speichertaste betätigt. \end{DoxyCompactList}\item +volatile uint8\+\_\+t \mbox{\hyperlink{globals_8h_a926757eaf37be188fd6e15410d83c953}{Timer\+Button\+Pressed}} +\begin{DoxyCompactList}\small\item\em Timer Variable für Entprellung. \end{DoxyCompactList}\item +volatile uint8\+\_\+t \mbox{\hyperlink{globals_8h_a03249b48d31b6f929b91011f73c3eb56}{State\+Rise\+Time\+Counter}} +\begin{DoxyCompactList}\small\item\em Zähler für Anstieg des Mithörtons. \end{DoxyCompactList}\item +volatile uint8\+\_\+t \mbox{\hyperlink{globals_8h_ab36cf30c9e53f719929eba1f738e4b12}{State\+Rise\+Time}} +\item +uint16\+\_\+t \mbox{\hyperlink{globals_8h_a088c685d08447f6614b3aea76cd94582}{Menu\+Ctrl\+Timer}} +\begin{DoxyCompactList}\small\item\em Diverse Zähler für Timer 0. \end{DoxyCompactList}\item +volatile uint16\+\_\+t \mbox{\hyperlink{globals_8h_a4a4d36a87b010340a12f80300a0c5f76}{t\+\_\+delayms}} +\begin{DoxyCompactList}\small\item\em Timer 0 max. 65535ms, all purpose timer variable. \end{DoxyCompactList}\item +volatile uint16\+\_\+t \mbox{\hyperlink{globals_8h_a8a613665f46a0641e6dc293da130ab23}{t\+\_\+elementlength}} +\begin{DoxyCompactList}\small\item\em Timer 0 max. 65535ms, element length of dit or dah. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Ausführliche Beschreibung} +Globale Variablen, Definitionen und Prototypen. + + + +\doxysubsection{Makro-\/\+Dokumentation} +\mbox{\Hypertarget{globals_8h_a0cc6f7717df9fbdc0f33efb88720a639}\label{globals_8h_a0cc6f7717df9fbdc0f33efb88720a639}} +\index{globals.h@{globals.h}!AUTO@{AUTO}} +\index{AUTO@{AUTO}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{AUTO}{AUTO}} +{\footnotesize\ttfamily \#define AUTO~0} + + + +Sending Type. + +\mbox{\Hypertarget{globals_8h_ae39a97a19b2e372929dabdc0e3822910}\label{globals_8h_ae39a97a19b2e372929dabdc0e3822910}} +\index{globals.h@{globals.h}!CLEARLINE@{CLEARLINE}} +\index{CLEARLINE@{CLEARLINE}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{CLEARLINE}{CLEARLINE}} +{\footnotesize\ttfamily \#define CLEARLINE~\char`\"{} \char`\"{}} + + + +OLED. + +\mbox{\Hypertarget{globals_8h_a8f0a217b99055286939b536efe9516f1}\label{globals_8h_a8f0a217b99055286939b536efe9516f1}} +\index{globals.h@{globals.h}!LEFT\_PADDLE@{LEFT\_PADDLE}} +\index{LEFT\_PADDLE@{LEFT\_PADDLE}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{LEFT\_PADDLE}{LEFT\_PADDLE}} +{\footnotesize\ttfamily \#define LEFT\+\_\+\+PADDLE~PD2} + + + +Ports. + +\mbox{\Hypertarget{globals_8h_a57332b76331a1bbe1d6807ddbb6d0522}\label{globals_8h_a57332b76331a1bbe1d6807ddbb6d0522}} +\index{globals.h@{globals.h}!MSGSIZE@{MSGSIZE}} +\index{MSGSIZE@{MSGSIZE}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{MSGSIZE}{MSGSIZE}} +{\footnotesize\ttfamily \#define MSGSIZE~60} + + + +60 Zeichen für jeden Textspeicher + +\mbox{\Hypertarget{globals_8h_aad4a7ebff687dc5228cc3fd4d25067f2}\label{globals_8h_aad4a7ebff687dc5228cc3fd4d25067f2}} +\index{globals.h@{globals.h}!NOTHING@{NOTHING}} +\index{NOTHING@{NOTHING}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{NOTHING}{NOTHING}} +{\footnotesize\ttfamily \#define NOTHING~0} + + + +Keying states. + +\mbox{\Hypertarget{globals_8h_a0f491a526845fa7f262309a82a0d7190}\label{globals_8h_a0f491a526845fa7f262309a82a0d7190}} +\index{globals.h@{globals.h}!PADDLE\_NORMAL@{PADDLE\_NORMAL}} +\index{PADDLE\_NORMAL@{PADDLE\_NORMAL}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{PADDLE\_NORMAL}{PADDLE\_NORMAL}} +{\footnotesize\ttfamily \#define PADDLE\+\_\+\+NORMAL~0} + + + +Paddle Mode. + +\mbox{\Hypertarget{globals_8h_a26467aab195715bb21eca2df8d729078}\label{globals_8h_a26467aab195715bb21eca2df8d729078}} +\index{globals.h@{globals.h}!SENDING\_NOTHING@{SENDING\_NOTHING}} +\index{SENDING\_NOTHING@{SENDING\_NOTHING}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{SENDING\_NOTHING}{SENDING\_NOTHING}} +{\footnotesize\ttfamily \#define SENDING\+\_\+\+NOTHING~0} + + + +Sending Mode. + +\mbox{\Hypertarget{globals_8h_ae5284d1a5b3e5a009614298e3e7730bc}\label{globals_8h_ae5284d1a5b3e5a009614298e3e7730bc}} +\index{globals.h@{globals.h}!STRAIGHT@{STRAIGHT}} +\index{STRAIGHT@{STRAIGHT}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{STRAIGHT}{STRAIGHT}} +{\footnotesize\ttfamily \#define STRAIGHT~0} + + + +Keyer mode. + + + +\doxysubsection{Variablen-\/\+Dokumentation} +\mbox{\Hypertarget{globals_8h_ad4e6326c3ab1d15391fcc416ff86c436}\label{globals_8h_ad4e6326c3ab1d15391fcc416ff86c436}} +\index{globals.h@{globals.h}!DahMillis@{DahMillis}} +\index{DahMillis@{DahMillis}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{DahMillis}{DahMillis}} +{\footnotesize\ttfamily volatile uint16\+\_\+t Dah\+Millis} + + + +Dauer eines Dahs. + +\mbox{\Hypertarget{globals_8h_a2f7701e9783a70804580512902c10ee7}\label{globals_8h_a2f7701e9783a70804580512902c10ee7}} +\index{globals.h@{globals.h}!DitMillis@{DitMillis}} +\index{DitMillis@{DitMillis}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{DitMillis}{DitMillis}} +{\footnotesize\ttfamily volatile uint16\+\_\+t Dit\+Millis} + + + +Dauer eines Dits. + +\mbox{\Hypertarget{globals_8h_a426d3fb4cd1535f9e7616df2601f4ddc}\label{globals_8h_a426d3fb4cd1535f9e7616df2601f4ddc}} +\index{globals.h@{globals.h}!EncoderCounter@{EncoderCounter}} +\index{EncoderCounter@{EncoderCounter}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{EncoderCounter}{EncoderCounter}} +{\footnotesize\ttfamily volatile int8\+\_\+t Encoder\+Counter} + + + +Vor/\+Rück Zähler. + +\mbox{\Hypertarget{globals_8h_a3a1db669858552a5c21490149c648e12}\label{globals_8h_a3a1db669858552a5c21490149c648e12}} +\index{globals.h@{globals.h}!EncoderPos@{EncoderPos}} +\index{EncoderPos@{EncoderPos}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{EncoderPos}{EncoderPos}} +{\footnotesize\ttfamily volatile int8\+\_\+t Encoder\+Pos} + + + +Encoderposition für Wp\+M/\+BpM. + +\mbox{\Hypertarget{globals_8h_a2b61ba3fb70419b8b5151d7216f6ab87}\label{globals_8h_a2b61ba3fb70419b8b5151d7216f6ab87}} +\index{globals.h@{globals.h}!EncoderPosConfig@{EncoderPosConfig}} +\index{EncoderPosConfig@{EncoderPosConfig}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{EncoderPosConfig}{EncoderPosConfig}} +{\footnotesize\ttfamily volatile int8\+\_\+t Encoder\+Pos\+Config} + + + +Encoderposition für Einstellungen. + +\mbox{\Hypertarget{globals_8h_a2afbcb36398df196b3205ab28f612edf}\label{globals_8h_a2afbcb36398df196b3205ab28f612edf}} +\index{globals.h@{globals.h}!EncoderPosSubConfig@{EncoderPosSubConfig}} +\index{EncoderPosSubConfig@{EncoderPosSubConfig}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{EncoderPosSubConfig}{EncoderPosSubConfig}} +{\footnotesize\ttfamily volatile int8\+\_\+t Encoder\+Pos\+Sub\+Config} + + + +Encoderposition für Submenues. + +\mbox{\Hypertarget{globals_8h_a1756e538888c2c722809420489b62a53}\label{globals_8h_a1756e538888c2c722809420489b62a53}} +\index{globals.h@{globals.h}!EncoderTimer@{EncoderTimer}} +\index{EncoderTimer@{EncoderTimer}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{EncoderTimer}{EncoderTimer}} +{\footnotesize\ttfamily volatile uint8\+\_\+t Encoder\+Timer} + + + +10ms Timer for Encoder + +\mbox{\Hypertarget{globals_8h_a9a19b6437a6a56a5855dd3488c6428f8}\label{globals_8h_a9a19b6437a6a56a5855dd3488c6428f8}} +\index{globals.h@{globals.h}!KeyerMode@{KeyerMode}} +\index{KeyerMode@{KeyerMode}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{KeyerMode}{KeyerMode}} +{\footnotesize\ttfamily uint8\+\_\+t Keyer\+Mode} + + + +Merker für Iambic A, Iambic B oder Ultimatic. + +\mbox{\Hypertarget{globals_8h_acee5a37cadaac095a39a4ae4d033df7d}\label{globals_8h_acee5a37cadaac095a39a4ae4d033df7d}} +\index{globals.h@{globals.h}!lastButton@{lastButton}} +\index{lastButton@{lastButton}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{lastButton}{lastButton}} +{\footnotesize\ttfamily volatile uint8\+\_\+t last\+Button} + + + +Wert der letzten Buttonabfrage. + +\mbox{\Hypertarget{globals_8h_a088c685d08447f6614b3aea76cd94582}\label{globals_8h_a088c685d08447f6614b3aea76cd94582}} +\index{globals.h@{globals.h}!MenuCtrlTimer@{MenuCtrlTimer}} +\index{MenuCtrlTimer@{MenuCtrlTimer}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{MenuCtrlTimer}{MenuCtrlTimer}} +{\footnotesize\ttfamily uint16\+\_\+t Menu\+Ctrl\+Timer} + + + +Diverse Zähler für Timer 0. + +Wartezeit bis zur Betriebsanzeige nach \mbox{\hyperlink{structConfig}{Config}} \mbox{\Hypertarget{globals_8h_ad7f78d2aebfab57b15aa5bf6e28d8723}\label{globals_8h_ad7f78d2aebfab57b15aa5bf6e28d8723}} +\index{globals.h@{globals.h}!PaddleMode@{PaddleMode}} +\index{PaddleMode@{PaddleMode}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{PaddleMode}{PaddleMode}} +{\footnotesize\ttfamily uint8\+\_\+t Paddle\+Mode} + + + +Merker für Links / Rechts vertauscht. + +\mbox{\Hypertarget{globals_8h_a7db74a7792308dd1d7c35be61d5ff9e8}\label{globals_8h_a7db74a7792308dd1d7c35be61d5ff9e8}} +\index{globals.h@{globals.h}!SpcMillis@{SpcMillis}} +\index{SpcMillis@{SpcMillis}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{SpcMillis}{SpcMillis}} +{\footnotesize\ttfamily volatile uint16\+\_\+t Spc\+Millis} + + + +Dauer einer Pause zwischen den Zeichen. + +\mbox{\Hypertarget{globals_8h_a094f3d15714cd07a3536db03d58cb818}\label{globals_8h_a094f3d15714cd07a3536db03d58cb818}} +\index{globals.h@{globals.h}!StateButtonPressed@{StateButtonPressed}} +\index{StateButtonPressed@{StateButtonPressed}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{StateButtonPressed}{StateButtonPressed}} +{\footnotesize\ttfamily volatile uint8\+\_\+t State\+Button\+Pressed} + + + +Merker für Speichertaste betätigt. + +\mbox{\Hypertarget{globals_8h_a92483c848dd64122cc79472ad979f5e5}\label{globals_8h_a92483c848dd64122cc79472ad979f5e5}} +\index{globals.h@{globals.h}!StatePaddleDahKeyPressed@{StatePaddleDahKeyPressed}} +\index{StatePaddleDahKeyPressed@{StatePaddleDahKeyPressed}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{StatePaddleDahKeyPressed}{StatePaddleDahKeyPressed}} +{\footnotesize\ttfamily volatile uint8\+\_\+t State\+Paddle\+Dah\+Key\+Pressed} + + + +Merker für Paddle betätigt. + +\mbox{\Hypertarget{globals_8h_a9684e7a5392d3dc5b8436002c3ce1c85}\label{globals_8h_a9684e7a5392d3dc5b8436002c3ce1c85}} +\index{globals.h@{globals.h}!StatePaddleDitKeyPressed@{StatePaddleDitKeyPressed}} +\index{StatePaddleDitKeyPressed@{StatePaddleDitKeyPressed}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{StatePaddleDitKeyPressed}{StatePaddleDitKeyPressed}} +{\footnotesize\ttfamily volatile uint8\+\_\+t State\+Paddle\+Dit\+Key\+Pressed} + + + +Merker für Paddle betätigt. + +\mbox{\Hypertarget{globals_8h_ab36cf30c9e53f719929eba1f738e4b12}\label{globals_8h_ab36cf30c9e53f719929eba1f738e4b12}} +\index{globals.h@{globals.h}!StateRiseTime@{StateRiseTime}} +\index{StateRiseTime@{StateRiseTime}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{StateRiseTime}{StateRiseTime}} +{\footnotesize\ttfamily volatile uint8\+\_\+t State\+Rise\+Time} + +Timer für Anstieg des Mithörtons \mbox{\Hypertarget{globals_8h_a03249b48d31b6f929b91011f73c3eb56}\label{globals_8h_a03249b48d31b6f929b91011f73c3eb56}} +\index{globals.h@{globals.h}!StateRiseTimeCounter@{StateRiseTimeCounter}} +\index{StateRiseTimeCounter@{StateRiseTimeCounter}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{StateRiseTimeCounter}{StateRiseTimeCounter}} +{\footnotesize\ttfamily volatile uint8\+\_\+t State\+Rise\+Time\+Counter} + + + +Zähler für Anstieg des Mithörtons. + +\mbox{\Hypertarget{globals_8h_a39b1d9792105a52be2c2713ecf044a97}\label{globals_8h_a39b1d9792105a52be2c2713ecf044a97}} +\index{globals.h@{globals.h}!StateStraightKeyPressed@{StateStraightKeyPressed}} +\index{StateStraightKeyPressed@{StateStraightKeyPressed}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{StateStraightKeyPressed}{StateStraightKeyPressed}} +{\footnotesize\ttfamily volatile uint8\+\_\+t State\+Straight\+Key\+Pressed} + + + +Merker für Straight\+Key betätigt. + +\mbox{\Hypertarget{globals_8h_a4a4d36a87b010340a12f80300a0c5f76}\label{globals_8h_a4a4d36a87b010340a12f80300a0c5f76}} +\index{globals.h@{globals.h}!t\_delayms@{t\_delayms}} +\index{t\_delayms@{t\_delayms}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{t\_delayms}{t\_delayms}} +{\footnotesize\ttfamily volatile uint16\+\_\+t t\+\_\+delayms} + + + +Timer 0 max. 65535ms, all purpose timer variable. + +\mbox{\Hypertarget{globals_8h_a8a613665f46a0641e6dc293da130ab23}\label{globals_8h_a8a613665f46a0641e6dc293da130ab23}} +\index{globals.h@{globals.h}!t\_elementlength@{t\_elementlength}} +\index{t\_elementlength@{t\_elementlength}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{t\_elementlength}{t\_elementlength}} +{\footnotesize\ttfamily volatile uint16\+\_\+t t\+\_\+elementlength} + + + +Timer 0 max. 65535ms, element length of dit or dah. + +\mbox{\Hypertarget{globals_8h_a926757eaf37be188fd6e15410d83c953}\label{globals_8h_a926757eaf37be188fd6e15410d83c953}} +\index{globals.h@{globals.h}!TimerButtonPressed@{TimerButtonPressed}} +\index{TimerButtonPressed@{TimerButtonPressed}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{TimerButtonPressed}{TimerButtonPressed}} +{\footnotesize\ttfamily volatile uint8\+\_\+t Timer\+Button\+Pressed} + + + +Timer Variable für Entprellung. + +\mbox{\Hypertarget{globals_8h_a57e73db78b59b4d79e72189fb0158f7a}\label{globals_8h_a57e73db78b59b4d79e72189fb0158f7a}} +\index{globals.h@{globals.h}!TimerPaddleDahKeyPressed@{TimerPaddleDahKeyPressed}} +\index{TimerPaddleDahKeyPressed@{TimerPaddleDahKeyPressed}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{TimerPaddleDahKeyPressed}{TimerPaddleDahKeyPressed}} +{\footnotesize\ttfamily volatile uint8\+\_\+t Timer\+Paddle\+Dah\+Key\+Pressed} + + + +Timer Variable für Entprellung. + +\mbox{\Hypertarget{globals_8h_a170fcf4ece2368541f1bcb04a3dd1511}\label{globals_8h_a170fcf4ece2368541f1bcb04a3dd1511}} +\index{globals.h@{globals.h}!TimerPaddleDitKeyPressed@{TimerPaddleDitKeyPressed}} +\index{TimerPaddleDitKeyPressed@{TimerPaddleDitKeyPressed}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{TimerPaddleDitKeyPressed}{TimerPaddleDitKeyPressed}} +{\footnotesize\ttfamily volatile uint8\+\_\+t Timer\+Paddle\+Dit\+Key\+Pressed} + + + +Timer Variable für Entprellung. + +\mbox{\Hypertarget{globals_8h_a0ca92f009021ed55c2f9199cf5bf80c3}\label{globals_8h_a0ca92f009021ed55c2f9199cf5bf80c3}} +\index{globals.h@{globals.h}!TimerStraightKeyPressed@{TimerStraightKeyPressed}} +\index{TimerStraightKeyPressed@{TimerStraightKeyPressed}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{TimerStraightKeyPressed}{TimerStraightKeyPressed}} +{\footnotesize\ttfamily volatile uint8\+\_\+t Timer\+Straight\+Key\+Pressed} + + + +Timer Variable für Entprellung. + +\mbox{\Hypertarget{globals_8h_a28fa6cb1767abefbe9c197700410d946}\label{globals_8h_a28fa6cb1767abefbe9c197700410d946}} +\index{globals.h@{globals.h}!WpM@{WpM}} +\index{WpM@{WpM}!globals.h@{globals.h}} +\doxysubsubsection{\texorpdfstring{WpM}{WpM}} +{\footnotesize\ttfamily uint8\+\_\+t WpM} + + + +Aktuelle Zeichengeschwindigkeit. + diff --git a/Documents/Doxygen/latex/globals_8h__dep__incl.md5 b/Documents/Doxygen/latex/globals_8h__dep__incl.md5 new file mode 100644 index 0000000..6676cde --- /dev/null +++ b/Documents/Doxygen/latex/globals_8h__dep__incl.md5 @@ -0,0 +1 @@ +ef44f8dd17b897a1e2c3a0bc322fed9d \ No newline at end of file diff --git a/Documents/Doxygen/latex/globals_8h__dep__incl.pdf b/Documents/Doxygen/latex/globals_8h__dep__incl.pdf new file mode 100644 index 0000000..8040c46 Binary files /dev/null and b/Documents/Doxygen/latex/globals_8h__dep__incl.pdf differ diff --git a/Documents/Doxygen/latex/globals_8h__incl.md5 b/Documents/Doxygen/latex/globals_8h__incl.md5 new file mode 100644 index 0000000..6214d88 --- /dev/null +++ b/Documents/Doxygen/latex/globals_8h__incl.md5 @@ -0,0 +1 @@ +45ea71ec71276993456530eb6c806d16 \ No newline at end of file diff --git a/Documents/Doxygen/latex/globals_8h__incl.pdf b/Documents/Doxygen/latex/globals_8h__incl.pdf new file mode 100644 index 0000000..d47b717 Binary files /dev/null and b/Documents/Doxygen/latex/globals_8h__incl.pdf differ diff --git a/Documents/Doxygen/latex/longtable_doxygen.sty b/Documents/Doxygen/latex/longtable_doxygen.sty new file mode 100644 index 0000000..a0eb314 --- /dev/null +++ b/Documents/Doxygen/latex/longtable_doxygen.sty @@ -0,0 +1,448 @@ +%% +%% This is file `longtable.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% longtable.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% The source is maintained by the LaTeX Project team and bug +%% reports for it can be opened at http://latex-project.org/bugs.html +%% (but please observe conditions on bug reports sent to that address!) +%% +%% Copyright 1993-2016 +%% The LaTeX3 Project and any individual authors listed elsewhere +%% in this file. +%% +%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'. +%% -------------------------------------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle' +%% without such generated files. +%% +%% The list of all files belonging to the LaTeX `Tools Bundle' is +%% given in the file `manifest.txt'. +%% +%% File: longtable.dtx Copyright (C) 1990-2001 David Carlisle +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{longtable_doxygen} + [2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen] +\def\LT@err{\PackageError{longtable}} +\def\LT@warn{\PackageWarning{longtable}} +\def\LT@final@warn{% + \AtEndDocument{% + \LT@warn{Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}% + \global\let\LT@final@warn\relax} +\DeclareOption{errorshow}{% + \def\LT@warn{\PackageInfo{longtable}}} +\DeclareOption{pausing}{% + \def\LT@warn#1{% + \LT@err{#1}{This is not really an error}}} +\DeclareOption{set}{} +\DeclareOption{final}{} +\ProcessOptions +\newskip\LTleft \LTleft=\fill +\newskip\LTright \LTright=\fill +\newskip\LTpre \LTpre=\bigskipamount +\newskip\LTpost \LTpost=\bigskipamount +\newcount\LTchunksize \LTchunksize=20 +\let\c@LTchunksize\LTchunksize +\newdimen\LTcapwidth \LTcapwidth=4in +\newbox\LT@head +\newbox\LT@firsthead +\newbox\LT@foot +\newbox\LT@lastfoot +\newcount\LT@cols +\newcount\LT@rows +\newcounter{LT@tables} +\newcounter{LT@chunks}[LT@tables] +\ifx\c@table\undefined + \newcounter{table} + \def\fnum@table{\tablename~\thetable} +\fi +\ifx\tablename\undefined + \def\tablename{Table} +\fi +\newtoks\LT@p@ftn +\mathchardef\LT@end@pen=30000 +\def\longtable{% + \par + \ifx\multicols\@undefined + \else + \ifnum\col@number>\@ne + \@twocolumntrue + \fi + \fi + \if@twocolumn + \LT@err{longtable not in 1-column mode}\@ehc + \fi + \begingroup + \@ifnextchar[\LT@array{\LT@array[x]}} +\def\LT@array[#1]#2{% + \refstepcounter{table}\stepcounter{LT@tables}% + \if l#1% + \LTleft\z@ \LTright\fill + \else\if r#1% + \LTleft\fill \LTright\z@ + \else\if c#1% + \LTleft\fill \LTright\fill + \fi\fi\fi + \let\LT@mcol\multicolumn + \let\LT@@tabarray\@tabarray + \let\LT@@hl\hline + \def\@tabarray{% + \let\hline\LT@@hl + \LT@@tabarray}% + \let\\\LT@tabularcr\let\tabularnewline\\% + \def\newpage{\noalign{\break}}% + \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% + \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% + \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption + \@tempdima\ht\strutbox + \let\@endpbox\LT@endpbox + \ifx\extrarowheight\@undefined + \let\@acol\@tabacol + \let\@classz\@tabclassz \let\@classiv\@tabclassiv + \def\@startpbox{\vtop\LT@startpbox}% + \let\@@startpbox\@startpbox + \let\@@endpbox\@endpbox + \let\LT@LL@FM@cr\@tabularcr + \else + \advance\@tempdima\extrarowheight + \col@sep\tabcolsep + \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr + \fi + \setbox\@arstrutbox\hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% + \let\@sharp##\let\protect\relax + \begingroup + \@mkpream{#2}% + \xdef\LT@bchunk{% + \global\advance\c@LT@chunks\@ne + \global\LT@rows\z@\setbox\z@\vbox\bgroup + \LT@setprevdepth + \tabskip\LTleft \noexpand\halign to\hsize\bgroup + \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}% + \endgroup + \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols + \LT@make@row + \m@th\let\par\@empty + \everycr{}\lineskip\z@\baselineskip\z@ + \LT@bchunk} +\def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}} +\def\LT@start{% + \let\LT@start\endgraf + \endgraf\penalty\z@\vskip\LTpre + \dimen@\pagetotal + \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \ht\LT@foot + \dimen@ii\vfuzz + \vfuzz\maxdimen + \setbox\tw@\copy\z@ + \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox + \setbox\tw@\vbox{\unvbox\tw@}% + \vfuzz\dimen@ii + \advance\dimen@ \ht + \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@\dp + \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@ -\pagegoal + \ifdim \dimen@>\z@\vfil\break\fi + \global\@colroom\@colht + \ifvoid\LT@foot\else + \advance\vsize-\ht\LT@foot + \global\advance\@colroom-\ht\LT@foot + \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@ + \maxdepth\z@ + \fi + \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak + \output{\LT@output}} +\def\endlongtable{% + \crcr + \noalign{% + \let\LT@entry\LT@entry@chop + \xdef\LT@save@row{\LT@save@row}}% + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \if@filesw + {\let\LT@entry\LT@entry@write\immediate\write\@auxout{% + \gdef\expandafter\noexpand + \csname LT@\romannumeral\c@LT@tables\endcsname + {\LT@save@row}}}% + \fi + \ifx\LT@save@row\LT@@save@row + \else + \LT@warn{Column \@width s have changed\MessageBreak + in table \thetable}% + \LT@final@warn + \fi + \endgraf\penalty -\LT@end@pen + \endgroup + \global\@mparbottom\z@ + \pagegoal\vsize + \endgraf\penalty\z@\addvspace\LTpost + \ifvoid\footins\else\insert\footins{}\fi} +\def\LT@nofcols#1&{% + \futurelet\@let@token\LT@n@fcols} +\def\LT@n@fcols{% + \advance\LT@cols\@ne + \ifx\@let@token\LT@nofcols + \expandafter\@gobble + \else + \expandafter\LT@nofcols + \fi} +\def\LT@tabularcr{% + \relax\iffalse{\fi\ifnum0=`}\fi + \@ifstar + {\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr + \LT@t@bularcr}% + {\LT@t@bularcr}} +\let\LT@crcr\crcr +\let\LT@setprevdepth\relax +\def\LT@t@bularcr{% + \global\advance\LT@rows\@ne + \ifnum\LT@rows=\LTchunksize + \gdef\LT@setprevdepth{% + \prevdepth\z@\global + \global\let\LT@setprevdepth\relax}% + \expandafter\LT@xtabularcr + \else + \ifnum0=`{}\fi + \expandafter\LT@LL@FM@cr + \fi} +\def\LT@xtabularcr{% + \@ifnextchar[\LT@argtabularcr\LT@ntabularcr} +\def\LT@ntabularcr{% + \ifnum0=`{}\fi + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \LT@bchunk} +\def\LT@argtabularcr[#1]{% + \ifnum0=`{}\fi + \ifdim #1>\z@ + \unskip\@xargarraycr{#1}% + \else + \@yargarraycr{#1}% + \fi + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \LT@bchunk} +\def\LT@echunk{% + \crcr\LT@save@row\cr\egroup + \global\setbox\@ne\lastbox + \unskip + \egroup} +\def\LT@entry#1#2{% + \ifhmode\@firstofone{&}\fi\omit + \ifnum#1=\c@LT@chunks + \else + \kern#2\relax + \fi} +\def\LT@entry@chop#1#2{% + \noexpand\LT@entry + {\ifnum#1>\c@LT@chunks + 1}{0pt% + \else + #1}{#2% + \fi}} +\def\LT@entry@write{% + \noexpand\LT@entry^^J% + \@spaces} +\def\LT@kill{% + \LT@echunk + \LT@get@widths + \expandafter\LT@rebox\LT@bchunk} +\def\LT@rebox#1\bgroup{% + #1\bgroup + \unvbox\z@ + \unskip + \setbox\z@\lastbox} +\def\LT@blank@row{% + \xdef\LT@save@row{\expandafter\LT@build@blank + \romannumeral\number\LT@cols 001 }} +\def\LT@build@blank#1{% + \if#1m% + \noexpand\LT@entry{1}{0pt}% + \expandafter\LT@build@blank + \fi} +\def\LT@make@row{% + \global\expandafter\let\expandafter\LT@save@row + \csname LT@\romannumeral\c@LT@tables\endcsname + \ifx\LT@save@row\relax + \LT@blank@row + \else + {\let\LT@entry\or + \if!% + \ifcase\expandafter\expandafter\expandafter\LT@cols + \expandafter\@gobble\LT@save@row + \or + \else + \relax + \fi + !% + \else + \aftergroup\LT@blank@row + \fi}% + \fi} +\let\setlongtables\relax +\def\LT@get@widths{% + \setbox\tw@\hbox{% + \unhbox\@ne + \let\LT@old@row\LT@save@row + \global\let\LT@save@row\@empty + \count@\LT@cols + \loop + \unskip + \setbox\tw@\lastbox + \ifhbox\tw@ + \LT@def@row + \advance\count@\m@ne + \repeat}% + \ifx\LT@@save@row\@undefined + \let\LT@@save@row\LT@save@row + \fi} +\def\LT@def@row{% + \let\LT@entry\or + \edef\@tempa{% + \ifcase\expandafter\count@\LT@old@row + \else + {1}{0pt}% + \fi}% + \let\LT@entry\relax + \xdef\LT@save@row{% + \LT@entry + \expandafter\LT@max@sel\@tempa + \LT@save@row}} +\def\LT@max@sel#1#2{% + {\ifdim#2=\wd\tw@ + #1% + \else + \number\c@LT@chunks + \fi}% + {\the\wd\tw@}} +\def\LT@hline{% + \noalign{\ifnum0=`}\fi + \penalty\@M + \futurelet\@let@token\LT@@hline} +\def\LT@@hline{% + \ifx\@let@token\hline + \global\let\@gtempa\@gobble + \gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}% + \else + \global\let\@gtempa\@empty + \gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}% + \fi + \ifnum0=`{\fi}% + \multispan\LT@cols + \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr + \noalign{\LT@sep}% + \multispan\LT@cols + \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr + \noalign{\penalty\@M}% + \@gtempa} +\def\LT@caption{% + \noalign\bgroup + \@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n} +\def\LT@c@ption#1[#2]#3{% + \LT@makecaption#1\fnum@table{#3}% + \def\@tempa{#2}% + \ifx\@tempa\@empty\else + {\let\\\space + \addcontentsline{lot}{table}{\protect\numberline{\thetable}{#2}}}% + \fi} +\def\LT@capti@n{% + \@ifstar + {\egroup\LT@c@ption\@gobble[]}% + {\egroup\@xdblarg{\LT@c@ption\@firstofone}}} +\def\LT@makecaption#1#2#3{% + \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{% + \sbox\@tempboxa{#1{#2: }#3}% + \ifdim\wd\@tempboxa>\hsize + #1{#2: }#3% + \else + \hbox to\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \endgraf\vskip\baselineskip}% + \hss}}} +\def\LT@output{% + \ifnum\outputpenalty <-\@Mi + \ifnum\outputpenalty > -\LT@end@pen + \LT@err{floats and marginpars not allowed in a longtable}\@ehc + \else + \setbox\z@\vbox{\unvbox\@cclv}% + \ifdim \ht\LT@lastfoot>\ht\LT@foot + \dimen@\pagegoal + \advance\dimen@-\ht\LT@lastfoot + \ifdim\dimen@<\ht\z@ + \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}% + \@makecol + \@outputpage + \setbox\z@\vbox{\box\LT@head}% + \fi + \fi + \global\@colroom\@colht + \global\vsize\@colht + \vbox + {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}% + \fi + \else + \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}% + \@makecol + \@outputpage + \global\vsize\@colroom + \copy\LT@head\nobreak + \fi} +\def\LT@end@hd@ft#1{% + \LT@echunk + \ifx\LT@start\endgraf + \LT@err + {Longtable head or foot not at start of table}% + {Increase LTchunksize}% + \fi + \setbox#1\box\z@ + \LT@get@widths + \LT@bchunk} +\def\endfirsthead{\LT@end@hd@ft\LT@firsthead} +\def\endhead{\LT@end@hd@ft\LT@head} +\def\endfoot{\LT@end@hd@ft\LT@foot} +\def\endlastfoot{\LT@end@hd@ft\LT@lastfoot} +\def\LT@startpbox#1{% + \bgroup + \let\@footnotetext\LT@p@ftntext + \setlength\hsize{#1}% + \@arrayparboxrestore + \vrule \@height \ht\@arstrutbox \@width \z@} +\def\LT@endpbox{% + \@finalstrut\@arstrutbox + \egroup + \the\LT@p@ftn + \global\LT@p@ftn{}% + \hfil} +\def\LT@p@ftntext#1{% + \edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}% + \global\LT@p@ftn\expandafter{\@tempa{#1}}}% + +\@namedef{ver@longtable.sty}{2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen} +\endinput +%% +%% End of file `longtable.sty'. diff --git a/Documents/Doxygen/latex/main_8h.tex b/Documents/Doxygen/latex/main_8h.tex new file mode 100644 index 0000000..d588cdc --- /dev/null +++ b/Documents/Doxygen/latex/main_8h.tex @@ -0,0 +1,380 @@ +\hypertarget{main_8h}{}\doxysection{main.\+h-\/Dateireferenz} +\label{main_8h}\index{main.h@{main.h}} + + +BJ-\/\+Keyer. + + +{\ttfamily \#include \char`\"{}globals.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}encoder.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}functions.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}controls.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}vt100.\+h\char`\"{}}\newline +Include-\/\+Abhängigkeitsdiagramm für main.\+h\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{main_8h__incl} +\end{center} +\end{figure} +Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=212pt]{main_8h__dep__incl} +\end{center} +\end{figure} +\doxysubsection*{Funktionen} +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{main_8h_a7ce0a14b6e7779fbb2d9a05333792c41}{Init}} (void) +\begin{DoxyCompactList}\small\item\em Initialisierung aller Variablen, Timer. \end{DoxyCompactList}\item +void \mbox{\hyperlink{main_8h_a4472695bac138b033a3d7fcd42dd3153}{Init\+Timer}} (void) +\begin{DoxyCompactList}\small\item\em Initialsieren der Timer. \end{DoxyCompactList}\item +void \mbox{\hyperlink{main_8h_ab1f1ff64cfdd7f3c70e793afb9b0e3af}{Re\+Start}} (void) +\begin{DoxyCompactList}\small\item\em Initialisierung bei Reset und Power On. \end{DoxyCompactList}\item +void \mbox{\hyperlink{main_8h_ac0bccd022514697217eaf063b1b2c0fa}{Check\+Dah\+Paddle}} (void) +\begin{DoxyCompactList}\small\item\em Prüfen, ob das Strich Paddle betätigt wurde. \end{DoxyCompactList}\item +void \mbox{\hyperlink{main_8h_a7783dcd27ef486bce541c85e10131394}{Check\+Dit\+Paddle}} (void) +\begin{DoxyCompactList}\small\item\em Prüfen, ob das Punkt Paddle betätigt wurde. \end{DoxyCompactList}\item +void \mbox{\hyperlink{main_8h_a68bed2cd125260e9c6eb7f6f8e0c9106}{Check\+Straight\+Key}} (void) +\begin{DoxyCompactList}\small\item\em Fragt die Handtasteneingänge ab und gibt das entsprechende Symbol aus. Bei der Handtaste findet über einen Timer eine Entprellung statt. \end{DoxyCompactList}\item +void \mbox{\hyperlink{main_8h_a4010a7257caeca55f68c98ee199d3ea2}{Check\+Buttons}} (void) +\begin{DoxyCompactList}\small\item\em Fragt die Taster ab und löst entsprechende Funktion aus. \end{DoxyCompactList}\item +void \mbox{\hyperlink{main_8h_af3375f394993997701d75ee441810edc}{Set\+Frequency}} (uint16\+\_\+t f) +\begin{DoxyCompactList}\small\item\em Verändert die Frequenz des Mithörtons. \end{DoxyCompactList}\item +\mbox{\Hypertarget{main_8h_a1b32c84d18fc1c6d87f27cb7cb4902ba}\label{main_8h_a1b32c84d18fc1c6d87f27cb7cb4902ba}} +void {\bfseries Dit\+Dah\+Buffers} (void) +\item +void \mbox{\hyperlink{main_8h_a98a0b3effca8690570f5b21b4e4984f4}{Set\+Standard\+Msg}} (void) +\begin{DoxyCompactList}\small\item\em Schreibt Standardnachrichten in den EEprom Speicher wenn dieses leer ist (nach dem Flashen des Controllers) \end{DoxyCompactList}\item +\mbox{\Hypertarget{main_8h_a4aa7787c88a378a1f9bc76fffd95caa9}\label{main_8h_a4aa7787c88a378a1f9bc76fffd95caa9}} +void {\bfseries Dah\+Paddle} (void) +\item +\mbox{\Hypertarget{main_8h_a0a924fe2c35e4222859b1a8e0f2a6df9}\label{main_8h_a0a924fe2c35e4222859b1a8e0f2a6df9}} +void {\bfseries Dit\+Paddle} (void) +\item +void \mbox{\hyperlink{main_8h_a8e9bfd3675045369fd2f33121ad25e8e}{Read\+Msg\+EEprom}} (uint8\+\_\+t i) +\begin{DoxyCompactList}\small\item\em Textspeicher aus EEprom lesen. \end{DoxyCompactList}\item +void \mbox{\hyperlink{main_8h_aed5211def004c592733d721fd1d6c186}{Serial\+Receive}} (char c) +\begin{DoxyCompactList}\small\item\em Wird vom UART Interrupt aufgerufen, wenn ein Zeichen empfangen wurde. \end{DoxyCompactList}\item +void \mbox{\hyperlink{main_8h_aa9e990762ad311b3582c6e7b0c4addf6}{Serial\+Reset}} (void) +\begin{DoxyCompactList}\small\item\em Löscht die Terminalanzeige und gibt Versionsinfo und Menue aus. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Variablen} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structConfig}{Config}} \mbox{\hyperlink{main_8h_a8c3e2d3135447df0d9e7057fea4ff5b0}{b\+Config}} +\begin{DoxyCompactList}\small\item\em Struktur für die Einstellungen. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structMenuCtrl}{Menu\+Ctrl}} \mbox{\hyperlink{main_8h_a885b2af021946a60a0bd2a271711c17a}{b\+Menu\+Ctrl}} +\begin{DoxyCompactList}\small\item\em Struktur für die Menuesteuerung. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structState}{State}} \mbox{\hyperlink{main_8h_a44ef5c8aeac95b862dab43408c149f9a}{b\+State}} +\begin{DoxyCompactList}\small\item\em Struktur für den aktuellen Status. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structMessage}{Message}} \mbox{\hyperlink{main_8h_a29b39b8616c75ea80051354a3a8593da}{b\+Message}} +\begin{DoxyCompactList}\small\item\em Struktur für die 5 Textspeicher. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Ausführliche Beschreibung} +BJ-\/\+Keyer. + +@\+Author Tom, DL7\+BJ + +\doxysubsection{Dokumentation der Funktionen} +\mbox{\Hypertarget{main_8h_a4010a7257caeca55f68c98ee199d3ea2}\label{main_8h_a4010a7257caeca55f68c98ee199d3ea2}} +\index{main.h@{main.h}!CheckButtons@{CheckButtons}} +\index{CheckButtons@{CheckButtons}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{CheckButtons()}{CheckButtons()}} +{\footnotesize\ttfamily void Check\+Buttons (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Fragt die Taster ab und löst entsprechende Funktion aus. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{main_8h_ac0bccd022514697217eaf063b1b2c0fa}\label{main_8h_ac0bccd022514697217eaf063b1b2c0fa}} +\index{main.h@{main.h}!CheckDahPaddle@{CheckDahPaddle}} +\index{CheckDahPaddle@{CheckDahPaddle}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{CheckDahPaddle()}{CheckDahPaddle()}} +{\footnotesize\ttfamily void Check\+Dah\+Paddle (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Prüfen, ob das Strich Paddle betätigt wurde. + +\begin{DoxyVerb} Ist dies der Fall, wird das Statusbit gesetzt. Wurde in den + Einstellungen der Reverse Mode aktiviert, werden in der + Abfrage die Paddle vertauscht. +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{main_8h_a7783dcd27ef486bce541c85e10131394}\label{main_8h_a7783dcd27ef486bce541c85e10131394}} +\index{main.h@{main.h}!CheckDitPaddle@{CheckDitPaddle}} +\index{CheckDitPaddle@{CheckDitPaddle}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{CheckDitPaddle()}{CheckDitPaddle()}} +{\footnotesize\ttfamily void Check\+Dit\+Paddle (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Prüfen, ob das Punkt Paddle betätigt wurde. + +\begin{DoxyVerb} Ist dies der Fall, wird das Statusbit gesetzt.Wurde in den + Einstellungen der Reverse Mode aktiviert, werden in der + Abfrage die Paddle vertauscht. +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{main_8h_a68bed2cd125260e9c6eb7f6f8e0c9106}\label{main_8h_a68bed2cd125260e9c6eb7f6f8e0c9106}} +\index{main.h@{main.h}!CheckStraightKey@{CheckStraightKey}} +\index{CheckStraightKey@{CheckStraightKey}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{CheckStraightKey()}{CheckStraightKey()}} +{\footnotesize\ttfamily void Check\+Straight\+Key (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Fragt die Handtasteneingänge ab und gibt das entsprechende Symbol aus. Bei der Handtaste findet über einen Timer eine Entprellung statt. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{main_8h_a7ce0a14b6e7779fbb2d9a05333792c41}\label{main_8h_a7ce0a14b6e7779fbb2d9a05333792c41}} +\index{main.h@{main.h}!Init@{Init}} +\index{Init@{Init}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{Init()}{Init()}} +{\footnotesize\ttfamily void Init (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Initialisierung aller Variablen, Timer. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Rückgabe} +none +\end{DoxyReturn} +\mbox{\Hypertarget{main_8h_a4472695bac138b033a3d7fcd42dd3153}\label{main_8h_a4472695bac138b033a3d7fcd42dd3153}} +\index{main.h@{main.h}!InitTimer@{InitTimer}} +\index{InitTimer@{InitTimer}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{InitTimer()}{InitTimer()}} +{\footnotesize\ttfamily void Init\+Timer (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Initialsieren der Timer. + +\begin{DoxyVerb} Alle Parameter der Timer basieren auf 16MHz Systemtakt. + + Timer 0 - 8 Bit timer für 1ms + Timer 2 - 8 Bit timer für PWM zur Erzeugung des Sinustons + Timer 1A - 16 Bit timer zur Erzeugung der Hüllkurve +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Rückgabe} +none +\end{DoxyReturn} +Timer 2 PWM + +No prescaling + +Clear OC2A on compare match + +Fast PWM Mode + +Initial value\mbox{\Hypertarget{main_8h_a8e9bfd3675045369fd2f33121ad25e8e}\label{main_8h_a8e9bfd3675045369fd2f33121ad25e8e}} +\index{main.h@{main.h}!ReadMsgEEprom@{ReadMsgEEprom}} +\index{ReadMsgEEprom@{ReadMsgEEprom}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{ReadMsgEEprom()}{ReadMsgEEprom()}} +{\footnotesize\ttfamily void Read\+Msg\+EEprom (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{idx }\end{DoxyParamCaption})} + + + +Textspeicher aus EEprom lesen. + + +\begin{DoxyParams}{Parameter} +{\em Nummer} & des Textspeichers \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Rückgabe} +none +\end{DoxyReturn} +\mbox{\Hypertarget{main_8h_ab1f1ff64cfdd7f3c70e793afb9b0e3af}\label{main_8h_ab1f1ff64cfdd7f3c70e793afb9b0e3af}} +\index{main.h@{main.h}!ReStart@{ReStart}} +\index{ReStart@{ReStart}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{ReStart()}{ReStart()}} +{\footnotesize\ttfamily void Re\+Start (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Initialisierung bei Reset und Power On. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Rückgabe} +none +\end{DoxyReturn} +\mbox{\Hypertarget{main_8h_aed5211def004c592733d721fd1d6c186}\label{main_8h_aed5211def004c592733d721fd1d6c186}} +\index{main.h@{main.h}!SerialReceive@{SerialReceive}} +\index{SerialReceive@{SerialReceive}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{SerialReceive()}{SerialReceive()}} +{\footnotesize\ttfamily void Serial\+Receive (\begin{DoxyParamCaption}\item[{char}]{c }\end{DoxyParamCaption})} + + + +Wird vom UART Interrupt aufgerufen, wenn ein Zeichen empfangen wurde. + + +\begin{DoxyParams}{Parameter} +{\em c} & Zeichen, das empfangen wurde \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{main_8h_aa9e990762ad311b3582c6e7b0c4addf6}\label{main_8h_aa9e990762ad311b3582c6e7b0c4addf6}} +\index{main.h@{main.h}!SerialReset@{SerialReset}} +\index{SerialReset@{SerialReset}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{SerialReset()}{SerialReset()}} +{\footnotesize\ttfamily void Serial\+Reset (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Löscht die Terminalanzeige und gibt Versionsinfo und Menue aus. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{main_8h_af3375f394993997701d75ee441810edc}\label{main_8h_af3375f394993997701d75ee441810edc}} +\index{main.h@{main.h}!SetFrequency@{SetFrequency}} +\index{SetFrequency@{SetFrequency}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{SetFrequency()}{SetFrequency()}} +{\footnotesize\ttfamily void Set\+Frequency (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{f }\end{DoxyParamCaption})} + + + +Verändert die Frequenz des Mithörtons. + +\begin{DoxyVerb} Durch die Anpassung des Timers 1 für das + Laden der Werte der Sinuskurve wird die + Tonhöhe des Mithörtons verändert. +\end{DoxyVerb} + +\begin{DoxyParams}{Parameter} +{\em f} & Frequenz des Mithörtons in Hz \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{main_8h_a98a0b3effca8690570f5b21b4e4984f4}\label{main_8h_a98a0b3effca8690570f5b21b4e4984f4}} +\index{main.h@{main.h}!SetStandardMsg@{SetStandardMsg}} +\index{SetStandardMsg@{SetStandardMsg}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{SetStandardMsg()}{SetStandardMsg()}} +{\footnotesize\ttfamily Set\+Standard\+Msg (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Schreibt Standardnachrichten in den EEprom Speicher wenn dieses leer ist (nach dem Flashen des Controllers) + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Rückgabe} +none +\end{DoxyReturn} + + +\doxysubsection{Variablen-\/\+Dokumentation} +\mbox{\Hypertarget{main_8h_a8c3e2d3135447df0d9e7057fea4ff5b0}\label{main_8h_a8c3e2d3135447df0d9e7057fea4ff5b0}} +\index{main.h@{main.h}!bConfig@{bConfig}} +\index{bConfig@{bConfig}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{bConfig}{bConfig}} +{\footnotesize\ttfamily struct \mbox{\hyperlink{structConfig}{Config}} b\+Config} + + + +Struktur für die Einstellungen. + +\mbox{\Hypertarget{main_8h_a885b2af021946a60a0bd2a271711c17a}\label{main_8h_a885b2af021946a60a0bd2a271711c17a}} +\index{main.h@{main.h}!bMenuCtrl@{bMenuCtrl}} +\index{bMenuCtrl@{bMenuCtrl}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{bMenuCtrl}{bMenuCtrl}} +{\footnotesize\ttfamily struct \mbox{\hyperlink{structMenuCtrl}{Menu\+Ctrl}} b\+Menu\+Ctrl} + + + +Struktur für die Menuesteuerung. + +\mbox{\Hypertarget{main_8h_a29b39b8616c75ea80051354a3a8593da}\label{main_8h_a29b39b8616c75ea80051354a3a8593da}} +\index{main.h@{main.h}!bMessage@{bMessage}} +\index{bMessage@{bMessage}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{bMessage}{bMessage}} +{\footnotesize\ttfamily struct \mbox{\hyperlink{structMessage}{Message}} b\+Message} + + + +Struktur für die 5 Textspeicher. + +\mbox{\Hypertarget{main_8h_a44ef5c8aeac95b862dab43408c149f9a}\label{main_8h_a44ef5c8aeac95b862dab43408c149f9a}} +\index{main.h@{main.h}!bState@{bState}} +\index{bState@{bState}!main.h@{main.h}} +\doxysubsubsection{\texorpdfstring{bState}{bState}} +{\footnotesize\ttfamily struct \mbox{\hyperlink{structState}{State}} b\+State} + + + +Struktur für den aktuellen Status. + diff --git a/Documents/Doxygen/latex/main_8h__dep__incl.md5 b/Documents/Doxygen/latex/main_8h__dep__incl.md5 new file mode 100644 index 0000000..fcf3eb5 --- /dev/null +++ b/Documents/Doxygen/latex/main_8h__dep__incl.md5 @@ -0,0 +1 @@ +d2c35309bbb1e51a5756bfe96859afa2 \ No newline at end of file diff --git a/Documents/Doxygen/latex/main_8h__dep__incl.pdf b/Documents/Doxygen/latex/main_8h__dep__incl.pdf new file mode 100644 index 0000000..957bf02 Binary files /dev/null and b/Documents/Doxygen/latex/main_8h__dep__incl.pdf differ diff --git a/Documents/Doxygen/latex/main_8h__incl.md5 b/Documents/Doxygen/latex/main_8h__incl.md5 new file mode 100644 index 0000000..0d1b619 --- /dev/null +++ b/Documents/Doxygen/latex/main_8h__incl.md5 @@ -0,0 +1 @@ +b1dceec05774ef869a3db490a7586099 \ No newline at end of file diff --git a/Documents/Doxygen/latex/main_8h__incl.pdf b/Documents/Doxygen/latex/main_8h__incl.pdf new file mode 100644 index 0000000..d382ed5 Binary files /dev/null and b/Documents/Doxygen/latex/main_8h__incl.pdf differ diff --git a/Documents/Doxygen/latex/refman.tex b/Documents/Doxygen/latex/refman.tex new file mode 100644 index 0000000..935b2dd --- /dev/null +++ b/Documents/Doxygen/latex/refman.tex @@ -0,0 +1,211 @@ +\let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage}\documentclass[twoside]{book} + +%% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package +\usepackage{ifthen} +\ifx\requestedLaTeXdate\undefined +\usepackage{array} +\else +\usepackage{array}[=2016-10-06] +\fi +%% +% Packages required by doxygen +\usepackage{fixltx2e} +\usepackage{doxygen} +\usepackage{graphicx} +\usepackage[utf8]{inputenc} +\usepackage{makeidx} +\PassOptionsToPackage{warn}{textcomp} +\usepackage{textcomp} +\usepackage[nointegrals]{wasysym} +\usepackage{ifxetex} + +% NLS support packages +\usepackage[ngerman]{babel} + +% Font selection +\usepackage[T1]{fontenc} +\usepackage[scaled=.90]{helvet} +\usepackage{courier} +\renewcommand{\familydefault}{\sfdefault} +\usepackage{sectsty} +\allsectionsfont{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} +\renewcommand{\DoxyLabelFont}{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} +\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} + +% Arguments of doxygenemoji: +% 1) '::' form of the emoji, already "LaTeX"-escaped +% 2) file with the name of the emoji without the .png extension +% in case image exist use this otherwise use the '::' form +\newcommand{\doxygenemoji}[2]{% + \IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}% +} +% Page & text layout +\usepackage{geometry} +\geometry{% + a4paper,% + top=2.5cm,% + bottom=2.5cm,% + left=2.5cm,% + right=2.5cm% +} +\tolerance=750 +\hfuzz=15pt +\hbadness=750 +\setlength{\emergencystretch}{15pt} +\setlength{\parindent}{0cm} +\newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}} +\newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}} +\doxynormalparskip +\makeatletter +\renewcommand{\paragraph}{% + \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@parafont% + }% +} +\renewcommand{\subparagraph}{% + \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@subparafont% + }% +} +\makeatother + +\makeatletter +\newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@} +\makeatother + +% Headers & footers +\usepackage{fancyhdr} +\pagestyle{fancyplain} +\renewcommand{\footrulewidth}{0.4pt} +% +\fancypagestyle{fancyplain}{ +\fancyhf{} +\fancyhead[LE, RO]{\bfseries\thepage} +\fancyhead[LO]{\bfseries\rightmark} +\fancyhead[RE]{\bfseries\leftmark} +\fancyfoot[LO, RE]{\bfseries\scriptsize Erzeugt von Doxygen } +} +% +\fancypagestyle{plain}{ +\fancyhf{} +\fancyfoot[LO, RE]{\bfseries\scriptsize Erzeugt von Doxygen } +\renewcommand{\headrulewidth}{0pt}} +% +\pagestyle{fancyplain} +% +\renewcommand{\chaptermark}[1]{% + \markboth{#1}{}% +} +\renewcommand{\sectionmark}[1]{% + \markright{\thesection\ #1}% +} + +% Indices & bibliography +\usepackage{natbib} +\usepackage[titles]{tocloft} +\setcounter{tocdepth}{3} +\setcounter{secnumdepth}{5} +\makeindex + +\usepackage{newunicodechar} + \newunicodechar{⁻}{${}^{-}$}% Superscript minus + \newunicodechar{²}{${}^{2}$}% Superscript two + \newunicodechar{³}{${}^{3}$}% Superscript three + +% Hyperlinks (required, but should be loaded last) +\ifpdf + \usepackage[pdftex,pagebackref=true]{hyperref} +\else + \ifxetex + \usepackage[pagebackref=true]{hyperref} + \else + \usepackage[ps2pdf,pagebackref=true]{hyperref} + \fi +\fi + +\hypersetup{% + colorlinks=true,% + linkcolor=blue,% + citecolor=blue,% + unicode% +} + +% Custom commands +\newcommand{\clearemptydoublepage}{% + \newpage{\pagestyle{empty}\cleardoublepage}% +} + +\usepackage{caption} +\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} + +\usepackage{etoc} +\etocsettocstyle{\doxytocparskip}{\doxynormalparskip} +\renewcommand{\numberline}[1]{#1~} +%===== C O N T E N T S ===== + +\begin{document} +\raggedbottom + +% Titlepage & ToC +\hypersetup{pageanchor=false, + bookmarksnumbered=true, + pdfencoding=unicode + } +\pagenumbering{alph} +\begin{titlepage} +\vspace*{7cm} +\begin{center}% +{\Large BJ-\/\+Keyer \\[1ex]\large 1.\+03 }\\ +\vspace*{1cm} +{\large Erzeugt von Doxygen 1.9.1}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\hypersetup{pageanchor=true} + +%--- Begin generated contents --- +\chapter{Ausstehende Aufgaben} +\label{todo} +\Hypertarget{todo} +\input{todo} +\chapter{Datenstruktur-\/\+Verzeichnis} +\input{annotated} +\chapter{Datei-\/\+Verzeichnis} +\input{files} +\chapter{Datenstruktur-\/\+Dokumentation} +\input{structConfig} +\input{structMenuCtrl} +\input{structMessage} +\input{structSerialState} +\input{structState} +\chapter{Datei-\/\+Dokumentation} +\input{controls_8c} +\input{controls_8h} +\input{encoder_8c} +\input{functions_8c} +\input{functions_8h} +\input{globals_8h} +\input{main_8h} +\input{vt100_8c} +\input{vt100_8h} +%--- End generated contents --- + +% Index +\backmatter +\newpage +\phantomsection +\clearemptydoublepage +\addcontentsline{toc}{chapter}{\indexname} +\printindex + +\end{document} diff --git a/Documents/Doxygen/latex/structConfig.tex b/Documents/Doxygen/latex/structConfig.tex new file mode 100644 index 0000000..6e86d37 --- /dev/null +++ b/Documents/Doxygen/latex/structConfig.tex @@ -0,0 +1,193 @@ +\hypertarget{structConfig}{}\doxysection{Config Strukturreferenz} +\label{structConfig}\index{Config@{Config}} +\doxysubsection*{Datenfelder} +\begin{DoxyCompactItemize} +\item +uint8\+\_\+t \mbox{\hyperlink{structConfig_a69e7d809f90ded45fed3d7511f5145dd}{Trx1}}\+: 1 +\begin{DoxyCompactList}\small\item\em TRX 1 eingeschaltet. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structConfig_a4401df925b1dc135a26043c0809db461}{Trx2}}\+: 1 +\begin{DoxyCompactList}\small\item\em TRX 2 eingeschaltet. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structConfig_aef4f69db097a750c80f3b719bc14f341}{Keyer\+Mode}}\+: 3 +\begin{DoxyCompactList}\small\item\em Iambic A, Iambic B oder Ultimatic. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structConfig_a7d6dfda9db154b977769378223d56eff}{Sidetone\+Enabled}}\+: 1 +\begin{DoxyCompactList}\small\item\em Mithörton eingeschaltet. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structConfig_a663b40e9d018ada8d4b6b97b4b2f5be0}{Wp\+MBpM}}\+: 1 +\begin{DoxyCompactList}\small\item\em WpM oder BpM Anzeige. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structConfig_a8be063e5e1e539a860e2714b30d66ecc}{Reverse}}\+: 1 +\begin{DoxyCompactList}\small\item\em linkes/rechtes Paddle vertauschen \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structConfig_ac8db90b71b36d0a49ef231e68fb42797}{Ratio}} +\begin{DoxyCompactList}\small\item\em Punkt/\+Strich Verhältnis 1\+:3. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structConfig_ace909792695e3949303df7fc26668739}{Weight}} +\begin{DoxyCompactList}\small\item\em Punkt/\+Strich Gewichtung. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structConfig_a471840b99ff046bf1404f8640a8193a8}{Memory}}\+:1 +\begin{DoxyCompactList}\small\item\em Punkt/\+Strich Speicher. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structConfig_adfbadb3847cb30d90b89f2db5b4850e4}{Mem\+Button\+Mode}}\+:1 +\begin{DoxyCompactList}\small\item\em Button 5 als Umschalter TRX oder Speichertaste. \end{DoxyCompactList}\item +uint16\+\_\+t \mbox{\hyperlink{structConfig_aa3910963f687f6cea42eb74a662f0504}{Sidetone\+Freq}} +\begin{DoxyCompactList}\small\item\em Frequenz des Mithörtons. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structConfig_ad897d01be9484ac915e8d545c5937e16}{WpM}} +\begin{DoxyCompactList}\small\item\em WpM. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structConfig_a627e732da58565b3d28f99b82c6a5c54}{Rise\+Time}} +\begin{DoxyCompactList}\small\item\em Anstiegszeit Sinuston. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structConfig_a5afac0757bcf374b784a1250501d0bb0}{Rise\+Time\+Counter}} +\begin{DoxyCompactList}\small\item\em Anzahl Sinusschwingungen für den Anstieg. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structConfig_ace4e1403e52d3d19aa9f2470a13cfaa3}{Debounce\+Time}} +\begin{DoxyCompactList}\small\item\em Entprellzeit für Straight Key Eingang. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Dokumentation der Felder} +\mbox{\Hypertarget{structConfig_ace4e1403e52d3d19aa9f2470a13cfaa3}\label{structConfig_ace4e1403e52d3d19aa9f2470a13cfaa3}} +\index{Config@{Config}!DebounceTime@{DebounceTime}} +\index{DebounceTime@{DebounceTime}!Config@{Config}} +\doxysubsubsection{\texorpdfstring{DebounceTime}{DebounceTime}} +{\footnotesize\ttfamily uint8\+\_\+t Config\+::\+Debounce\+Time} + + + +Entprellzeit für Straight Key Eingang. + +\mbox{\Hypertarget{structConfig_aef4f69db097a750c80f3b719bc14f341}\label{structConfig_aef4f69db097a750c80f3b719bc14f341}} +\index{Config@{Config}!KeyerMode@{KeyerMode}} +\index{KeyerMode@{KeyerMode}!Config@{Config}} +\doxysubsubsection{\texorpdfstring{KeyerMode}{KeyerMode}} +{\footnotesize\ttfamily uint8\+\_\+t Config\+::\+Keyer\+Mode} + + + +Iambic A, Iambic B oder Ultimatic. + +\mbox{\Hypertarget{structConfig_adfbadb3847cb30d90b89f2db5b4850e4}\label{structConfig_adfbadb3847cb30d90b89f2db5b4850e4}} +\index{Config@{Config}!MemButtonMode@{MemButtonMode}} +\index{MemButtonMode@{MemButtonMode}!Config@{Config}} +\doxysubsubsection{\texorpdfstring{MemButtonMode}{MemButtonMode}} +{\footnotesize\ttfamily uint8\+\_\+t Config\+::\+Mem\+Button\+Mode} + + + +Button 5 als Umschalter TRX oder Speichertaste. + +\mbox{\Hypertarget{structConfig_a471840b99ff046bf1404f8640a8193a8}\label{structConfig_a471840b99ff046bf1404f8640a8193a8}} +\index{Config@{Config}!Memory@{Memory}} +\index{Memory@{Memory}!Config@{Config}} +\doxysubsubsection{\texorpdfstring{Memory}{Memory}} +{\footnotesize\ttfamily uint8\+\_\+t Config\+::\+Memory} + + + +Punkt/\+Strich Speicher. + +\mbox{\Hypertarget{structConfig_ac8db90b71b36d0a49ef231e68fb42797}\label{structConfig_ac8db90b71b36d0a49ef231e68fb42797}} +\index{Config@{Config}!Ratio@{Ratio}} +\index{Ratio@{Ratio}!Config@{Config}} +\doxysubsubsection{\texorpdfstring{Ratio}{Ratio}} +{\footnotesize\ttfamily uint8\+\_\+t Config\+::\+Ratio} + + + +Punkt/\+Strich Verhältnis 1\+:3. + +\mbox{\Hypertarget{structConfig_a8be063e5e1e539a860e2714b30d66ecc}\label{structConfig_a8be063e5e1e539a860e2714b30d66ecc}} +\index{Config@{Config}!Reverse@{Reverse}} +\index{Reverse@{Reverse}!Config@{Config}} +\doxysubsubsection{\texorpdfstring{Reverse}{Reverse}} +{\footnotesize\ttfamily uint8\+\_\+t Config\+::\+Reverse} + + + +linkes/rechtes Paddle vertauschen + +\mbox{\Hypertarget{structConfig_a627e732da58565b3d28f99b82c6a5c54}\label{structConfig_a627e732da58565b3d28f99b82c6a5c54}} +\index{Config@{Config}!RiseTime@{RiseTime}} +\index{RiseTime@{RiseTime}!Config@{Config}} +\doxysubsubsection{\texorpdfstring{RiseTime}{RiseTime}} +{\footnotesize\ttfamily uint8\+\_\+t Config\+::\+Rise\+Time} + + + +Anstiegszeit Sinuston. + +\mbox{\Hypertarget{structConfig_a5afac0757bcf374b784a1250501d0bb0}\label{structConfig_a5afac0757bcf374b784a1250501d0bb0}} +\index{Config@{Config}!RiseTimeCounter@{RiseTimeCounter}} +\index{RiseTimeCounter@{RiseTimeCounter}!Config@{Config}} +\doxysubsubsection{\texorpdfstring{RiseTimeCounter}{RiseTimeCounter}} +{\footnotesize\ttfamily uint8\+\_\+t Config\+::\+Rise\+Time\+Counter} + + + +Anzahl Sinusschwingungen für den Anstieg. + +\mbox{\Hypertarget{structConfig_a7d6dfda9db154b977769378223d56eff}\label{structConfig_a7d6dfda9db154b977769378223d56eff}} +\index{Config@{Config}!SidetoneEnabled@{SidetoneEnabled}} +\index{SidetoneEnabled@{SidetoneEnabled}!Config@{Config}} +\doxysubsubsection{\texorpdfstring{SidetoneEnabled}{SidetoneEnabled}} +{\footnotesize\ttfamily uint8\+\_\+t Config\+::\+Sidetone\+Enabled} + + + +Mithörton eingeschaltet. + +\mbox{\Hypertarget{structConfig_aa3910963f687f6cea42eb74a662f0504}\label{structConfig_aa3910963f687f6cea42eb74a662f0504}} +\index{Config@{Config}!SidetoneFreq@{SidetoneFreq}} +\index{SidetoneFreq@{SidetoneFreq}!Config@{Config}} +\doxysubsubsection{\texorpdfstring{SidetoneFreq}{SidetoneFreq}} +{\footnotesize\ttfamily uint16\+\_\+t Config\+::\+Sidetone\+Freq} + + + +Frequenz des Mithörtons. + +\mbox{\Hypertarget{structConfig_a69e7d809f90ded45fed3d7511f5145dd}\label{structConfig_a69e7d809f90ded45fed3d7511f5145dd}} +\index{Config@{Config}!Trx1@{Trx1}} +\index{Trx1@{Trx1}!Config@{Config}} +\doxysubsubsection{\texorpdfstring{Trx1}{Trx1}} +{\footnotesize\ttfamily uint8\+\_\+t Config\+::\+Trx1} + + + +TRX 1 eingeschaltet. + +\mbox{\Hypertarget{structConfig_a4401df925b1dc135a26043c0809db461}\label{structConfig_a4401df925b1dc135a26043c0809db461}} +\index{Config@{Config}!Trx2@{Trx2}} +\index{Trx2@{Trx2}!Config@{Config}} +\doxysubsubsection{\texorpdfstring{Trx2}{Trx2}} +{\footnotesize\ttfamily uint8\+\_\+t Config\+::\+Trx2} + + + +TRX 2 eingeschaltet. + +\mbox{\Hypertarget{structConfig_ace909792695e3949303df7fc26668739}\label{structConfig_ace909792695e3949303df7fc26668739}} +\index{Config@{Config}!Weight@{Weight}} +\index{Weight@{Weight}!Config@{Config}} +\doxysubsubsection{\texorpdfstring{Weight}{Weight}} +{\footnotesize\ttfamily uint8\+\_\+t Config\+::\+Weight} + + + +Punkt/\+Strich Gewichtung. + +\mbox{\Hypertarget{structConfig_ad897d01be9484ac915e8d545c5937e16}\label{structConfig_ad897d01be9484ac915e8d545c5937e16}} +\index{Config@{Config}!WpM@{WpM}} +\index{WpM@{WpM}!Config@{Config}} +\doxysubsubsection{\texorpdfstring{WpM}{WpM}} +{\footnotesize\ttfamily uint8\+\_\+t Config\+::\+WpM} + + + +WpM. + +\mbox{\Hypertarget{structConfig_a663b40e9d018ada8d4b6b97b4b2f5be0}\label{structConfig_a663b40e9d018ada8d4b6b97b4b2f5be0}} +\index{Config@{Config}!WpMBpM@{WpMBpM}} +\index{WpMBpM@{WpMBpM}!Config@{Config}} +\doxysubsubsection{\texorpdfstring{WpMBpM}{WpMBpM}} +{\footnotesize\ttfamily uint8\+\_\+t Config\+::\+Wp\+MBpM} + + + +WpM oder BpM Anzeige. + + + +Die Dokumentation für diese Struktur wurde erzeugt aufgrund der Datei\+:\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{globals_8h}{globals.\+h}}\end{DoxyCompactItemize} diff --git a/Documents/Doxygen/latex/structMenuCtrl.tex b/Documents/Doxygen/latex/structMenuCtrl.tex new file mode 100644 index 0000000..e7c36b8 --- /dev/null +++ b/Documents/Doxygen/latex/structMenuCtrl.tex @@ -0,0 +1,121 @@ +\hypertarget{structMenuCtrl}{}\doxysection{Menu\+Ctrl Strukturreferenz} +\label{structMenuCtrl}\index{MenuCtrl@{MenuCtrl}} +\doxysubsection*{Datenfelder} +\begin{DoxyCompactItemize} +\item +uint8\+\_\+t \mbox{\hyperlink{structMenuCtrl_aee5679939884de604d3e5ad970ec0cbb}{button\+Pressed}}\+: 1 +\begin{DoxyCompactList}\small\item\em Taster Drehencoder gedrückt. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structMenuCtrl_a45ed8ad2a9ae8803b446e599fb66fa78}{button\+Pressed\+Long}}\+: 1 +\begin{DoxyCompactList}\small\item\em Taster Drehencoder lange gedrückt. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structMenuCtrl_ac934eaf7540f23d8f603938031f95e10}{m\+\_\+button\+Pressed}}\+: 2 +\begin{DoxyCompactList}\small\item\em Merker für Taster Drehencoder gedrückt. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structMenuCtrl_a143a285e1e4805feb057173b9116dcd0}{m\+\_\+button\+Pressed\+Long}}\+: 1 +\begin{DoxyCompactList}\small\item\em Merker für Taster Drehencoder lange gedrückt. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structMenuCtrl_ad890262e118180236b9eb54f7611b47c}{Clr\+Scr}}\+: 1 +\begin{DoxyCompactList}\small\item\em Bitmerker für Display löschen. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structMenuCtrl_a47430d7c1484d7e5e18ae5a7fc4f8335}{Config}}\+: 1 +\begin{DoxyCompactList}\small\item\em Bitmerker für \mbox{\hyperlink{structConfig}{Config}} geändert. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structMenuCtrl_ab5689421bcc8b519acde95507a30261d}{Update}}\+: 1 +\begin{DoxyCompactList}\small\item\em Bitmerker für Display update. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structMenuCtrl_a458df051e05029982d088d98ac1a8069}{Cur\+Menue}} +\begin{DoxyCompactList}\small\item\em aktuelles Menue \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structMenuCtrl_a18592f292af3324a9d91db635c2e6fec}{Sub\+Menue}}\+: 1 +\begin{DoxyCompactList}\small\item\em im Submenue \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Dokumentation der Felder} +\mbox{\Hypertarget{structMenuCtrl_aee5679939884de604d3e5ad970ec0cbb}\label{structMenuCtrl_aee5679939884de604d3e5ad970ec0cbb}} +\index{MenuCtrl@{MenuCtrl}!buttonPressed@{buttonPressed}} +\index{buttonPressed@{buttonPressed}!MenuCtrl@{MenuCtrl}} +\doxysubsubsection{\texorpdfstring{buttonPressed}{buttonPressed}} +{\footnotesize\ttfamily uint8\+\_\+t Menu\+Ctrl\+::button\+Pressed} + + + +Taster Drehencoder gedrückt. + +\mbox{\Hypertarget{structMenuCtrl_a45ed8ad2a9ae8803b446e599fb66fa78}\label{structMenuCtrl_a45ed8ad2a9ae8803b446e599fb66fa78}} +\index{MenuCtrl@{MenuCtrl}!buttonPressedLong@{buttonPressedLong}} +\index{buttonPressedLong@{buttonPressedLong}!MenuCtrl@{MenuCtrl}} +\doxysubsubsection{\texorpdfstring{buttonPressedLong}{buttonPressedLong}} +{\footnotesize\ttfamily uint8\+\_\+t Menu\+Ctrl\+::button\+Pressed\+Long} + + + +Taster Drehencoder lange gedrückt. + +\mbox{\Hypertarget{structMenuCtrl_ad890262e118180236b9eb54f7611b47c}\label{structMenuCtrl_ad890262e118180236b9eb54f7611b47c}} +\index{MenuCtrl@{MenuCtrl}!ClrScr@{ClrScr}} +\index{ClrScr@{ClrScr}!MenuCtrl@{MenuCtrl}} +\doxysubsubsection{\texorpdfstring{ClrScr}{ClrScr}} +{\footnotesize\ttfamily uint8\+\_\+t Menu\+Ctrl\+::\+Clr\+Scr} + + + +Bitmerker für Display löschen. + +\mbox{\Hypertarget{structMenuCtrl_a47430d7c1484d7e5e18ae5a7fc4f8335}\label{structMenuCtrl_a47430d7c1484d7e5e18ae5a7fc4f8335}} +\index{MenuCtrl@{MenuCtrl}!Config@{Config}} +\index{Config@{Config}!MenuCtrl@{MenuCtrl}} +\doxysubsubsection{\texorpdfstring{Config}{Config}} +{\footnotesize\ttfamily uint8\+\_\+t Menu\+Ctrl\+::\+Config} + + + +Bitmerker für \mbox{\hyperlink{structConfig}{Config}} geändert. + +\mbox{\Hypertarget{structMenuCtrl_a458df051e05029982d088d98ac1a8069}\label{structMenuCtrl_a458df051e05029982d088d98ac1a8069}} +\index{MenuCtrl@{MenuCtrl}!CurMenue@{CurMenue}} +\index{CurMenue@{CurMenue}!MenuCtrl@{MenuCtrl}} +\doxysubsubsection{\texorpdfstring{CurMenue}{CurMenue}} +{\footnotesize\ttfamily uint8\+\_\+t Menu\+Ctrl\+::\+Cur\+Menue} + + + +aktuelles Menue + +\mbox{\Hypertarget{structMenuCtrl_ac934eaf7540f23d8f603938031f95e10}\label{structMenuCtrl_ac934eaf7540f23d8f603938031f95e10}} +\index{MenuCtrl@{MenuCtrl}!m\_buttonPressed@{m\_buttonPressed}} +\index{m\_buttonPressed@{m\_buttonPressed}!MenuCtrl@{MenuCtrl}} +\doxysubsubsection{\texorpdfstring{m\_buttonPressed}{m\_buttonPressed}} +{\footnotesize\ttfamily uint8\+\_\+t Menu\+Ctrl\+::m\+\_\+button\+Pressed} + + + +Merker für Taster Drehencoder gedrückt. + +\mbox{\Hypertarget{structMenuCtrl_a143a285e1e4805feb057173b9116dcd0}\label{structMenuCtrl_a143a285e1e4805feb057173b9116dcd0}} +\index{MenuCtrl@{MenuCtrl}!m\_buttonPressedLong@{m\_buttonPressedLong}} +\index{m\_buttonPressedLong@{m\_buttonPressedLong}!MenuCtrl@{MenuCtrl}} +\doxysubsubsection{\texorpdfstring{m\_buttonPressedLong}{m\_buttonPressedLong}} +{\footnotesize\ttfamily uint8\+\_\+t Menu\+Ctrl\+::m\+\_\+button\+Pressed\+Long} + + + +Merker für Taster Drehencoder lange gedrückt. + +\mbox{\Hypertarget{structMenuCtrl_a18592f292af3324a9d91db635c2e6fec}\label{structMenuCtrl_a18592f292af3324a9d91db635c2e6fec}} +\index{MenuCtrl@{MenuCtrl}!SubMenue@{SubMenue}} +\index{SubMenue@{SubMenue}!MenuCtrl@{MenuCtrl}} +\doxysubsubsection{\texorpdfstring{SubMenue}{SubMenue}} +{\footnotesize\ttfamily uint8\+\_\+t Menu\+Ctrl\+::\+Sub\+Menue} + + + +im Submenue + +\mbox{\Hypertarget{structMenuCtrl_ab5689421bcc8b519acde95507a30261d}\label{structMenuCtrl_ab5689421bcc8b519acde95507a30261d}} +\index{MenuCtrl@{MenuCtrl}!Update@{Update}} +\index{Update@{Update}!MenuCtrl@{MenuCtrl}} +\doxysubsubsection{\texorpdfstring{Update}{Update}} +{\footnotesize\ttfamily uint8\+\_\+t Menu\+Ctrl\+::\+Update} + + + +Bitmerker für Display update. + + + +Die Dokumentation für diese Struktur wurde erzeugt aufgrund der Datei\+:\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{globals_8h}{globals.\+h}}\end{DoxyCompactItemize} diff --git a/Documents/Doxygen/latex/structMessage.tex b/Documents/Doxygen/latex/structMessage.tex new file mode 100644 index 0000000..68fc979 --- /dev/null +++ b/Documents/Doxygen/latex/structMessage.tex @@ -0,0 +1,73 @@ +\hypertarget{structMessage}{}\doxysection{Message Strukturreferenz} +\label{structMessage}\index{Message@{Message}} +\doxysubsection*{Datenfelder} +\begin{DoxyCompactItemize} +\item +char \mbox{\hyperlink{structMessage_ab381872a2fb6867d57478a88a760bf02}{Msg1}} \mbox{[}\mbox{\hyperlink{globals_8h_a57332b76331a1bbe1d6807ddbb6d0522}{MSGSIZE}}\mbox{]} +\begin{DoxyCompactList}\small\item\em Textspeicher 1. \end{DoxyCompactList}\item +char \mbox{\hyperlink{structMessage_ac49356fe1ae9961bfa1dbe49f043f6f6}{Msg2}} \mbox{[}\mbox{\hyperlink{globals_8h_a57332b76331a1bbe1d6807ddbb6d0522}{MSGSIZE}}\mbox{]} +\begin{DoxyCompactList}\small\item\em Textspeicher 2. \end{DoxyCompactList}\item +char \mbox{\hyperlink{structMessage_a1c740c8f5879720483a483c36656e3f8}{Msg3}} \mbox{[}\mbox{\hyperlink{globals_8h_a57332b76331a1bbe1d6807ddbb6d0522}{MSGSIZE}}\mbox{]} +\begin{DoxyCompactList}\small\item\em Textspeicher 3. \end{DoxyCompactList}\item +char \mbox{\hyperlink{structMessage_aca26aa7f7c5432ceef8aabd2711b8f47}{Msg4}} \mbox{[}\mbox{\hyperlink{globals_8h_a57332b76331a1bbe1d6807ddbb6d0522}{MSGSIZE}}\mbox{]} +\begin{DoxyCompactList}\small\item\em Textspeicher 4. \end{DoxyCompactList}\item +char \mbox{\hyperlink{structMessage_a47e9ec3da93b993528f717ecf67c88c0}{Msg5}} \mbox{[}\mbox{\hyperlink{globals_8h_a57332b76331a1bbe1d6807ddbb6d0522}{MSGSIZE}}\mbox{]} +\begin{DoxyCompactList}\small\item\em Textspeicher 5. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Dokumentation der Felder} +\mbox{\Hypertarget{structMessage_ab381872a2fb6867d57478a88a760bf02}\label{structMessage_ab381872a2fb6867d57478a88a760bf02}} +\index{Message@{Message}!Msg1@{Msg1}} +\index{Msg1@{Msg1}!Message@{Message}} +\doxysubsubsection{\texorpdfstring{Msg1}{Msg1}} +{\footnotesize\ttfamily char Message\+::\+Msg1\mbox{[}\mbox{\hyperlink{globals_8h_a57332b76331a1bbe1d6807ddbb6d0522}{MSGSIZE}}\mbox{]}} + + + +Textspeicher 1. + +\mbox{\Hypertarget{structMessage_ac49356fe1ae9961bfa1dbe49f043f6f6}\label{structMessage_ac49356fe1ae9961bfa1dbe49f043f6f6}} +\index{Message@{Message}!Msg2@{Msg2}} +\index{Msg2@{Msg2}!Message@{Message}} +\doxysubsubsection{\texorpdfstring{Msg2}{Msg2}} +{\footnotesize\ttfamily char Message\+::\+Msg2\mbox{[}\mbox{\hyperlink{globals_8h_a57332b76331a1bbe1d6807ddbb6d0522}{MSGSIZE}}\mbox{]}} + + + +Textspeicher 2. + +\mbox{\Hypertarget{structMessage_a1c740c8f5879720483a483c36656e3f8}\label{structMessage_a1c740c8f5879720483a483c36656e3f8}} +\index{Message@{Message}!Msg3@{Msg3}} +\index{Msg3@{Msg3}!Message@{Message}} +\doxysubsubsection{\texorpdfstring{Msg3}{Msg3}} +{\footnotesize\ttfamily char Message\+::\+Msg3\mbox{[}\mbox{\hyperlink{globals_8h_a57332b76331a1bbe1d6807ddbb6d0522}{MSGSIZE}}\mbox{]}} + + + +Textspeicher 3. + +\mbox{\Hypertarget{structMessage_aca26aa7f7c5432ceef8aabd2711b8f47}\label{structMessage_aca26aa7f7c5432ceef8aabd2711b8f47}} +\index{Message@{Message}!Msg4@{Msg4}} +\index{Msg4@{Msg4}!Message@{Message}} +\doxysubsubsection{\texorpdfstring{Msg4}{Msg4}} +{\footnotesize\ttfamily char Message\+::\+Msg4\mbox{[}\mbox{\hyperlink{globals_8h_a57332b76331a1bbe1d6807ddbb6d0522}{MSGSIZE}}\mbox{]}} + + + +Textspeicher 4. + +\mbox{\Hypertarget{structMessage_a47e9ec3da93b993528f717ecf67c88c0}\label{structMessage_a47e9ec3da93b993528f717ecf67c88c0}} +\index{Message@{Message}!Msg5@{Msg5}} +\index{Msg5@{Msg5}!Message@{Message}} +\doxysubsubsection{\texorpdfstring{Msg5}{Msg5}} +{\footnotesize\ttfamily char Message\+::\+Msg5\mbox{[}\mbox{\hyperlink{globals_8h_a57332b76331a1bbe1d6807ddbb6d0522}{MSGSIZE}}\mbox{]}} + + + +Textspeicher 5. + + + +Die Dokumentation für diese Struktur wurde erzeugt aufgrund der Datei\+:\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{globals_8h}{globals.\+h}}\end{DoxyCompactItemize} diff --git a/Documents/Doxygen/latex/structSerialState.tex b/Documents/Doxygen/latex/structSerialState.tex new file mode 100644 index 0000000..a064894 --- /dev/null +++ b/Documents/Doxygen/latex/structSerialState.tex @@ -0,0 +1,16 @@ +\hypertarget{structSerialState}{}\doxysection{Serial\+State Strukturreferenz} +\label{structSerialState}\index{SerialState@{SerialState}} +\doxysubsection*{Datenfelder} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{structSerialState_a6a240fb88c230572cb4235b1d70f3da8}\label{structSerialState_a6a240fb88c230572cb4235b1d70f3da8}} +uint8\+\_\+t {\bfseries Ausgabe} +\item +\mbox{\Hypertarget{structSerialState_aab0f350cb64b46822bfe911c465865ad}\label{structSerialState_aab0f350cb64b46822bfe911c465865ad}} +uint8\+\_\+t {\bfseries Eingabe} +\end{DoxyCompactItemize} + + +Die Dokumentation für diese Struktur wurde erzeugt aufgrund der Datei\+:\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{vt100_8h}{vt100.\+h}}\end{DoxyCompactItemize} diff --git a/Documents/Doxygen/latex/structState.tex b/Documents/Doxygen/latex/structState.tex new file mode 100644 index 0000000..5ee12f7 --- /dev/null +++ b/Documents/Doxygen/latex/structState.tex @@ -0,0 +1,151 @@ +\hypertarget{structState}{}\doxysection{State Strukturreferenz} +\label{structState}\index{State@{State}} +\doxysubsection*{Datenfelder} +\begin{DoxyCompactItemize} +\item +uint8\+\_\+t \mbox{\hyperlink{structState_a52ffc38efd1a9798d8d92014fe664e62}{Wp\+MChanged}}\+: 1 +\begin{DoxyCompactList}\small\item\em Geschwindigkeit geändert. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structState_a0213cd5057520f3b652f3755dcdc0e70}{Write\+Wp\+MEEprom}}\+: 1 +\begin{DoxyCompactList}\small\item\em nicht gespeicherte Geschwindigkeit \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structState_a0589ba8e59b2a9a246ce8d14f783577b}{Write\+EEprom}}\+: 1 +\begin{DoxyCompactList}\small\item\em nicht gespeicherte EEprom Werte \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structState_acbc62fb74e564116927efe2f2147b8b9}{Write\+Msg\+EEprom}}\+: 2 +\begin{DoxyCompactList}\small\item\em nicht gespeicherte Textnachrichten \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structState_a5e94242222ee7d6061fb36f5374f36b4}{Sidetone\+Off}}\+: 1 +\begin{DoxyCompactList}\small\item\em Mithörton an oder aus. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structState_aaebbf5da7337abd9a683f6fd3d63087d}{Sidetone\+Enabled}}\+: 1 +\begin{DoxyCompactList}\small\item\em Mithörton ein-\/ oder ausgeschaltet. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structState_ac9b34cc2b3cb4f8ffe789278d9b76616}{Send\+Status}} +\begin{DoxyCompactList}\small\item\em Status, ob Symbol gesendet wird. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structState_a77084e27de545c8c9326e317a8c1edff}{Automatic}} +\begin{DoxyCompactList}\small\item\em Speicher wird gesendet. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structState_a0b10c2ed83f730ab25f808ca4159e0a1}{Last\+Symbol\+Was\+Dit}}\+: 1 +\begin{DoxyCompactList}\small\item\em letztes Symbol war ein Punkt \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structState_a0e3dcd5d2b54a5256fd71a1d956a2a0d}{Dit\+Pressed}}\+: 1 +\begin{DoxyCompactList}\small\item\em Dit Hebel betätigt. \end{DoxyCompactList}\item +uint8\+\_\+t \mbox{\hyperlink{structState_a76bff5a7c3dd312851c50afccd017b33}{Dah\+Pressed}}\+: 1 +\begin{DoxyCompactList}\small\item\em Dah Hebel betätigt. \end{DoxyCompactList}\item +\mbox{\Hypertarget{structState_abd2083729e1ccf082240af06a4619756}\label{structState_abd2083729e1ccf082240af06a4619756}} +uint8\+\_\+t {\bfseries Key\+State}\+:1 +\item +\mbox{\Hypertarget{structState_aa0bd07f4422e7c411be3c34b8e0e7dbf}\label{structState_aa0bd07f4422e7c411be3c34b8e0e7dbf}} +uint8\+\_\+t {\bfseries Key\+TX}\+:1 +\end{DoxyCompactItemize} + + +\doxysubsection{Dokumentation der Felder} +\mbox{\Hypertarget{structState_a77084e27de545c8c9326e317a8c1edff}\label{structState_a77084e27de545c8c9326e317a8c1edff}} +\index{State@{State}!Automatic@{Automatic}} +\index{Automatic@{Automatic}!State@{State}} +\doxysubsubsection{\texorpdfstring{Automatic}{Automatic}} +{\footnotesize\ttfamily uint8\+\_\+t State\+::\+Automatic} + + + +Speicher wird gesendet. + +\mbox{\Hypertarget{structState_a76bff5a7c3dd312851c50afccd017b33}\label{structState_a76bff5a7c3dd312851c50afccd017b33}} +\index{State@{State}!DahPressed@{DahPressed}} +\index{DahPressed@{DahPressed}!State@{State}} +\doxysubsubsection{\texorpdfstring{DahPressed}{DahPressed}} +{\footnotesize\ttfamily uint8\+\_\+t State\+::\+Dah\+Pressed} + + + +Dah Hebel betätigt. + +\mbox{\Hypertarget{structState_a0e3dcd5d2b54a5256fd71a1d956a2a0d}\label{structState_a0e3dcd5d2b54a5256fd71a1d956a2a0d}} +\index{State@{State}!DitPressed@{DitPressed}} +\index{DitPressed@{DitPressed}!State@{State}} +\doxysubsubsection{\texorpdfstring{DitPressed}{DitPressed}} +{\footnotesize\ttfamily uint8\+\_\+t State\+::\+Dit\+Pressed} + + + +Dit Hebel betätigt. + +\mbox{\Hypertarget{structState_a0b10c2ed83f730ab25f808ca4159e0a1}\label{structState_a0b10c2ed83f730ab25f808ca4159e0a1}} +\index{State@{State}!LastSymbolWasDit@{LastSymbolWasDit}} +\index{LastSymbolWasDit@{LastSymbolWasDit}!State@{State}} +\doxysubsubsection{\texorpdfstring{LastSymbolWasDit}{LastSymbolWasDit}} +{\footnotesize\ttfamily uint8\+\_\+t State\+::\+Last\+Symbol\+Was\+Dit} + + + +letztes Symbol war ein Punkt + +\mbox{\Hypertarget{structState_ac9b34cc2b3cb4f8ffe789278d9b76616}\label{structState_ac9b34cc2b3cb4f8ffe789278d9b76616}} +\index{State@{State}!SendStatus@{SendStatus}} +\index{SendStatus@{SendStatus}!State@{State}} +\doxysubsubsection{\texorpdfstring{SendStatus}{SendStatus}} +{\footnotesize\ttfamily uint8\+\_\+t State\+::\+Send\+Status} + + + +Status, ob Symbol gesendet wird. + +\mbox{\Hypertarget{structState_aaebbf5da7337abd9a683f6fd3d63087d}\label{structState_aaebbf5da7337abd9a683f6fd3d63087d}} +\index{State@{State}!SidetoneEnabled@{SidetoneEnabled}} +\index{SidetoneEnabled@{SidetoneEnabled}!State@{State}} +\doxysubsubsection{\texorpdfstring{SidetoneEnabled}{SidetoneEnabled}} +{\footnotesize\ttfamily uint8\+\_\+t State\+::\+Sidetone\+Enabled} + + + +Mithörton ein-\/ oder ausgeschaltet. + +\mbox{\Hypertarget{structState_a5e94242222ee7d6061fb36f5374f36b4}\label{structState_a5e94242222ee7d6061fb36f5374f36b4}} +\index{State@{State}!SidetoneOff@{SidetoneOff}} +\index{SidetoneOff@{SidetoneOff}!State@{State}} +\doxysubsubsection{\texorpdfstring{SidetoneOff}{SidetoneOff}} +{\footnotesize\ttfamily uint8\+\_\+t State\+::\+Sidetone\+Off} + + + +Mithörton an oder aus. + +\mbox{\Hypertarget{structState_a52ffc38efd1a9798d8d92014fe664e62}\label{structState_a52ffc38efd1a9798d8d92014fe664e62}} +\index{State@{State}!WpMChanged@{WpMChanged}} +\index{WpMChanged@{WpMChanged}!State@{State}} +\doxysubsubsection{\texorpdfstring{WpMChanged}{WpMChanged}} +{\footnotesize\ttfamily uint8\+\_\+t State\+::\+Wp\+MChanged} + + + +Geschwindigkeit geändert. + +\mbox{\Hypertarget{structState_a0589ba8e59b2a9a246ce8d14f783577b}\label{structState_a0589ba8e59b2a9a246ce8d14f783577b}} +\index{State@{State}!WriteEEprom@{WriteEEprom}} +\index{WriteEEprom@{WriteEEprom}!State@{State}} +\doxysubsubsection{\texorpdfstring{WriteEEprom}{WriteEEprom}} +{\footnotesize\ttfamily uint8\+\_\+t State\+::\+Write\+EEprom} + + + +nicht gespeicherte EEprom Werte + +\mbox{\Hypertarget{structState_acbc62fb74e564116927efe2f2147b8b9}\label{structState_acbc62fb74e564116927efe2f2147b8b9}} +\index{State@{State}!WriteMsgEEprom@{WriteMsgEEprom}} +\index{WriteMsgEEprom@{WriteMsgEEprom}!State@{State}} +\doxysubsubsection{\texorpdfstring{WriteMsgEEprom}{WriteMsgEEprom}} +{\footnotesize\ttfamily uint8\+\_\+t State\+::\+Write\+Msg\+EEprom} + + + +nicht gespeicherte Textnachrichten + +\mbox{\Hypertarget{structState_a0213cd5057520f3b652f3755dcdc0e70}\label{structState_a0213cd5057520f3b652f3755dcdc0e70}} +\index{State@{State}!WriteWpMEEprom@{WriteWpMEEprom}} +\index{WriteWpMEEprom@{WriteWpMEEprom}!State@{State}} +\doxysubsubsection{\texorpdfstring{WriteWpMEEprom}{WriteWpMEEprom}} +{\footnotesize\ttfamily uint8\+\_\+t State\+::\+Write\+Wp\+MEEprom} + + + +nicht gespeicherte Geschwindigkeit + + + +Die Dokumentation für diese Struktur wurde erzeugt aufgrund der Datei\+:\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{globals_8h}{globals.\+h}}\end{DoxyCompactItemize} diff --git a/Documents/Doxygen/latex/tabu_doxygen.sty b/Documents/Doxygen/latex/tabu_doxygen.sty new file mode 100644 index 0000000..60fd7e8 --- /dev/null +++ b/Documents/Doxygen/latex/tabu_doxygen.sty @@ -0,0 +1,2557 @@ +%% +%% This is file `tabu.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tabu.dtx (with options: `package') +%% +%% This is a generated file. +%% Copyright (FC) 2010-2011 - lppl +%% +%% tabu : 2011/02/26 v2.8 - tabu : Flexible LaTeX tabulars +%% +%% ********************************************************************************************** +%% \begin{tabu} { preamble } => default target: \linewidth or \linegoal +%% \begin{tabu} to { preamble } => target specified +%% \begin{tabu} spread { preamble } => target relative to the ``natural width'' +%% +%% tabu works in text and in math modes. +%% +%% X columns: automatic width adjustment + horizontal and vertical alignment +%% \begin{tabu} { X[4c] X[1c] X[-2ml] } +%% +%% Horizontal lines and / or leaders: +%% \hline\hline => double horizontal line +%% \firsthline\hline => for nested tabulars +%% \lasthline\hline => for nested tabulars +%% \tabucline[line spec]{column-column} => ``funny'' lines (dash/leader) +%% Automatic lines / leaders : +%% \everyrow{\hline\hline} +%% +%% Vertical lines and / or leaders: +%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt blue] } +%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt on 2pt off 4pt blue] } +%% +%% Fixed vertical spacing adjustment: +%% \extrarowheight= \extrarowdepth= +%% or: \extrarowsep= => may be prefixed by \global +%% +%% Dynamic vertical spacing adjustment: +%% \abovetabulinesep= \belowtabulinesep= +%% or: \tabulinesep= => may be prefixed by \global +%% +%% delarray.sty shortcuts: in math and text modes +%% \begin{tabu} .... \({ preamble }\) +%% +%% Algorithms reports: +%% \tracingtabu=1 \tracingtabu=2 +%% +%% ********************************************************************************************** +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% +%% This work consists of the main source file tabu.dtx +%% and the derived files +%% tabu.sty, tabu.pdf, tabu.ins +%% +%% tabu : Flexible LaTeX tabulars +%% lppl copyright 2010-2011 by FC +%% + +\NeedsTeXFormat{LaTeX2e}[2005/12/01] +\ProvidesPackage{tabu_doxygen}[2011/02/26 v2.8 - flexible LaTeX tabulars (FC), frozen version for doxygen] +\RequirePackage{array}[2008/09/09] +\RequirePackage{varwidth}[2009/03/30] +\AtEndOfPackage{\tabu@AtEnd \let\tabu@AtEnd \@undefined} +\let\tabu@AtEnd\@empty +\def\TMP@EnsureCode#1={% + \edef\tabu@AtEnd{\tabu@AtEnd + \catcode#1 \the\catcode#1}% + \catcode#1=% +}% \TMP@EnsureCode +\TMP@EnsureCode 33 = 12 % ! +\TMP@EnsureCode 58 = 12 % : (for siunitx) +\TMP@EnsureCode124 = 12 % | +\TMP@EnsureCode 36 = 3 % $ = math shift +\TMP@EnsureCode 38 = 4 % & = tab alignment character +\TMP@EnsureCode 32 = 10 % space +\TMP@EnsureCode 94 = 7 % ^ +\TMP@EnsureCode 95 = 8 % _ +%% Constants -------------------------------------------------------- +\newcount \c@taburow \def\thetaburow {\number\c@taburow} +\newcount \tabu@nbcols +\newcount \tabu@cnt +\newcount \tabu@Xcol +\let\tabu@start \@tempcnta +\let\tabu@stop \@tempcntb +\newcount \tabu@alloc \tabu@alloc=\m@ne +\newcount \tabu@nested +\def\tabu@alloc@{\global\advance\tabu@alloc \@ne \tabu@nested\tabu@alloc} +\newdimen \tabu@target +\newdimen \tabu@spreadtarget +\newdimen \tabu@naturalX +\newdimen \tabucolX +\let\tabu@DELTA \@tempdimc +\let\tabu@thick \@tempdima +\let\tabu@on \@tempdimb +\let\tabu@off \@tempdimc +\newdimen \tabu@Xsum +\newdimen \extrarowdepth +\newdimen \abovetabulinesep +\newdimen \belowtabulinesep +\newdimen \tabustrutrule \tabustrutrule \z@ +\newtoks \tabu@thebody +\newtoks \tabu@footnotes +\newsavebox \tabu@box +\newsavebox \tabu@arstrutbox +\newsavebox \tabu@hleads +\newsavebox \tabu@vleads +\newif \iftabu@colortbl +\newif \iftabu@siunitx +\newif \iftabu@measuring +\newif \iftabu@spread +\newif \iftabu@negcoef +\newif \iftabu@everyrow +\def\tabu@everyrowtrue {\global\let\iftabu@everyrow \iftrue} +\def\tabu@everyrowfalse{\global\let\iftabu@everyrow \iffalse} +\newif \iftabu@long +\newif \iftabuscantokens +\def\tabu@rescan {\tabu@verbatim \scantokens } +%% Utilities (for internal usage) ----------------------------------- +\def\tabu@gobblespace #1 {#1} +\def\tabu@gobbletoken #1#2{#1} +\def\tabu@gobbleX{\futurelet\@let@token \tabu@gobblex} +\def\tabu@gobblex{\if ^^J\noexpand\@let@token \expandafter\@gobble + \else\ifx \@sptoken\@let@token + \expandafter\tabu@gobblespace\expandafter\tabu@gobbleX + \fi\fi +}% \tabu@gobblex +\def\tabu@X{^^J} +{\obeyspaces +\global\let\tabu@spxiii= % saves an active space (for \ifx) +\gdef\tabu@@spxiii{ }} +\def\tabu@ifenvir {% only for \multicolumn + \expandafter\tabu@if@nvir\csname\@currenvir\endcsname +}% \tabu@ifenvir +\def\tabu@if@nvir #1{\csname @\ifx\tabu#1first\else + \ifx\longtabu#1first\else + second\fi\fi oftwo\endcsname +}% \tabu@ifenvir +\def\tabu@modulo #1#2{\numexpr\ifnum\numexpr#1=\z@ 0\else #1-(#1-(#2-1)/2)/(#2)*(#2)\fi} +{\catcode`\&=3 +\gdef\tabu@strtrim #1{% #1 = control sequence to trim + \ifodd 1\ifx #1\@empty \else \ifx #1\space \else 0\fi \fi + \let\tabu@c@l@r \@empty \let#1\@empty + \else \expandafter \tabu@trimspaces #1\@nnil + \fi +}% \tabu@strtrim +\gdef\tabu@trimspaces #1\@nnil{\let\tabu@c@l@r=#2\tabu@firstspace .#1& }% +\gdef\tabu@firstspace #1#2#3 &{\tabu@lastspace #2#3&} +\gdef\tabu@lastspace #1{\def #3{#1}% + \ifx #3\tabu@c@l@r \def\tabu@c@l@r{\protect\color{#1}}\expandafter\remove@to@nnil \fi + \tabu@trimspaces #1\@nnil} +}% \catcode +\def\tabu@sanitizearg #1#2{{% + \csname \ifcsname if@safe@actives\endcsname % + @safe@activestrue\else + relax\fi \endcsname + \edef#2{#1}\tabu@strtrim#2\@onelevel@sanitize#2% + \expandafter}\expandafter\def\expandafter#2\expandafter{#2}% +}% \tabu@sanitizearg +\def\tabu@textbar #1{\begingroup \endlinechar\m@ne \scantokens{\def\:{|}}% + \expandafter\endgroup \expandafter#1\:% !!! semi simple group !!! +}% \tabu@textbar +\def\tabu@everyrow@bgroup{\iftabu@everyrow \begingroup \else \noalign{\ifnum0=`}\fi \fi} +\def\tabu@everyrow@egroup{% + \iftabu@everyrow \expandafter \endgroup \the\toks@ + \else \ifnum0=`{\fi}% + \fi +}% \tabu@everyrow@egroup +\def\tabu@arstrut {\global\setbox\@arstrutbox \hbox{\vrule + height \arraystretch \dimexpr\ht\strutbox+\extrarowheight + depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth + width \z@}% +}% \tabu@arstrut +\def\tabu@rearstrut {% + \@tempdima \arraystretch\dimexpr\ht\strutbox+\extrarowheight \relax + \@tempdimb \arraystretch\dimexpr\dp\strutbox+\extrarowdepth \relax + \ifodd 1\ifdim \ht\@arstrutbox=\@tempdima + \ifdim \dp\@arstrutbox=\@tempdimb 0 \fi\fi + \tabu@mkarstrut + \fi +}% \tabu@rearstrut +\def\tabu@@DBG #1{\ifdim\tabustrutrule>\z@ \color{#1}\fi} +\def\tabu@DBG@arstrut {\global\setbox\@arstrutbox + \hbox to\z@{\hbox to\z@{\hss + {\tabu@DBG{cyan}\vrule + height \arraystretch \dimexpr\ht\strutbox+\extrarowheight + depth \z@ + width \tabustrutrule}\kern-\tabustrutrule + {\tabu@DBG{pink}\vrule + height \z@ + depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth + width \tabustrutrule}}}% +}% \tabu@DBG@arstrut +\def\tabu@save@decl{\toks\count@ \expandafter{\the\toks\expandafter\count@ + \@nextchar}}% +\def\tabu@savedecl{\ifcat$\d@llarend\else + \let\save@decl \tabu@save@decl \fi % no inversion of tokens in text mode +}% \tabu@savedecl +\def\tabu@finalstrut #1{\unskip\ifhmode\nobreak\fi\vrule height\z@ depth\z@ width\z@} +\newcommand*\tabuDisableCommands {\g@addto@macro\tabu@trialh@@k } +\let\tabu@trialh@@k \@empty +\def\tabu@nowrite #1#{{\afterassignment}\toks@} +\let\tabu@write\write +\let\tabu@immediate\immediate +\def\tabu@WRITE{\begingroup + \def\immediate\write{\aftergroup\endgroup + \tabu@immediate\tabu@write}% +}% \tabu@WRITE +\expandafter\def\expandafter\tabu@GenericError\expandafter{% + \expandafter\tabu@WRITE\GenericError} +\def\tabu@warn{\tabu@WRITE\PackageWarning{tabu}} +\def\tabu@noxfootnote [#1]{\@gobble} +\def\tabu@nocolor #1#{\@gobble} +\newcommand*\tabu@norowcolor[2][]{} +\def\tabu@maybesiunitx #1{\def\tabu@temp{#1}% + \futurelet\@let@token \tabu@m@ybesiunitx} +\def\tabu@m@ybesiunitx #1{\def\tabu@m@ybesiunitx {% + \ifx #1\@let@token \let\tabu@cellleft \@empty \let\tabu@cellright \@empty \fi + \tabu@temp}% \tabu@m@ybesiunitx +}\expandafter\tabu@m@ybesiunitx \csname siunitx_table_collect_begin:Nn\endcsname +\def\tabu@celllalign@def #1{\def\tabu@celllalign{\tabu@maybesiunitx{#1}}}% +%% Fixed vertical spacing adjustment: \extrarowsep ------------------ +\newcommand*\extrarowsep{\edef\tabu@C@extra{\the\numexpr\tabu@C@extra+1}% + \iftabu@everyrow \aftergroup\tabu@Gextra + \else \aftergroup\tabu@n@Gextra + \fi + \@ifnextchar={\tabu@gobbletoken\tabu@extra} \tabu@extra +}% \extrarowsep +\def\tabu@extra {\@ifnextchar_% + {\tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}} + {\ifx ^\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}}% + \else \let\tabu@temp \@empty + \afterassignment \tabu@setextrasep \extrarowdepth + \fi \tabu@temp}% +}% \tabu@extra +\def\tabu@setextra #1#2{\def\tabu@temp{\tabu@extr@#1#2}\afterassignment\tabu@temp#2} +\def\tabu@extr@ #1#2{\@ifnextchar^% + {\tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}} + {\ifx _\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}}% + \else \let\tabu@temp \@empty + \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth + \fi \tabu@temp}% +}% \tabu@extr@ +\def\tabu@setextrasep {\extrarowheight=\extrarowdepth + \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth +}% \tabu@setextrasep +\def\tabu@Gextra{\ifx \tabu@G@extra\@empty \else {\tabu@Rextra}\fi} +\def\tabu@n@Gextra{\ifx \tabu@G@extra\@empty \else \noalign{\tabu@Rextra}\fi} +\def\tabu@Rextra{\tabu@Grestore \tabu@G@extra \tabu@C@extra} +\let\tabu@C@extra \z@ +\let\tabu@G@extra \@empty +%% Dynamic vertical spacing adjustment: \tabulinesep ---------------- +\newcommand*\tabulinesep{\edef\tabu@C@linesep{\the\numexpr\tabu@C@linesep+1}% + \iftabu@everyrow \aftergroup\tabu@Glinesep + \else \aftergroup\tabu@n@Glinesep + \fi + \@ifnextchar={\tabu@gobbletoken\tabu@linesep} \tabu@linesep +}% \tabulinesep +\def\tabu@linesep {\@ifnextchar_% + {\tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}} + {\ifx ^\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}}% + \else \let\tabu@temp \@empty + \afterassignment \tabu@setlinesep \abovetabulinesep + \fi \tabu@temp}% +}% \tabu@linesep +\def\tabu@setsep #1#2{\def\tabu@temp{\tabu@sets@p#1#2}\afterassignment\tabu@temp#2} +\def\tabu@sets@p #1#2{\@ifnextchar^% + {\tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}} + {\ifx _\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}}% + \else \let\tabu@temp \@empty + \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep + \fi \tabu@temp}% +}% \tabu@sets@p +\def\tabu@setlinesep {\belowtabulinesep=\abovetabulinesep + \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep +}% \tabu@setlinesep +\def\tabu@Glinesep{\ifx \tabu@G@linesep\@empty \else {\tabu@Rlinesep}\fi} +\def\tabu@n@Glinesep{\ifx \tabu@G@linesep\@empty \else \noalign{\tabu@Rlinesep}\fi} +\def\tabu@Rlinesep{\tabu@Grestore \tabu@G@linesep \tabu@C@linesep} +\let\tabu@C@linesep \z@ +\let\tabu@G@linesep \@empty +%% \global\extrarowsep and \global\tabulinesep ------------------- +\def\tabu@Gsave #1#2#3#4{\xdef#1{#1% + \toks#2{\toks\the\currentgrouplevel{\global#3\the#3\global#4\the#4}}}% +}% \tabu@Gsave +\def\tabu@Grestore#1#2{% + \toks#2{}#1\toks\currentgrouplevel\expandafter{\expandafter}\the\toks#2\relax + \ifcat$\the\toks\currentgrouplevel$\else + \global\let#1\@empty \global\let#2\z@ + \the\toks\currentgrouplevel + \fi +}% \tabu@Grestore +%% Setting code for every row --------------------------------------- +\newcommand*\everyrow{\tabu@everyrow@bgroup + \tabu@start \z@ \tabu@stop \z@ \tabu@evrstartstop +}% \everyrow +\def\tabu@evrstartstop {\@ifnextchar^% + {\afterassignment \tabu@evrstartstop \tabu@stop=}% + {\ifx ^\@let@token + \afterassignment\tabu@evrstartstop \tabu@start=% + \else \afterassignment\tabu@everyr@w \toks@ + \fi}% +}% \tabu@evrstartstop +\def\tabu@everyr@w {% + \xdef\tabu@everyrow{% + \noexpand\tabu@everyrowfalse + \let\noalign \relax + \noexpand\tabu@rowfontreset + \iftabu@colortbl \noexpand\tabu@rc@ \fi % \taburowcolors + \let\noexpand\tabu@docline \noexpand\tabu@docline@evr + \the\toks@ + \noexpand\tabu@evrh@@k + \noexpand\tabu@rearstrut + \global\advance\c@taburow \@ne}% + \iftabu@everyrow \toks@\expandafter + {\expandafter\def\expandafter\tabu@evr@L\expandafter{\the\toks@}\ignorespaces}% + \else \xdef\tabu@evr@G{\the\toks@}% + \fi + \tabu@everyrow@egroup +}% \tabu@everyr@w +\def\tabu@evr {\def\tabu@evrh@@k} % for internal use only +\tabu@evr{} +%% line style and leaders ------------------------------------------- +\newcommand*\newtabulinestyle [1]{% + {\@for \@tempa :=#1\do{\expandafter\tabu@newlinestyle \@tempa==\@nil}}% +}% \newtabulinestyle +\def\tabu@newlinestyle #1=#2=#3\@nil{\tabu@getline {#2}% + \tabu@sanitizearg {#1}\@tempa + \ifodd 1\ifx \@tempa\@empty \ifdefined\tabu@linestyle@ 0 \fi\fi + \global\expandafter\let + \csname tabu@linestyle@\@tempa \endcsname =\tabu@thestyle \fi +}% \tabu@newlinestyle +\newcommand*\tabulinestyle [1]{\tabu@everyrow@bgroup \tabu@getline{#1}% + \iftabu@everyrow + \toks@\expandafter{\expandafter \def \expandafter + \tabu@ls@L\expandafter{\tabu@thestyle}\ignorespaces}% + \gdef\tabu@ls@{\tabu@ls@L}% + \else + \global\let\tabu@ls@G \tabu@thestyle + \gdef\tabu@ls@{\tabu@ls@G}% + \fi + \tabu@everyrow@egroup +}% \tabulinestyle +\newcommand*\taburulecolor{\tabu@everyrow@bgroup \tabu@textbar \tabu@rulecolor} +\def\tabu@rulecolor #1{\toks@{}% + \def\tabu@temp #1##1#1{\tabu@ruledrsc{##1}}\@ifnextchar #1% + \tabu@temp + \tabu@rulearc +}% \tabu@rulecolor +\def\tabu@ruledrsc #1{\edef\tabu@temp{#1}\tabu@strtrim\tabu@temp + \ifx \tabu@temp\@empty \def\tabu@temp{\tabu@rule@drsc@ {}{}}% + \else \edef\tabu@temp{\noexpand\tabu@rule@drsc@ {}{\tabu@temp}}% + \fi + \tabu@temp +}% \tabu@ruledrsc@ +\def\tabu@ruledrsc@ #1#{\tabu@rule@drsc@ {#1}} +\def\tabu@rule@drsc@ #1#2{% + \iftabu@everyrow + \ifx \\#1#2\\\toks@{\let\CT@drsc@ \relax}% + \else \toks@{\def\CT@drsc@{\color #1{#2}}}% + \fi + \else + \ifx \\#1#2\\\global\let\CT@drsc@ \relax + \else \gdef\CT@drsc@{\color #1{#2}}% + \fi + \fi + \tabu@rulearc +}% \tabu@rule@drsc@ +\def\tabu@rulearc #1#{\tabu@rule@arc@ {#1}} +\def\tabu@rule@arc@ #1#2{% + \iftabu@everyrow + \ifx \\#1#2\\\toks@\expandafter{\the\toks@ \def\CT@arc@{}}% + \else \toks@\expandafter{\the\toks@ \def\CT@arc@{\color #1{#2}}}% + \fi + \toks@\expandafter{\the\toks@ + \let\tabu@arc@L \CT@arc@ + \let\tabu@drsc@L \CT@drsc@ + \ignorespaces}% + \else + \ifx \\#1#2\\\gdef\CT@arc@{}% + \else \gdef\CT@arc@{\color #1{#2}}% + \fi + \global\let\tabu@arc@G \CT@arc@ + \global\let\tabu@drsc@G \CT@drsc@ + \fi + \tabu@everyrow@egroup +}% \tabu@rule@arc@ +\def\taburowcolors {\tabu@everyrow@bgroup \@testopt \tabu@rowcolors 1} +\def\tabu@rowcolors [#1]#2#{\tabu@rowc@lors{#1}{#2}} +\def\tabu@rowc@lors #1#2#3{% + \toks@{}\@defaultunits \count@ =\number0#2\relax \@nnil + \@defaultunits \tabu@start =\number0#1\relax \@nnil + \ifnum \count@<\tw@ \count@=\tw@ \fi + \advance\tabu@start \m@ne + \ifnum \tabu@start<\z@ \tabu@start \z@ \fi + \tabu@rowcolorseries #3\in@..\in@ \@nnil +}% \tabu@rowcolors +\def\tabu@rowcolorseries #1..#2\in@ #3\@nnil {% + \ifx \in@#1\relax + \iftabu@everyrow \toks@{\def\tabu@rc@{}\let\tabu@rc@L \tabu@rc@}% + \else \gdef\tabu@rc@{}\global\let\tabu@rc@G \tabu@rc@ + \fi + \else + \ifx \\#2\\\tabu@rowcolorserieserror \fi + \tabu@sanitizearg{#1}\tabu@temp + \tabu@sanitizearg{#2}\@tempa + \advance\count@ \m@ne + \iftabu@everyrow + \def\tabu@rc@ ##1##2##3##4{\def\tabu@rc@{% + \ifnum ##2=\c@taburow + \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{##3}{##4}\fi + \ifnum \c@taburow<##2 \else + \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\z@ + \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \rowcolor{tabu@rc@\the\tabu@nested}\fi}% + }\edef\x{\noexpand\tabu@rc@ {\the\count@} + {\the\tabu@start} + {\tabu@temp} + {\@tempa}% + }\x + \toks@\expandafter{\expandafter\def\expandafter\tabu@rc@\expandafter{\tabu@rc@}}% + \toks@\expandafter{\the\toks@ \let\tabu@rc@L \tabu@rc@ \ignorespaces}% + \else % inside \noalign + \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{\tabu@temp}{\@tempa}% + \expandafter\resetcolorseries\expandafter[\the\count@]{tabu@rcseries@\the\tabu@nested}% + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \let\noalign \relax \rowcolor{tabu@rc@\the\tabu@nested}% + \def\tabu@rc@ ##1##2{\gdef\tabu@rc@{% + \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\@ne + \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \rowcolor{tabu@rc@\the\tabu@nested}}% + }\edef\x{\noexpand\tabu@rc@{\the\count@}{\the\c@taburow}}\x + \global\let\tabu@rc@G \tabu@rc@ + \fi + \fi + \tabu@everyrow@egroup +}% \tabu@rowcolorseries +\tabuDisableCommands {\let\tabu@rc@ \@empty } +\def\tabu@rowcolorserieserror {\PackageError{tabu} + {Invalid syntax for \string\taburowcolors + \MessageBreak Please look at the documentation!}\@ehd +}% \tabu@rowcolorserieserror +\newcommand*\tabureset {% + \tabulinesep=\z@ \extrarowsep=\z@ \extratabsurround=\z@ + \tabulinestyle{}\everyrow{}\taburulecolor||{}\taburowcolors{}% +}% \tabureset +%% Parsing the line styles ------------------------------------------ +\def\tabu@getline #1{\begingroup + \csname \ifcsname if@safe@actives\endcsname % + @safe@activestrue\else + relax\fi \endcsname + \edef\tabu@temp{#1}\tabu@sanitizearg{#1}\@tempa + \let\tabu@thestyle \relax + \ifcsname tabu@linestyle@\@tempa \endcsname + \edef\tabu@thestyle{\endgroup + \def\tabu@thestyle{\expandafter\noexpand + \csname tabu@linestyle@\@tempa\endcsname}% + }\tabu@thestyle + \else \expandafter\tabu@definestyle \tabu@temp \@nil + \fi +}% \tabu@getline +\def\tabu@definestyle #1#2\@nil {\endlinechar \m@ne \makeatletter + \tabu@thick \maxdimen \tabu@on \maxdimen \tabu@off \maxdimen + \let\tabu@c@lon \@undefined \let\tabu@c@loff \@undefined + \ifodd 1\ifcat .#1\else\ifcat\relax #1\else 0\fi\fi % catcode 12 or non expandable cs + \def\tabu@temp{\tabu@getparam{thick}}% + \else \def\tabu@temp{\tabu@getparam{thick}\maxdimen}% + \fi + {% + \let\tabu@ \relax + \def\:{\obeyspaces \tabu@oXIII \tabu@commaXIII \edef\:}% (space active \: happy ;-)) + \scantokens{\:{\tabu@temp #1#2 \tabu@\tabu@}}% + \expandafter}\expandafter + \def\expandafter\:\expandafter{\:}% line spec rewritten now ;-) + \def\;{\def\:}% + \scantokens\expandafter{\expandafter\;\expandafter{\:}}% space is now inactive (catcode 10) + \let\tabu@ \tabu@getcolor \:% all arguments are ready now ;-) + \ifdefined\tabu@c@lon \else \let\tabu@c@lon\@empty \fi + \ifx \tabu@c@lon\@empty \def\tabu@c@lon{\CT@arc@}\fi + \ifdefined\tabu@c@loff \else \let\tabu@c@loff \@empty \fi + \ifdim \tabu@on=\maxdimen \ifdim \tabu@off<\maxdimen + \tabu@on \tabulineon \fi\fi + \ifdim \tabu@off=\maxdimen \ifdim \tabu@on<\maxdimen + \tabu@off \tabulineoff \fi\fi + \ifodd 1\ifdim \tabu@off=\maxdimen \ifdim \tabu@on=\maxdimen 0 \fi\fi + \in@true % + \else \in@false % + \fi + \ifdim\tabu@thick=\maxdimen \def\tabu@thick{\arrayrulewidth}% + \else \edef\tabu@thick{\the\tabu@thick}% + \fi + \edef \tabu@thestyle ##1##2{\endgroup + \def\tabu@thestyle{% + \ifin@ \noexpand\tabu@leadersstyle {\tabu@thick} + {\the\tabu@on}{##1} + {\the\tabu@off}{##2}% + \else \noexpand\tabu@rulesstyle + {##1\vrule width \tabu@thick}% + {##1\leaders \hrule height \tabu@thick \hfil}% + \fi}% + }\expandafter \expandafter + \expandafter \tabu@thestyle \expandafter + \expandafter \expandafter + {\expandafter\tabu@c@lon\expandafter}\expandafter{\tabu@c@loff}% +}% \tabu@definestyle +{\catcode`\O=\active \lccode`\O=`\o \catcode`\,=\active + \lowercase{\gdef\tabu@oXIII {\catcode`\o=\active \let O=\tabu@oxiii}} + \gdef\tabu@commaXIII {\catcode`\,=\active \let ,=\space} +}% \catcode +\def\tabu@oxiii #1{% + \ifcase \ifx n#1\z@ \else + \ifx f#1\@ne\else + \tw@ \fi\fi + \expandafter\tabu@onxiii + \or \expandafter\tabu@ofxiii + \else o% + \fi#1}% +\def\tabu@onxiii #1#2{% + \ifcase \ifx !#2\tw@ \else + \ifcat.\noexpand#2\z@ \else + \ifx \tabu@spxiii#2\@ne\else + \tw@ \fi\fi\fi + \tabu@getparam{on}#2\expandafter\@gobble + \or \expandafter\tabu@onxiii % (space is active) + \else o\expandafter\@firstofone + \fi{#1#2}}% +\def\tabu@ofxiii #1#2{% + \ifx #2f\expandafter\tabu@offxiii + \else o\expandafter\@firstofone + \fi{#1#2}} +\def\tabu@offxiii #1#2{% + \ifcase \ifx !#2\tw@ \else + \ifcat.\noexpand#2\z@ \else + \ifx\tabu@spxiii#2\@ne \else + \tw@ \fi\fi\fi + \tabu@getparam{off}#2\expandafter\@gobble + \or \expandafter\tabu@offxiii % (space is active) + \else o\expandafter\@firstofone + \fi{#1#2}} +\def\tabu@getparam #1{\tabu@ \csname tabu@#1\endcsname=} +\def\tabu@getcolor #1{% \tabu@ <- \tabu@getcolor after \edef + \ifx \tabu@#1\else % no more spec + \let\tabu@theparam=#1\afterassignment \tabu@getc@l@r #1\fi +}% \tabu@getcolor +\def\tabu@getc@l@r #1\tabu@ {% + \def\tabu@temp{#1}\tabu@strtrim \tabu@temp + \ifx \tabu@temp\@empty + \else%\ifcsname \string\color@\tabu@temp \endcsname % if the color exists + \ifx \tabu@theparam \tabu@off \let\tabu@c@loff \tabu@c@l@r + \else \let\tabu@c@lon \tabu@c@l@r + \fi + %\else \tabu@warncolour{\tabu@temp}% + \fi%\fi + \tabu@ % next spec +}% \tabu@getc@l@r +\def\tabu@warncolour #1{\PackageWarning{tabu} + {Color #1 is not defined. Default color used}% +}% \tabu@warncolour +\def\tabu@leadersstyle #1#2#3#4#5{\def\tabu@leaders{{#1}{#2}{#3}{#4}{#5}}% + \ifx \tabu@leaders\tabu@leaders@G \else + \tabu@LEADERS{#1}{#2}{#3}{#4}{#5}\fi +}% \tabu@leadersstyle +\def\tabu@rulesstyle #1#2{\let\tabu@leaders \@undefined + \gdef\tabu@thevrule{#1}\gdef\tabu@thehrule{#2}% +}% \tabu@rulesstyle +%% The leaders boxes ------------------------------------------------ +\def\tabu@LEADERS #1#2#3#4#5{%% width, dash, dash color, gap, gap color + {\let\color \tabu@color % => during trials -> \color = \tabu@nocolor + {% % but the leaders boxes should have colors ! + \def\@therule{\vrule}\def\@thick{height}\def\@length{width}% + \def\@box{\hbox}\def\@unbox{\unhbox}\def\@elt{\wd}% + \def\@skip{\hskip}\def\@ss{\hss}\def\tabu@leads{\tabu@hleads}% + \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% + \global\let\tabu@thehleaders \tabu@theleaders + }% + {% + \def\@therule{\hrule}\def\@thick{width}\def\@length{height}% + \def\@box{\vbox}\def\@unbox{\unvbox}\def\@elt{\ht}% + \def\@skip{\vskip}\def\@ss{\vss}\def\tabu@leads{\tabu@vleads}% + \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% + \global\let\tabu@thevleaders \tabu@theleaders + }% + \gdef\tabu@leaders@G{{#1}{#2}{#3}{#4}{#5}}% + }% +}% \tabu@LEADERS +\def\tabu@therule #1#2{\@therule \@thick#1\@length\dimexpr#2/2 \@depth\z@} +\def\tabu@l@@d@rs #1#2#3#4#5{%% width, dash, dash color, gap, gap color + \global\setbox \tabu@leads=\@box{% + {#3\tabu@therule{#1}{#2}}% + \ifx\\#5\\\@skip#4\else{#5\tabu@therule{#1}{#4*2}}\fi + {#3\tabu@therule{#1}{#2}}}% + \global\setbox\tabu@leads=\@box to\@elt\tabu@leads{\@ss + {#3\tabu@therule{#1}{#2}}\@unbox\tabu@leads}% + \edef\tabu@theleaders ##1{\def\noexpand\tabu@theleaders {% + {##1\tabu@therule{#1}{#2}}% + \xleaders \copy\tabu@leads \@ss + \tabu@therule{0pt}{-#2}{##1\tabu@therule{#1}{#2}}}% + }\tabu@theleaders{#3}% +}% \tabu@l@@d@rs +%% \tabu \endtabu \tabu* \longtabu \endlongtabu \longtabu* ---------- +\newcommand*\tabu {\tabu@longfalse + \ifmmode \def\tabu@ {\array}\def\endtabu {\endarray}% + \else \def\tabu@ {\tabu@tabular}\def\endtabu {\endtabular}\fi + \expandafter\let\csname tabu*\endcsname \tabu + \expandafter\def\csname endtabu*\endcsname{\endtabu}% + \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget +}% {tabu} +\let\tabu@tabular \tabular % +\expandafter\def\csname tabu*\endcsname{\tabuscantokenstrue \tabu} +\newcommand*\longtabu {\tabu@longtrue + \ifmmode\PackageError{tabu}{longtabu not allowed in math mode}\fi + \def\tabu@{\longtable}\def\endlongtabu{\endlongtable}% + \LTchunksize=\@M + \expandafter\let\csname tabu*\endcsname \tabu + \expandafter\def\csname endlongtabu*\endcsname{\endlongtabu}% + \let\LT@startpbox \tabu@LT@startpbox % \everypar{ array struts } + \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget +}% {longtabu} +\expandafter\def\csname longtabu*\endcsname{\tabuscantokenstrue \longtabu} +\def\tabu@nolongtabu{\PackageError{tabu} + {longtabu requires the longtable package}\@ehd} +%% Read the target and then : \tabular or \@array ------------------ +\def\tabu@settarget {\futurelet\@let@token \tabu@sett@rget } +\def\tabu@sett@rget {\tabu@target \z@ + \ifcase \ifx \bgroup\@let@token \z@ \else + \ifx \@sptoken\@let@token \@ne \else + \if t\@let@token \tw@ \else + \if s\@let@token \thr@@\else + \z@\fi\fi\fi\fi + \expandafter\tabu@begin + \or \expandafter\tabu@gobblespace\expandafter\tabu@settarget + \or \expandafter\tabu@to + \or \expandafter\tabu@spread + \fi +}% \tabu@sett@rget +\def\tabu@to to{\def\tabu@halignto{to}\tabu@gettarget} +\def\tabu@spread spread{\tabu@spreadtrue\def\tabu@halignto{spread}\tabu@gettarget} +\def\tabu@gettarget {\afterassignment\tabu@linegoaltarget \tabu@target } +\def\tabu@linegoaltarget {\futurelet\tabu@temp \tabu@linegoalt@rget } +\def\tabu@linegoalt@rget {% + \ifx \tabu@temp\LNGL@setlinegoal + \LNGL@setlinegoal \expandafter \@firstoftwo \fi % @gobbles \LNGL@setlinegoal + \tabu@begin +}% \tabu@linegoalt@rget +\def\tabu@begin #1#{% + \iftabu@measuring \expandafter\tabu@nestedmeasure \fi + \ifdim \tabu@target=\z@ \let\tabu@halignto \@empty + \else \edef\tabu@halignto{\tabu@halignto\the\tabu@target}% + \fi + \@testopt \tabu@tabu@ \tabu@aligndefault #1\@nil +}% \tabu@begin +\long\def\tabu@tabu@ [#1]#2\@nil #3{\tabu@setup + \def\tabu@align {#1}\def\tabu@savedpream{\NC@find #3}% + \tabu@ [\tabu@align ]#2{#3\tabu@rewritefirst }% +}% \tabu@tabu@ +\def\tabu@nestedmeasure {% + \ifodd 1\iftabu@spread \else \ifdim\tabu@target=\z@ \else 0 \fi\fi\relax + \tabu@spreadtrue + \else \begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}% + \expandafter\tabu@collectbody\expandafter\tabu@quickrule + \expandafter\endgroup + \fi +}% \tabu@nestedmeasure +\def\tabu@quickrule {\indent\vrule height\z@ depth\z@ width\tabu@target} +%% \tabu@setup \tabu@init \tabu@indent +\def\tabu@setup{\tabu@alloc@ + \ifcase \tabu@nested + \ifmmode \else \iftabu@spread\else \ifdim\tabu@target=\z@ + \let\tabu@afterendpar \par + \fi\fi\fi + \def\tabu@aligndefault{c}\tabu@init \tabu@indent + \else % + \def\tabu@aligndefault{t}\let\tabudefaulttarget \linewidth + \fi + \let\tabu@thetarget \tabudefaulttarget \let\tabu@restored \@undefined + \edef\tabu@NC@list{\the\NC@list}\NC@list{\NC@do \tabu@rewritefirst}% + \everycr{}\let\@startpbox \tabu@startpbox % for nested tabu inside longtabu... + \let\@endpbox \tabu@endpbox % idem " " " " " " + \let\@tabarray \tabu@tabarray % idem " " " " " " + \tabu@setcleanup \tabu@setreset +}% \tabu@setup +\def\tabu@init{\tabu@starttimer \tabu@measuringfalse + \edef\tabu@hfuzz {\the\dimexpr\hfuzz+1sp}\global\tabu@footnotes{}% + \let\firsthline \tabu@firsthline \let\lasthline \tabu@lasthline + \let\firstline \tabu@firstline \let\lastline \tabu@lastline + \let\hline \tabu@hline \let\@xhline \tabu@xhline + \let\color \tabu@color \let\@arstrutbox \tabu@arstrutbox + \iftabu@colortbl\else\let\LT@@hline \tabu@LT@@hline \fi + \tabu@trivlist % + \let\@footnotetext \tabu@footnotetext \let\@xfootnotetext \tabu@xfootnotetext + \let\@xfootnote \tabu@xfootnote \let\centering \tabu@centering + \let\raggedright \tabu@raggedright \let\raggedleft \tabu@raggedleft + \let\tabudecimal \tabu@tabudecimal \let\Centering \tabu@Centering + \let\RaggedRight \tabu@RaggedRight \let\RaggedLeft \tabu@RaggedLeft + \let\justifying \tabu@justifying \let\rowfont \tabu@rowfont + \let\fbox \tabu@fbox \let\color@b@x \tabu@color@b@x + \let\tabu@@everycr \everycr \let\tabu@@everypar \everypar + \let\tabu@prepnext@tokORI \prepnext@tok\let\prepnext@tok \tabu@prepnext@tok + \let\tabu@multicolumnORI\multicolumn \let\multicolumn \tabu@multicolumn + \let\tabu@startpbox \@startpbox % for nested tabu inside longtabu pfff !!! + \let\tabu@endpbox \@endpbox % idem " " " " " " " + \let\tabu@tabarray \@tabarray % idem " " " " " " " + \tabu@adl@fix \let\endarray \tabu@endarray % colortbl & arydshln (delarray) + \iftabu@colortbl\CT@everycr\expandafter{\expandafter\iftabu@everyrow \the\CT@everycr \fi}\fi +}% \tabu@init +\def\tabu@indent{% correction for indentation + \ifdim \parindent>\z@\ifx \linewidth\tabudefaulttarget + \everypar\expandafter{% + \the\everypar\everypar\expandafter{\the\everypar}% + \setbox\z@=\lastbox + \ifdim\wd\z@>\z@ \edef\tabu@thetarget + {\the\dimexpr -\wd\z@+\tabudefaulttarget}\fi + \box\z@}% + \fi\fi +}% \tabu@indent +\def\tabu@setcleanup {% saves last global assignments + \ifodd 1\ifmmode \else \iftabu@long \else 0\fi\fi\relax + \def\tabu@aftergroupcleanup{% + \def\tabu@aftergroupcleanup{\aftergroup\tabu@cleanup}}% + \else + \def\tabu@aftergroupcleanup{% + \aftergroup\aftergroup\aftergroup\tabu@cleanup + \let\tabu@aftergroupcleanup \relax}% + \fi + \let\tabu@arc@Gsave \tabu@arc@G + \let\tabu@arc@G \tabu@arc@L % + \let\tabu@drsc@Gsave \tabu@drsc@G + \let\tabu@drsc@G \tabu@drsc@L % + \let\tabu@ls@Gsave \tabu@ls@G + \let\tabu@ls@G \tabu@ls@L % + \let\tabu@rc@Gsave \tabu@rc@G + \let\tabu@rc@G \tabu@rc@L % + \let\tabu@evr@Gsave \tabu@evr@G + \let\tabu@evr@G \tabu@evr@L % + \let\tabu@celllalign@save \tabu@celllalign + \let\tabu@cellralign@save \tabu@cellralign + \let\tabu@cellleft@save \tabu@cellleft + \let\tabu@cellright@save \tabu@cellright + \let\tabu@@celllalign@save \tabu@@celllalign + \let\tabu@@cellralign@save \tabu@@cellralign + \let\tabu@@cellleft@save \tabu@@cellleft + \let\tabu@@cellright@save \tabu@@cellright + \let\tabu@rowfontreset@save \tabu@rowfontreset + \let\tabu@@rowfontreset@save\tabu@@rowfontreset + \let\tabu@rowfontreset \@empty + \edef\tabu@alloc@save {\the\tabu@alloc}% restore at \tabu@reset + \edef\c@taburow@save {\the\c@taburow}% + \edef\tabu@naturalX@save {\the\tabu@naturalX}% + \let\tabu@naturalXmin@save \tabu@naturalXmin + \let\tabu@naturalXmax@save \tabu@naturalXmax + \let\tabu@mkarstrut@save \tabu@mkarstrut + \edef\tabu@clarstrut{% + \extrarowheight \the\dimexpr \ht\@arstrutbox-\ht\strutbox \relax + \extrarowdepth \the\dimexpr \dp\@arstrutbox-\dp\strutbox \relax + \let\noexpand\@arraystretch \@ne \noexpand\tabu@rearstrut}% +}% \tabu@setcleanup +\def\tabu@cleanup {\begingroup + \globaldefs\@ne \tabu@everyrowtrue + \let\tabu@arc@G \tabu@arc@Gsave + \let\CT@arc@ \tabu@arc@G + \let\tabu@drsc@G \tabu@drsc@Gsave + \let\CT@drsc@ \tabu@drsc@G + \let\tabu@ls@G \tabu@ls@Gsave + \let\tabu@ls@ \tabu@ls@G + \let\tabu@rc@G \tabu@rc@Gsave + \let\tabu@rc@ \tabu@rc@G + \let\CT@do@color \relax + \let\tabu@evr@G \tabu@evr@Gsave + \let\tabu@celllalign \tabu@celllalign@save + \let\tabu@cellralign \tabu@cellralign@save + \let\tabu@cellleft \tabu@cellleft@save + \let\tabu@cellright \tabu@cellright@save + \let\tabu@@celllalign \tabu@@celllalign@save + \let\tabu@@cellralign \tabu@@cellralign@save + \let\tabu@@cellleft \tabu@@cellleft@save + \let\tabu@@cellright \tabu@@cellright@save + \let\tabu@rowfontreset \tabu@rowfontreset@save + \let\tabu@@rowfontreset \tabu@@rowfontreset@save + \tabu@naturalX =\tabu@naturalX@save + \let\tabu@naturalXmax \tabu@naturalXmax@save + \let\tabu@naturalXmin \tabu@naturalXmin@save + \let\tabu@mkarstrut \tabu@mkarstrut@save + \c@taburow =\c@taburow@save + \ifcase \tabu@nested \tabu@alloc \m@ne\fi + \endgroup % + \ifcase \tabu@nested + \the\tabu@footnotes \global\tabu@footnotes{}% + \tabu@afterendpar \tabu@elapsedtime + \fi + \tabu@clarstrut + \everyrow\expandafter {\tabu@evr@G}% +}% \tabu@cleanup +\let\tabu@afterendpar \relax +\def\tabu@setreset {% + \edef\tabu@savedparams {% \relax for \tabu@message@save + \ifmmode \col@sep \the\arraycolsep + \else \col@sep \the\tabcolsep \fi \relax + \arrayrulewidth \the\arrayrulewidth \relax + \doublerulesep \the\doublerulesep \relax + \extratabsurround \the\extratabsurround \relax + \extrarowheight \the\extrarowheight \relax + \extrarowdepth \the\extrarowdepth \relax + \abovetabulinesep \the\abovetabulinesep \relax + \belowtabulinesep \the\belowtabulinesep \relax + \def\noexpand\arraystretch{\arraystretch}% + \ifdefined\minrowclearance \minrowclearance\the\minrowclearance\relax\fi}% + \begingroup + \@temptokena\expandafter{\tabu@savedparams}% => only for \savetabu / \usetabu + \ifx \tabu@arc@L\relax \else \tabu@setsave \tabu@arc@L \fi + \ifx \tabu@drsc@L\relax \else \tabu@setsave \tabu@drsc@L \fi + \tabu@setsave \tabu@ls@L \tabu@setsave \tabu@evr@L + \expandafter \endgroup \expandafter + \def\expandafter\tabu@saved@ \expandafter{\the\@temptokena + \let\tabu@arc@G \tabu@arc@L + \let\tabu@drsc@G \tabu@drsc@L + \let\tabu@ls@G \tabu@ls@L + \let\tabu@rc@G \tabu@rc@L + \let\tabu@evr@G \tabu@evr@L}% + \def\tabu@reset{\tabu@savedparams + \tabu@everyrowtrue \c@taburow \z@ + \let\CT@arc@ \tabu@arc@L + \let\CT@drsc@ \tabu@drsc@L + \let\tabu@ls@ \tabu@ls@L + \let\tabu@rc@ \tabu@rc@L + \global\tabu@alloc \tabu@alloc@save + \everyrow\expandafter{\tabu@evr@L}}% +}% \tabu@reset +\def\tabu@setsave #1{\expandafter\tabu@sets@ve #1\@nil{#1}} +\long\def\tabu@sets@ve #1\@nil #2{\@temptokena\expandafter{\the\@temptokena \def#2{#1}}} +%% The Rewriting Process ------------------------------------------- +\def\tabu@newcolumntype #1{% + \expandafter\tabu@new@columntype + \csname NC@find@\string#1\expandafter\endcsname + \csname NC@rewrite@\string#1\endcsname + {#1}% +}% \tabu@newcolumntype +\def\tabu@new@columntype #1#2#3{% + \def#1##1#3{\NC@{##1}}% + \let#2\relax \newcommand*#2% +}% \tabu@new@columntype +\def\tabu@privatecolumntype #1{% + \expandafter\tabu@private@columntype + \csname NC@find@\string#1\expandafter\endcsname + \csname NC@rewrite@\string#1\expandafter\endcsname + \csname tabu@NC@find@\string#1\expandafter\endcsname + \csname tabu@NC@rewrite@\string#1\endcsname + {#1}% +}% \tabu@privatecolumntype +\def\tabu@private@columntype#1#2#3#4{% + \g@addto@macro\tabu@privatecolumns{\let#1#3\let#2#4}% + \tabu@new@columntype#3#4% +}% \tabu@private@columntype +\let\tabu@privatecolumns \@empty +\newcommand*\tabucolumn [1]{\expandafter \def \expandafter + \tabu@highprioritycolumns\expandafter{\tabu@highprioritycolumns + \NC@do #1}}% +\let\tabu@highprioritycolumns \@empty +%% The | ``column'' : rewriting process -------------------------- +\tabu@privatecolumntype |{\tabu@rewritevline} +\newcommand*\tabu@rewritevline[1][]{\tabu@vlinearg{#1}% + \expandafter \NC@find \tabu@rewritten} +\def\tabu@lines #1{% + \ifx|#1\else \tabu@privatecolumntype #1{\tabu@rewritevline}\fi + \NC@list\expandafter{\the\NC@list \NC@do #1}% +}% \tabu@lines@ +\def\tabu@vlinearg #1{% + \ifx\\#1\\\def\tabu@thestyle {\tabu@ls@}% + \else\tabu@getline {#1}% + \fi + \def\tabu@rewritten ##1{\def\tabu@rewritten{!{##1\tabu@thevline}}% + }\expandafter\tabu@rewritten\expandafter{\tabu@thestyle}% + \expandafter \tabu@keepls \tabu@thestyle \@nil +}% \tabu@vlinearg +\def\tabu@keepls #1\@nil{% + \ifcat $\@cdr #1\@nil $% + \ifx \relax#1\else + \ifx \tabu@ls@#1\else + \let#1\relax + \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer + \tabu@savels\noexpand#1}\fi\fi\fi +}% \tabu@keepls +\def\tabu@thevline {\begingroup + \ifdefined\tabu@leaders + \setbox\@tempboxa=\vtop to\dimexpr + \ht\@arstrutbox+\dp\@arstrutbox{{\tabu@thevleaders}}% + \ht\@tempboxa=\ht\@arstrutbox \dp\@tempboxa=\dp\@arstrutbox + \box\@tempboxa + \else + \tabu@thevrule + \fi \endgroup +}% \tabu@thevline +\def\tabu@savels #1{% + \expandafter\let\csname\string#1\endcsname #1% + \expandafter\def\expandafter\tabu@reset\expandafter{\tabu@reset + \tabu@resetls#1}}% +\def\tabu@resetls #1{\expandafter\let\expandafter#1\csname\string#1\endcsname}% +%% \multicolumn inside tabu environment ----------------------------- +\tabu@newcolumntype \tabu@rewritemulticolumn{% + \aftergroup \tabu@endrewritemulticolumn % after \@mkpream group + \NC@list{\NC@do *}\tabu@textbar \tabu@lines + \tabu@savedecl + \tabu@privatecolumns + \NC@list\expandafter{\the\expandafter\NC@list \tabu@NC@list}% + \let\tabu@savels \relax + \NC@find +}% \tabu@rewritemulticolumn +\def\tabu@endrewritemulticolumn{\gdef\tabu@mkpreambuffer{}\endgroup} +\def\tabu@multicolumn{\tabu@ifenvir \tabu@multic@lumn \tabu@multicolumnORI} +\long\def\tabu@multic@lumn #1#2#3{\multispan{#1}\begingroup + \tabu@everyrowtrue + \NC@list{\NC@do \tabu@rewritemulticolumn}% + \expandafter\@gobbletwo % gobbles \multispan{#1} + \tabu@multicolumnORI{#1}{\tabu@rewritemulticolumn #2}% + {\iftabuscantokens \tabu@rescan \else \expandafter\@firstofone \fi + {#3}}% +}% \tabu@multic@lumn +%% The X column(s): rewriting process ----------------------------- +\tabu@privatecolumntype X[1][]{\begingroup \tabu@siunitx{\endgroup \tabu@rewriteX {#1}}} +\def\tabu@nosiunitx #1{#1{}{}\expandafter \NC@find \tabu@rewritten } +\def\tabu@siunitx #1{\@ifnextchar \bgroup + {\tabu@rewriteX@Ss{#1}} + {\tabu@nosiunitx{#1}}} +\def\tabu@rewriteX@Ss #1#2{\@temptokena{}% + \@defaultunits \let\tabu@temp =#2\relax\@nnil + \ifodd 1\ifx S\tabu@temp \else \ifx s\tabu@temp \else 0 \fi\fi + \def\NC@find{\def\NC@find >####1####2<####3\relax{#1 {####1}{####3}% + }\expandafter\NC@find \the\@temptokena \relax + }\expandafter\NC@rewrite@S \@gobble #2\relax + \else \tabu@siunitxerror + \fi + \expandafter \NC@find \tabu@rewritten +}% \tabu@rewriteX@Ss +\def\tabu@siunitxerror {\PackageError{tabu}{Not a S nor s column ! + \MessageBreak X column can only embed siunitx S or s columns}\@ehd +}% \tabu@siunitxerror +\def\tabu@rewriteX #1#2#3{\tabu@Xarg {#1}{#2}{#3}% + \iftabu@measuring + \else \tabu@measuringtrue % first X column found in the preamble + \let\@halignto \relax \let\tabu@halignto \relax + \iftabu@spread \tabu@spreadtarget \tabu@target \tabu@target \z@ + \else \tabu@spreadtarget \z@ \fi + \ifdim \tabu@target=\z@ + \setlength\tabu@target \tabu@thetarget + \tabu@message{\tabu@message@defaulttarget}% + \else \tabu@message{\tabu@message@target}\fi + \fi +}% \tabu@rewriteX +\def\tabu@rewriteXrestore #1#2#3{\let\@halignto \relax + \def\tabu@rewritten{l}} +\def\tabu@Xarg #1#2#3{% + \advance\tabu@Xcol \@ne \let\tabu@Xlcr \@empty + \let\tabu@Xdisp \@empty \let\tabu@Xmath \@empty + \ifx\\#1\\% + \def\tabu@rewritten{p}\tabucolX \p@ % + \else + \let\tabu@rewritten \@empty \let\tabu@temp \@empty \tabucolX \z@ + \tabu@Xparse {}#1\relax + \fi + \tabu@Xrewritten{#2}{#3}% +}% \tabu@Xarg +\def\tabu@Xparse #1{\futurelet\@let@token \tabu@Xtest} +\expandafter\def\expandafter\tabu@Xparsespace\space{\tabu@Xparse{}} +\def\tabu@Xtest{% + \ifcase \ifx \relax\@let@token \z@ \else + \if ,\@let@token \m@ne\else + \if p\@let@token 1\else + \if m\@let@token 2\else + \if b\@let@token 3\else + \if l\@let@token 4\else + \if c\@let@token 5\else + \if r\@let@token 6\else + \if j\@let@token 7\else + \if L\@let@token 8\else + \if C\@let@token 9\else + \if R\@let@token 10\else + \if J\@let@token 11\else + \ifx \@sptoken\@let@token 12\else + \if .\@let@token 13\else + \if -\@let@token 13\else + \ifcat $\@let@token 14\else + 15\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax + \or \tabu@Xtype {p}% + \or \tabu@Xtype {m}% + \or \tabu@Xtype {b}% + \or \tabu@Xalign \raggedright\relax + \or \tabu@Xalign \centering\relax + \or \tabu@Xalign \raggedleft\relax + \or \tabu@Xalign \tabu@justify\relax + \or \tabu@Xalign \RaggedRight\raggedright + \or \tabu@Xalign \Centering\centering + \or \tabu@Xalign \RaggedLeft\raggedleft + \or \tabu@Xalign \justifying\tabu@justify + \or \expandafter \tabu@Xparsespace + \or \expandafter \tabu@Xcoef + \or \expandafter \tabu@Xm@th + \or \tabu@Xcoef{}% + \else\expandafter \tabu@Xparse + \fi +}% \tabu@Xtest +\def\tabu@Xalign #1#2{% + \ifx \tabu@Xlcr\@empty \else \PackageWarning{tabu} + {Duplicate horizontal alignment specification}\fi + \ifdefined#1\def\tabu@Xlcr{#1}\let#1\relax + \else \def\tabu@Xlcr{#2}\let#2\relax\fi + \expandafter\tabu@Xparse +}% \tabu@Xalign +\def\tabu@Xtype #1{% + \ifx \tabu@rewritten\@empty \else \PackageWarning{tabu} + {Duplicate vertical alignment specification}\fi + \def\tabu@rewritten{#1}\expandafter\tabu@Xparse +}% \tabu@Xtype +\def\tabu@Xcoef#1{\edef\tabu@temp{\tabu@temp#1}% + \afterassignment\tabu@Xc@ef \tabu@cnt\number\if-#10\fi +}% \tabu@Xcoef +\def\tabu@Xc@ef{\advance\tabucolX \tabu@temp\the\tabu@cnt\p@ + \tabu@Xparse{}% +}% \tabu@Xc@ef +\def\tabu@Xm@th #1{\futurelet \@let@token \tabu@Xd@sp} +\def\tabu@Xd@sp{\let\tabu@Xmath=$% + \ifx $\@let@token \def\tabu@Xdisp{\displaystyle}% + \expandafter\tabu@Xparse + \else \expandafter\tabu@Xparse\expandafter{\expandafter}% + \fi +}% \tabu@Xd@sp +\def\tabu@Xrewritten {% + \ifx \tabu@rewritten\@empty \def\tabu@rewritten{p}\fi + \ifdim \tabucolX<\z@ \tabu@negcoeftrue + \else\ifdim \tabucolX=\z@ \tabucolX \p@ + \fi\fi + \edef\tabu@temp{{\the\tabu@Xcol}{\tabu@strippt\tabucolX}}% + \edef\tabu@Xcoefs{\tabu@Xcoefs \tabu@ \tabu@temp}% + \edef\tabu@rewritten ##1##2{\def\noexpand\tabu@rewritten{% + >{\tabu@Xlcr \ifx$\tabu@Xmath$\tabu@Xdisp\fi ##1}% + \tabu@rewritten {\tabu@hsize \tabu@temp}% + <{##2\ifx$\tabu@Xmath$\fi}}% + }\tabu@rewritten +}% \tabu@Xrewritten +\def\tabu@hsize #1#2{% + \ifdim #2\p@<\z@ + \ifdim \tabucolX=\maxdimen \tabu@wd{#1}\else + \ifdim \tabu@wd{#1}<-#2\tabucolX \tabu@wd{#1}\else -#2\tabucolX\fi + \fi + \else #2\tabucolX + \fi +}% \tabu@hsize +%% \usetabu and \preamble: rewriting process --------------------- +\tabu@privatecolumntype \usetabu [1]{% + \ifx\\#1\\\tabu@saveerr{}\else + \@ifundefined{tabu@saved@\string#1} + {\tabu@saveerr{#1}} + {\let\tabu@rewriteX \tabu@rewriteXrestore + \csname tabu@saved@\string#1\expandafter\endcsname\expandafter\@ne}% + \fi +}% \NC@rewrite@\usetabu +\tabu@privatecolumntype \preamble [1]{% + \ifx\\#1\\\tabu@saveerr{}\else + \@ifundefined{tabu@saved@\string#1} + {\tabu@saveerr{#1}} + {\csname tabu@saved@\string#1\expandafter\endcsname\expandafter\z@}% + \fi +}% \NC@rewrite@\preamble +%% Controlling the rewriting process ------------------------------- +\tabu@newcolumntype \tabu@rewritefirst{% + \iftabu@long \aftergroup \tabu@longpream % + \else \aftergroup \tabu@pream + \fi + \let\tabu@ \relax \let\tabu@hsize \relax + \let\tabu@Xcoefs \@empty \let\tabu@savels \relax + \tabu@Xcol \z@ \tabu@cnt \tw@ + \gdef\tabu@mkpreambuffer{\tabu@{}}\tabu@measuringfalse + \global\setbox\@arstrutbox \box\@arstrutbox + \NC@list{\NC@do *}\tabu@textbar \tabu@lines + \NC@list\expandafter{\the\NC@list \NC@do X}% + \iftabu@siunitx % + \NC@list\expandafter{\the\NC@list \NC@do S\NC@do s}\fi + \NC@list\expandafter{\the\expandafter\NC@list \tabu@highprioritycolumns}% + \expandafter\def\expandafter\tabu@NC@list\expandafter{% + \the\expandafter\NC@list \tabu@NC@list}% % * | X S + \NC@list\expandafter{\expandafter \NC@do \expandafter\usetabu + \expandafter \NC@do \expandafter\preamble + \the\NC@list \NC@do \tabu@rewritemiddle + \NC@do \tabu@rewritelast}% + \tabu@savedecl + \tabu@privatecolumns + \edef\tabu@prev{\the\@temptokena}\NC@find \tabu@rewritemiddle +}% NC@rewrite@\tabu@rewritefirst +\tabu@newcolumntype \tabu@rewritemiddle{% + \edef\tabu@temp{\the\@temptokena}\NC@find \tabu@rewritelast +}% \NC@rewrite@\tabu@rewritemiddle +\tabu@newcolumntype \tabu@rewritelast{% + \ifx \tabu@temp\tabu@prev \advance\tabu@cnt \m@ne + \NC@list\expandafter{\tabu@NC@list \NC@do \tabu@rewritemiddle + \NC@do \tabu@rewritelast}% + \else \let\tabu@prev\tabu@temp + \fi + \ifcase \tabu@cnt \expandafter\tabu@endrewrite + \else \expandafter\NC@find \expandafter\tabu@rewritemiddle + \fi +}% \NC@rewrite@\tabu@rewritelast +%% Choosing the strategy -------------------------------------------- +\def\tabu@endrewrite {% + \let\tabu@temp \NC@find + \ifx \@arrayright\relax \let\@arrayright \@empty \fi + \count@=% + \ifx \@finalstrut\tabu@finalstrut \z@ % outer in mode 0 print + \iftabu@measuring + \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer + \tabu@target \csname tabu@\the\tabu@nested.T\endcsname + \tabucolX \csname tabu@\the\tabu@nested.X\endcsname + \edef\@halignto {\ifx\@arrayright\@empty to\tabu@target\fi}}% + \fi + \else\iftabu@measuring 4 % X columns + \xdef\tabu@mkpreambuffer{\tabu@{\tabu@mkpreambuffer + \tabu@target \the\tabu@target + \tabu@spreadtarget \the\tabu@spreadtarget}% + \def\noexpand\tabu@Xcoefs{\tabu@Xcoefs}% + \edef\tabu@halignto{\ifx \@arrayright\@empty to\tabu@target\fi}}% + \let\tabu@Xcoefs \relax + \else\ifcase\tabu@nested \thr@@ % outer, no X + \global\let\tabu@afterendpar \relax + \else \@ne % inner, no X, outer in mode 1 or 2 + \fi + \ifdefined\tabu@usetabu + \else \ifdim\tabu@target=\z@ + \else \let\tabu@temp \tabu@extracolsep + \fi\fi + \fi + \fi + \xdef\tabu@mkpreambuffer{\count@ \the\count@ \tabu@mkpreambuffer}% + \tabu@temp +}% \tabu@endrewrite +\def\tabu@extracolsep{\@defaultunits \expandafter\let + \expandafter\tabu@temp \expandafter=\the\@temptokena \relax\@nnil + \ifx \tabu@temp\@sptoken + \expandafter\tabu@gobblespace \expandafter\tabu@extracolsep + \else + \edef\tabu@temp{\noexpand\NC@find + \if |\noexpand\tabu@temp @% + \else\if !\noexpand\tabu@temp @% + \else !% + \fi\fi + {\noexpand\extracolsep\noexpand\@flushglue}}% + \fi + \tabu@temp +}% \tabu@extrac@lsep +%% Implementing the strategy ---------------------------------------- +\long\def\tabu@pream #1\@preamble {% + \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup + \NC@list\expandafter {\tabu@NC@list}% in case of nesting... + \ifdefined\tabu@usetabu \tabu@usetabu \tabu@target \z@ \fi + \let\tabu@savedpreamble \@preamble + \global\let\tabu@elapsedtime \relax + \tabu@thebody ={#1\tabu@aftergroupcleanup}% + \tabu@thebody =\expandafter{\the\expandafter\tabu@thebody + \@preamble}% + \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) + \tabu@select +}% \tabu@pream +\long\def\tabu@longpream #1\LT@bchunk #2\LT@bchunk{% + \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup + \NC@list\expandafter {\tabu@NC@list}% in case of nesting... + \let\tabu@savedpreamble \@preamble + \global\let\tabu@elapsedtime \relax + \tabu@thebody ={#1\LT@bchunk #2\tabu@aftergroupcleanup \LT@bchunk}% + \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) + \tabu@select +}% \tabu@longpream +\def\tabu@select {% + \ifnum\tabu@nested>\z@ \tabuscantokensfalse \fi + \ifnum \count@=\@ne \iftabu@measuring \count@=\tw@ \fi\fi + \ifcase \count@ + \global\let\tabu@elapsedtime \relax + \tabu@seteverycr + \expandafter \tabuthepreamble % vertical adjustment (inherited from outer) + \or % exit in vertical measure + struts per cell because no X and outer in mode 3 + \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \tabu@seteverycr + \expandafter \tabuthepreamble + \or % exit without measure because no X and outer in mode 4 + \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty + \tabu@seteverycr + \expandafter \tabuthepreamble + \else % needs trials + \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty + \tabu@savecounters + \expandafter \tabu@setstrategy + \fi +}% \tabu@select +\def\tabu@@ {\gdef\tabu@mkpreambuffer} +%% Protections to set up before trials ------------------------------ +\def\tabu@setstrategy {\begingroup % + \tabu@trialh@@k \tabu@cnt \z@ % number of trials + \hbadness \@M \let\hbadness \@tempcnta + \hfuzz \maxdimen \let\hfuzz \@tempdima + \let\write \tabu@nowrite\let\GenericError \tabu@GenericError + \let\savetabu \@gobble \let\tabudefaulttarget \linewidth + \let\@footnotetext \@gobble \let\@xfootnote \tabu@xfootnote + \let\color \tabu@nocolor\let\rowcolor \tabu@norowcolor + \let\tabu@aftergroupcleanup \relax % only after the last trial + \tabu@mkpreambuffer + \ifnum \count@>\thr@@ \let\@halignto \@empty \tabucolX@init + \def\tabu@lasttry{\m@ne\p@}\fi + \begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}\iftabuscantokens \endlinechar=10 \obeyspaces \fi % + \tabu@collectbody \tabu@strategy % +}% \tabu@setstrategy +\def\tabu@savecounters{% + \def\@elt ##1{\csname c@##1\endcsname\the\csname c@##1\endcsname}% + \edef\tabu@clckpt {\begingroup \globaldefs=\@ne \cl@@ckpt \endgroup}\let\@elt \relax +}% \tabu@savecounters +\def\tabucolX@init {% \tabucolX <= \tabu@target / (sum coefs > 0) + \dimen@ \z@ \tabu@Xsum \z@ \tabucolX \z@ \let\tabu@ \tabu@Xinit \tabu@Xcoefs + \ifdim \dimen@>\z@ + \@tempdima \dimexpr \tabu@target *\p@/\dimen@ + \tabu@hfuzz\relax + \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi + \fi +}% \tabucolX@init +\def\tabu@Xinit #1#2{\tabu@Xcol #1 \advance \tabu@Xsum + \ifdim #2\p@>\z@ #2\p@ \advance\dimen@ #2\p@ + \else -#2\p@ \tabu@negcoeftrue + \@tempdima \dimexpr \tabu@target*\p@/\dimexpr-#2\p@\relax \relax + \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi + \tabu@wddef{#1}{0pt}% + \fi +}% \tabu@Xinit +%% Collecting the environment body ---------------------------------- +\long\def\tabu@collectbody #1#2\end #3{% + \edef\tabu@stack{\tabu@pushbegins #2\begin\end\expandafter\@gobble\tabu@stack}% + \ifx \tabu@stack\@empty + \toks@\expandafter{\expandafter\tabu@thebody\expandafter{\the\toks@ #2}% + \def\tabu@end@envir{\end{#3}}% + \iftabuscantokens + \iftabu@long \def\tabu@endenvir {\end{#3}\tabu@gobbleX}% + \else \def\tabu@endenvir {\let\endarray \@empty + \end{#3}\tabu@gobbleX}% + \fi + \else \def\tabu@endenvir {\end{#3}}\fi}% + \let\tabu@collectbody \tabu@endofcollect + \else\def\tabu@temp{#3}% + \ifx \tabu@temp\@empty \toks@\expandafter{\the\toks@ #2\end }% + \else \ifx\tabu@temp\tabu@@spxiii \toks@\expandafter{\the\toks@ #2\end #3}% + \else \ifx\tabu@temp\tabu@X \toks@\expandafter{\the\toks@ #2\end #3}% + \else \toks@\expandafter{\the\toks@ #2\end{#3}}% + \fi\fi\fi + \fi + \tabu@collectbody{#1}% +}% \tabu@collectbody +\long\def\tabu@pushbegins#1\begin#2{\ifx\end#2\else b\expandafter\tabu@pushbegins\fi}% +\def\tabu@endofcollect #1{\ifnum0=`{}\fi + \expandafter\endgroup \the\toks@ #1% +}% \tabu@endofcollect +%% The trials: switching between strategies ------------------------- +\def\tabu@strategy {\relax % stops \count@ assignment ! + \ifcase\count@ % case 0 = print with vertical adjustment (outer is finished) + \expandafter \tabu@endoftrials + \or % case 1 = exit in vertical measure (outer in mode 3) + \expandafter\xdef\csname tabu@\the\tabu@nested.T\endcsname{\the\tabu@target}% + \expandafter\xdef\csname tabu@\the\tabu@nested.X\endcsname{\the\tabucolX}% + \expandafter \tabu@endoftrials + \or % case 2 = exit with a rule replacing the table (outer in mode 4) + \expandafter \tabu@quickend + \or % case 3 = outer is in mode 3 because of no X + \begingroup + \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \expandafter \tabu@measuring + \else % case 4 = horizontal measure + \begingroup + \global\let\tabu@elapsedtime \tabu@message@etime + \long\def\multicolumn##1##2##3{\multispan{##1}}% + \let\tabu@startpboxORI \@startpbox + \iftabu@spread + \def\tabu@naturalXmax {\z@}% + \let\tabu@naturalXmin \tabu@naturalXmax + \tabu@evr{\global\tabu@naturalX \z@}% + \let\@startpbox \tabu@startpboxmeasure + \else\iftabu@negcoef + \let\@startpbox \tabu@startpboxmeasure + \else \let\@startpbox \tabu@startpboxquick + \fi\fi + \expandafter \tabu@measuring + \fi +}% \tabu@strategy +\def\tabu@measuring{\expandafter \tabu@trial \expandafter + \count@ \the\count@ \tabu@endtrial +}% \tabu@measuring +\def\tabu@trial{\iftabu@long \tabu@longtrial \else \tabu@shorttrial \fi} +\def\tabu@shorttrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr + \ifx \tabu@savecounters\relax \else + \let\tabu@savecounters \relax \tabu@clckpt \fi + $\iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi + \expandafter{\expandafter \tabuthepreamble + \the\tabu@thebody + \csname tabu@adl@endtrial\endcsname + \endarray}$\egroup % got \tabu@box +}% \tabu@shorttrial +\def\tabu@longtrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr + \ifx \tabu@savecounters\relax \else + \let\tabu@savecounters \relax \tabu@clckpt \fi + \iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi + \expandafter{\expandafter \tabuthepreamble + \the\tabu@thebody + \tabuendlongtrial}\egroup % got \tabu@box +}% \tabu@longtrial +\def\tabuendlongtrial{% no @ allowed for \scantokens + \LT@echunk \global\setbox\@ne \hbox{\unhbox\@ne}\kern\wd\@ne + \LT@get@widths +}% \tabuendlongtrial +\def\tabu@adl@endtrial{% + \crcr \noalign{\global\adl@ncol \tabu@nbcols}}% anything global is crap, junky and fails ! +\def\tabu@seteverycr {\tabu@reset + \everycr \expandafter{\the\everycr \tabu@everycr}% + \let\everycr \tabu@noeverycr % +}% \tabu@seteverycr +\def\tabu@noeverycr{{\aftergroup\tabu@restoreeverycr \afterassignment}\toks@} +\def\tabu@restoreeverycr {\let\everycr \tabu@@everycr} +\def\tabu@everycr {\iftabu@everyrow \noalign{\tabu@everyrow}\fi} +\def\tabu@endoftrials {% + \iftabuscantokens \expandafter\@firstoftwo + \else \expandafter\@secondoftwo + \fi + {\expandafter \tabu@closetrialsgroup \expandafter + \tabu@rescan \expandafter{% + \expandafter\tabuthepreamble + \the\expandafter\tabu@thebody + \iftabu@long \else \endarray \fi}} + {\expandafter\tabu@closetrialsgroup \expandafter + \tabuthepreamble + \the\tabu@thebody}% + \tabu@endenvir % Finish ! +}% \tabu@endoftrials +\def\tabu@closetrialsgroup {% + \toks@\expandafter{\tabu@endenvir}% + \edef\tabu@bufferX{\endgroup + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target + \tabu@cnt \the\tabu@cnt + \def\noexpand\tabu@endenvir{\the\toks@}% + %Quid de \@halignto = \tabu@halignto ?? + }% \tabu@bufferX + \tabu@bufferX + \ifcase\tabu@nested % print out (outer in mode 0) + \global\tabu@cnt \tabu@cnt + \tabu@evr{\tabu@verticaldynamicadjustment}% + \tabu@celllalign@def{\everypar{}}\let\tabu@cellralign \@empty + \let\@finalstrut \tabu@finalstrut + \else % vertical measure of nested tabu + \tabu@evr{\tabu@verticalinit}% + \tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \fi + \tabu@clckpt \let\@halignto \tabu@halignto + \let\@halignto \@empty + \tabu@seteverycr + \ifdim \tabustrutrule>\z@ \ifnum\tabu@nested=\z@ + \setbox\@arstrutbox \box\voidb@x % force \@arstrutbox to be rebuilt (visible struts) + \fi\fi +}% \tabu@closetrialsgroup +\def\tabu@quickend {\expandafter \endgroup \expandafter + \tabu@target \the\tabu@target \tabu@quickrule + \let\endarray \relax \tabu@endenvir +}% \tabu@quickend +\def\tabu@endtrial {\relax % stops \count@ assignment ! + \ifcase \count@ \tabu@err % case 0 = impossible here + \or \tabu@err % case 1 = impossible here + \or \tabu@err % case 2 = impossible here + \or % case 3 = outer goes into mode 0 + \def\tabu@bufferX{\endgroup}\count@ \z@ + \else % case 4 = outer goes into mode 3 + \iftabu@spread \tabu@spreadarith % inner into mode 1 (outer in mode 3) + \else \tabu@arith % or 2 (outer in mode 4) + \fi + \count@=% + \ifcase\tabu@nested \thr@@ % outer goes into mode 3 + \else\iftabu@measuring \tw@ % outer is in mode 4 + \else \@ne % outer is in mode 3 + \fi\fi + \edef\tabu@bufferX{\endgroup + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target}% + \fi + \expandafter \tabu@bufferX \expandafter + \count@ \the\count@ \tabu@strategy +}% \tabu@endtrial +\def\tabu@err{\errmessage{(tabu) Internal impossible error! (\count@=\the\count@)}} +%% The algorithms: compute the widths / stop or go on --------------- +\def\tabu@arithnegcoef {% + \@tempdima \z@ \dimen@ \z@ \let\tabu@ \tabu@arith@negcoef \tabu@Xcoefs +}% \tabu@arithnegcoef +\def\tabu@arith@negcoef #1#2{% + \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ % saturated by definition + \advance\@tempdima #2\tabucolX + \else + \ifdim -#2\tabucolX <\tabu@wd{#1}% c_i X < natural width <= \tabu@target-> saturated + \advance\dimen@ -#2\p@ + \advance\@tempdima -#2\tabucolX + \else + \advance\@tempdima \tabu@wd{#1}% natural width <= c_i X => neutralised + \ifdim \tabu@wd{#1}<\tabu@target \else % neutralised + \advance\dimen@ -#2\p@ % saturated (natural width = tabu@target) + \fi + \fi + \fi +}% \tabu@arith@negcoef +\def\tabu@givespace #1#2{% here \tabu@DELTA < \z@ + \ifdim \@tempdima=\z@ + \tabu@wddef{#1}{\the\dimexpr -\tabu@DELTA*\p@/\tabu@Xsum}% + \else + \tabu@wddef{#1}{\the\dimexpr \tabu@hsize{#1}{#2} + *(\p@ -\tabu@DELTA*\p@/\@tempdima)/\p@\relax}% + \fi +}% \tabu@givespace +\def\tabu@arith {\advance\tabu@cnt \@ne + \ifnum \tabu@cnt=\@ne \tabu@message{\tabu@titles}\fi + \tabu@arithnegcoef + \@tempdimb \dimexpr \wd\tabu@box -\@tempdima \relax % + \tabu@DELTA = \dimexpr \wd\tabu@box - \tabu@target \relax + \tabu@message{\tabu@message@arith}% + \ifdim \tabu@DELTA <\tabu@hfuzz + \ifdim \tabu@DELTA<\z@ % wd (tabu)<\tabu@target ? + \let\tabu@ \tabu@givespace \tabu@Xcoefs + \advance\@tempdima \@tempdimb \advance\@tempdima -\tabu@DELTA % for message + \else % already converged: nothing to do but nearly impossible... + \fi + \tabucolX \maxdimen + \tabu@measuringfalse + \else % need for narrower X columns + \tabucolX =\dimexpr (\@tempdima -\tabu@DELTA) *\p@/\tabu@Xsum \relax + \tabu@measuringtrue + \@whilesw \iftabu@measuring\fi {% + \advance\tabu@cnt \@ne + \tabu@arithnegcoef + \tabu@DELTA =\dimexpr \@tempdima+\@tempdimb -\tabu@target \relax % always < 0 here + \tabu@message{\tabu@header + \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ + \tabu@msgalign \@tempdima+\@tempdimb { }{ }{ }{ }{ }\@@ + \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ + \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ + \ifdim -\tabu@DELTA<\tabu@hfuzz \tabu@spaces target ok\else + \tabu@msgalign \dimexpr -\tabu@DELTA *\p@/\dimen@ {}{}{}{}{}\@@ + \fi}% + \ifdim -\tabu@DELTA<\tabu@hfuzz + \advance\@tempdima \@tempdimb % for message + \tabu@measuringfalse + \else + \advance\tabucolX \dimexpr -\tabu@DELTA *\p@/\dimen@ \relax + \fi + }% + \fi + \tabu@message{\tabu@message@reached}% + \edef\tabu@bufferX{\endgroup \tabu@cnt \the\tabu@cnt + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target}% +}% \tabu@arith +\def\tabu@spreadarith {% + \dimen@ \z@ \@tempdima \tabu@naturalXmax \let\tabu@ \tabu@spread@arith \tabu@Xcoefs + \edef\tabu@naturalXmin {\the\dimexpr\tabu@naturalXmin*\dimen@/\p@}% + \@tempdimc =\dimexpr \wd\tabu@box -\tabu@naturalXmax+\tabu@naturalXmin \relax + \iftabu@measuring + \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax + \edef\tabu@bufferX{\endgroup \tabucolX \the\tabucolX \tabu@target\the\tabu@target}% + \else + \tabu@message{\tabu@message@spreadarith}% + \ifdim \dimexpr \@tempdimc+\tabu@spreadtarget >\tabu@target + \tabu@message{(tabu) spread + \ifdim \@tempdimc>\tabu@target useless here: default target used% + \else too large: reduced to fit default target\fi.}% + \else + \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax + \tabu@message{(tabu) spread: New target set to \the\tabu@target^^J}% + \fi + \begingroup \let\tabu@wddef \@gobbletwo + \@tempdimb \@tempdima + \tabucolX@init + \tabu@arithnegcoef + \wd\tabu@box =\dimexpr \wd\tabu@box +\@tempdima-\@tempdimb \relax + \expandafter\endgroup \expandafter\tabucolX \the\tabucolX + \tabu@arith + \fi +}% \tabu@spreadarith +\def\tabu@spread@arith #1#2{% + \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ + \else \advance\@tempdima \tabu@wd{#1}\relax + \fi +}% \tabu@spread@arith +%% Reporting in the .log file --------------------------------------- +\def\tabu@message@defaulttarget{% + \ifnum\tabu@nested=\z@^^J(tabu) Default target: + \ifx\tabudefaulttarget\linewidth \string\linewidth + \ifdim \tabu@thetarget=\linewidth \else + -\the\dimexpr\linewidth-\tabu@thetarget\fi = + \else\ifx\tabudefaulttarget\linegoal\string\linegoal= + \fi\fi + \else (tabu) Default target (nested): \fi + \the\tabu@target \on@line + \ifnum\tabu@nested=\z@ , page \the\c@page\fi} +\def\tabu@message@target {^^J(tabu) Target specified: + \the\tabu@target \on@line, page \the\c@page} +\def\tabu@message@arith {\tabu@header + \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ + \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{ }\@@ + \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ + \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ + \ifdim \tabu@DELTA<\tabu@hfuzz giving space\else + \tabu@msgalign \dimexpr (\@tempdima-\tabu@DELTA) *\p@/\tabu@Xsum -\tabucolX {}{}{}{}{}\@@ + \fi +}% \tabu@message@arith +\def\tabu@message@spreadarith {\tabu@spreadheader + \tabu@msgalign \tabu@spreadtarget { }{ }{ }{ }{}\@@ + \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{}\@@ + \tabu@msgalign -\tabu@naturalXmax { }{}{}{}{}\@@ + \tabu@msgalign \tabu@naturalXmin { }{ }{ }{ }{}\@@ + \tabu@msgalign \ifdim \dimexpr\@tempdimc>\tabu@target \tabu@target + \else \@tempdimc+\tabu@spreadtarget \fi + {}{}{}{}{}\@@} +\def\tabu@message@negcoef #1#2{ + \tabu@spaces\tabu@spaces\space * #1. X[\rem@pt#2]: + \space width = \tabu@wd {#1} + \expandafter\string\csname tabu@\the\tabu@nested.W\number#1\endcsname + \ifdim -\tabu@pt#2\tabucolX<\tabu@target + < \number-\rem@pt#2 X + = \the\dimexpr -\tabu@pt#2\tabucolX \relax + \else + <= \the\tabu@target\space < \number-\rem@pt#2 X\fi} +\def\tabu@message@reached{\tabu@header + ******* Reached Target: + hfuzz = \tabu@hfuzz\on@line\space *******} +\def\tabu@message@etime{\edef\tabu@stoptime{\the\pdfelapsedtime}% + \tabu@message{(tabu)\tabu@spaces Time elapsed during measure: + \the\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax sec + \the\numexpr\numexpr(\tabu@stoptime-\tabu@starttime) + -\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax*65536\relax + *1000/65536\relax ms \tabu@spaces(\the\tabu@cnt\space + cycle\ifnum\tabu@cnt>\@ne s\fi)^^J^^J}} +\def\tabu@message@verticalsp {% + \ifdim \@tempdima>\tabu@ht + \ifdim \@tempdimb>\tabu@dp + \expandafter\expandafter\expandafter\string\tabu@ht = + \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@ + \expandafter\expandafter\expandafter\string\tabu@dp = + \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J% + \else + \expandafter\expandafter\expandafter\string\tabu@ht = + \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@^^J% + \fi + \else\ifdim \@tempdimb>\tabu@dp + \tabu@spaces\tabu@spaces\tabu@spaces + \expandafter\expandafter\expandafter\string\tabu@dp = + \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J\fi + \fi +}% \tabu@message@verticalsp +\edef\tabu@spaces{\@spaces} +\def\tabu@strippt{\expandafter\tabu@pt\the} +{\@makeother\P \@makeother\T\lowercase{\gdef\tabu@pt #1PT{#1}}} +\def\tabu@msgalign{\expandafter\tabu@msg@align\the\dimexpr} +\def\tabu@msgalign@PT{\expandafter\tabu@msg@align\romannumeral-`\0\tabu@strippt} +\def\do #1{% + \def\tabu@msg@align##1.##2##3##4##5##6##7##8##9\@@{% + \ifnum##1<10 #1 #1\else + \ifnum##1<100 #1 \else + \ifnum##1<\@m #1\fi\fi\fi + ##1.##2##3##4##5##6##7##8#1}% + \def\tabu@header{(tabu) \ifnum\tabu@cnt<10 #1\fi\the\tabu@cnt) }% + \def\tabu@titles{\ifnum \tabu@nested=\z@ + (tabu) Try#1 #1 tabu X #1 #1 #1tabu Width #1 #1 Target + #1 #1 #1 Coefs #1 #1 #1 Update^^J\fi}% + \def\tabu@spreadheader{% + (tabu) Try#1 #1 Spread #1 #1 tabu Width #1 #1 #1 Nat. X #1 #1 #1 #1Nat. Min. + #1 New Target^^J% + (tabu) sprd} + \def\tabu@message@save {\begingroup + \def\x ####1{\tabu@msg@align ####1{ }{ }{ }{ }{}\@@} + \def\z ####1{\expandafter\x\expandafter{\romannumeral-`\0\tabu@strippt + \dimexpr####1\p@{ }{ }}}% + \let\color \relax \def\tabu@rulesstyle ####1####2{\detokenize{####1}}% + \let\CT@arc@ \relax \let\@preamble \@gobble + \let\tabu@savedpream \@firstofone + \let\tabu@savedparams \@firstofone + \def\tabu@target ####1\relax {(tabu) target #1 #1 #1 #1 #1 = \x{####1}^^J}% + \def\tabucolX ####1\relax {(tabu) X columns width#1 = \x{####1}^^J}% + \def\tabu@nbcols ####1\relax {(tabu) Number of columns: \z{####1}^^J}% + \def\tabu@aligndefault ####1{(tabu) Default alignment: #1 #1 ####1^^J}% + \def\col@sep ####1\relax {(tabu) column sep #1 #1 #1 = \x{####1}^^J}% + \def\arrayrulewidth ####1\relax{(tabu) arrayrulewidth #1 = \x{####1}}% + \def\doublerulesep ####1\relax { doublerulesep = \x{####1}^^J}% + \def\extratabsurround####1\relax{(tabu) extratabsurround = \x{####1}^^J}% + \def\extrarowheight ####1\relax{(tabu) extrarowheight #1 = \x{####1}}% + \def\extrarowdepth ####1\relax {extrarowdepth = \x{####1}^^J}% + \def\abovetabulinesep####1\relax{(tabu) abovetabulinesep=\x{####1} }% + \def\belowtabulinesep####1\relax{ belowtabulinesep=\x{####1}^^J}% + \def\arraystretch ####1{(tabu) arraystretch #1 #1 = \z{####1}^^J}% + \def\minrowclearance####1\relax{(tabu) minrowclearance #1 = \x{####1}^^J}% + \def\tabu@arc@L ####1{(tabu) taburulecolor #1 #1 = ####1^^J}% + \def\tabu@drsc@L ####1{(tabu) tabudoublerulecolor= ####1^^J}% + \def\tabu@evr@L ####1{(tabu) everyrow #1 #1 #1 #1 = \detokenize{####1}^^J}% + \def\tabu@ls@L ####1{(tabu) line style = \detokenize{####1}^^J}% + \def\NC@find ####1\@nil{(tabu) tabu preamble#1 #1 = \detokenize{####1}^^J}% + \def\tabu@wddef####1####2{(tabu) Natural width ####1 = \x{####2}^^J}% + \let\edef \@gobbletwo \let\def \@empty \let\let \@gobbletwo + \tabu@message{% + (tabu) \string\savetabu{\tabu@temp}: \on@line^^J% + \tabu@usetabu \@nil^^J}% + \endgroup} +}\do{ } +%% Measuring the natural width (varwidth) - store the results ------- +\def\tabu@startpboxmeasure #1{\bgroup % entering \vtop + \edef\tabu@temp{\expandafter\@secondoftwo \ifx\tabu@hsize #1\else\relax\fi}% + \ifodd 1\ifx \tabu@temp\@empty 0 \else % starts with \tabu@hsize ? + \iftabu@spread \else % if spread -> measure + \ifdim \tabu@temp\p@>\z@ 0 \fi\fi\fi% if coef>0 -> do not measure + \let\@startpbox \tabu@startpboxORI % restore immediately (nesting) + \tabu@measuringtrue % for the quick option... + \tabu@Xcol =\expandafter\@firstoftwo\ifx\tabu@hsize #1\fi + \ifdim \tabu@temp\p@>\z@ \ifdim \tabu@temp\tabucolX<\tabu@target + \tabu@target=\tabu@temp\tabucolX \fi\fi + \setbox\tabu@box \hbox \bgroup + \begin{varwidth}\tabu@target + \let\FV@ListProcessLine \tabu@FV@ListProcessLine % \hbox to natural width... + \narrowragged \arraybackslash \parfillskip \@flushglue + \ifdefined\pdfadjustspacing \pdfadjustspacing\z@ \fi + \bgroup \aftergroup\tabu@endpboxmeasure + \ifdefined \cellspacetoplimit \tabu@cellspacepatch \fi + \else \expandafter\@gobble + \tabu@startpboxquick{#1}% \@gobble \bgroup + \fi +}% \tabu@startpboxmeasure +\def\tabu@cellspacepatch{\def\bcolumn##1\@nil{}\let\ecolumn\@empty + \bgroup\color@begingroup} +\def\tabu@endpboxmeasure {% + \@finalstrut \@arstrutbox + \end{varwidth}\egroup % + \ifdim \tabu@temp\p@ <\z@ % neg coef + \ifdim \tabu@wd\tabu@Xcol <\wd\tabu@box + \tabu@wddef\tabu@Xcol {\the\wd\tabu@box}% + \tabu@debug{\tabu@message@endpboxmeasure}% + \fi + \else % spread coef>0 + \global\advance \tabu@naturalX \wd\tabu@box + \@tempdima =\dimexpr \wd\tabu@box *\p@/\dimexpr \tabu@temp\p@\relax \relax + \ifdim \tabu@naturalXmax <\tabu@naturalX + \xdef\tabu@naturalXmax {\the\tabu@naturalX}\fi + \ifdim \tabu@naturalXmin <\@tempdima + \xdef\tabu@naturalXmin {\the\@tempdima}\fi + \fi + \box\tabu@box \egroup % end of \vtop (measure) restore \tabu@target +}% \tabu@endpboxmeasure +\def\tabu@wddef #1{\expandafter\xdef + \csname tabu@\the\tabu@nested.W\number#1\endcsname} +\def\tabu@wd #1{\csname tabu@\the\tabu@nested.W\number#1\endcsname} +\def\tabu@message@endpboxmeasure{\tabu@spaces\tabu@spaces<-> % <-> save natural wd + \the\tabu@Xcol. X[\tabu@temp]: + target = \the\tabucolX \space + \expandafter\expandafter\expandafter\string\tabu@wd\tabu@Xcol + =\tabu@wd\tabu@Xcol +}% \tabu@message@endpboxmeasure +\def\tabu@startpboxquick {\bgroup + \let\@startpbox \tabu@startpboxORI % restore immediately + \let\tabu \tabu@quick % \begin is expanded before... + \expandafter\@gobble \@startpbox % gobbles \bgroup +}% \tabu@startpboxquick +\def\tabu@quick {\begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}\tabu@collectbody \tabu@endquick +}% \tabu@quick +\def\tabu@endquick {% + \ifodd 1\ifx\tabu@end@envir\tabu@endtabu \else + \ifx\tabu@end@envir\tabu@endtabus \else 0\fi\fi\relax + \endgroup + \else \let\endtabu \relax + \tabu@end@envir + \fi +}% \tabu@quick +\def\tabu@endtabu {\end{tabu}} +\def\tabu@endtabus {\end{tabu*}} +%% Measuring the heights and depths - store the results ------------- +\def\tabu@verticalmeasure{\everypar{}% + \ifnum \currentgrouptype>12 % 14=semi-simple, 15=math shift group + \setbox\tabu@box =\hbox\bgroup + \let\tabu@verticalspacing \tabu@verticalsp@lcr + \d@llarbegin % after \hbox ... + \else + \edef\tabu@temp{\ifnum\currentgrouptype=5\vtop + \else\ifnum\currentgrouptype=12\vcenter + \else\vbox\fi\fi}% + \setbox\tabu@box \hbox\bgroup$\tabu@temp \bgroup + \let\tabu@verticalspacing \tabu@verticalsp@pmb + \fi +}% \tabu@verticalmeasure +\def\tabu@verticalsp@lcr{% + \d@llarend \egroup % + \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep + \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax + \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi + \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi + \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi + \noindent\vrule height\@tempdima depth\@tempdimb +}% \tabu@verticalsp@lcr +\def\tabu@verticalsp@pmb{% inserts struts as needed + \par \expandafter\egroup + \expandafter$\expandafter + \egroup \expandafter + \@tempdimc \the\prevdepth + \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep + \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax + \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi + \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi + \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi + \let\@finalstrut \@gobble + \hrule height\@tempdima depth\@tempdimb width\hsize +%% \box\tabu@box +}% \tabu@verticalsp@pmb + +\def\tabu@verticalinit{% + \ifnum \c@taburow=\z@ \tabu@rearstrut \fi % after \tabu@reset ! + \advance\c@taburow \@ne + \tabu@htdef{\the\ht\@arstrutbox}\tabu@dpdef{\the\dp\@arstrutbox}% + \advance\c@taburow \m@ne +}% \tabu@verticalinit +\def\tabu@htdef {\expandafter\xdef \csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} +\def\tabu@ht {\csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} +\def\tabu@dpdef {\expandafter\xdef \csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} +\def\tabu@dp {\csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} +\def\tabu@verticaldynamicadjustment {% + \advance\c@taburow \@ne + \extrarowheight \dimexpr\tabu@ht - \ht\strutbox + \extrarowdepth \dimexpr\tabu@dp - \dp\strutbox + \let\arraystretch \@empty + \advance\c@taburow \m@ne +}% \tabu@verticaldynamicadjustment +\def\tabuphantomline{\crcr \noalign{% + {\globaldefs \@ne + \setbox\@arstrutbox \box\voidb@x + \let\tabu@@celllalign \tabu@celllalign + \let\tabu@@cellralign \tabu@cellralign + \let\tabu@@cellleft \tabu@cellleft + \let\tabu@@cellright \tabu@cellright + \let\tabu@@thevline \tabu@thevline + \let\tabu@celllalign \@empty + \let\tabu@cellralign \@empty + \let\tabu@cellright \@empty + \let\tabu@cellleft \@empty + \let\tabu@thevline \relax}% + \edef\tabu@temp{\tabu@multispan \tabu@nbcols{\noindent &}}% + \toks@\expandafter{\tabu@temp \noindent\tabu@everyrowfalse \cr + \noalign{\tabu@rearstrut + {\globaldefs\@ne + \let\tabu@celllalign \tabu@@celllalign + \let\tabu@cellralign \tabu@@cellralign + \let\tabu@cellleft \tabu@@cellleft + \let\tabu@cellright \tabu@@cellright + \let\tabu@thevline \tabu@@thevline}}}% + \expandafter}\the\toks@ +}% \tabuphantomline +%% \firsthline and \lasthline corrections --------------------------- +\def\tabu@firstline {\tabu@hlineAZ \tabu@firsthlinecorrection {}} +\def\tabu@firsthline{\tabu@hlineAZ \tabu@firsthlinecorrection \hline} +\def\tabu@lastline {\tabu@hlineAZ \tabu@lasthlinecorrection {}} +\def\tabu@lasthline {\tabu@hlineAZ \tabu@lasthlinecorrection \hline} +\def\tabu@hline {% replaces \hline if no colortbl (see \AtBeginDocument) + \noalign{\ifnum0=`}\fi + {\CT@arc@\hrule height\arrayrulewidth}% + \futurelet \tabu@temp \tabu@xhline +}% \tabu@hline +\def\tabu@xhline{% + \ifx \tabu@temp \hline + {\ifx \CT@drsc@\relax \vskip + \else\ifx \CT@drsc@\@empty \vskip + \else \CT@drsc@\hrule height + \fi\fi + \doublerulesep}% + \fi + \ifnum0=`{\fi}% +}% \tabu@xhline +\def\tabu@hlineAZ #1#2{\noalign{\ifnum0=`}\fi \dimen@ \z@ \count@ \z@ + \toks@{}\def\tabu@hlinecorrection{#1}\def\tabu@temp{#2}% + \tabu@hlineAZsurround +}% \tabu@hlineAZ +\newcommand*\tabu@hlineAZsurround[1][\extratabsurround]{% + \extratabsurround #1\let\tabucline \tabucline@scan + \let\hline \tabu@hlinescan \let\firsthline \hline + \let\cline \tabu@clinescan \let\lasthline \hline + \expandafter \futurelet \expandafter \tabu@temp + \expandafter \tabu@nexthlineAZ \tabu@temp +}% \tabu@hlineAZsurround +\def\tabu@hlinescan {\tabu@thick \arrayrulewidth \tabu@xhlineAZ \hline} +\def\tabu@clinescan #1{\tabu@thick \arrayrulewidth \tabu@xhlineAZ {\cline{#1}}} +\def\tabucline@scan{\@testopt \tabucline@sc@n {}} +\def\tabucline@sc@n #1[#2]{\tabu@xhlineAZ {\tabucline[{#1}]{#2}}} +\def\tabu@nexthlineAZ{% + \ifx \tabu@temp\hline \else + \ifx \tabu@temp\cline \else + \ifx \tabu@temp\tabucline \else + \tabu@hlinecorrection + \fi\fi\fi +}% \tabu@nexthlineAZ +\def\tabu@xhlineAZ #1{% + \toks@\expandafter{\the\toks@ #1}% + \@tempdimc \tabu@thick % The last line width + \ifcase\count@ \@tempdimb \tabu@thick % The first line width + \else \advance\dimen@ \dimexpr \tabu@thick+\doublerulesep \relax + \fi + \advance\count@ \@ne \futurelet \tabu@temp \tabu@nexthlineAZ +}% \tabu@xhlineAZ +\def\tabu@firsthlinecorrection{% \count@ = number of \hline -1 + \@tempdima \dimexpr \ht\@arstrutbox+\dimen@ + \edef\firsthline{% + \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule + height \the\dimexpr\@tempdima+\extratabsurround + depth \dp\@arstrutbox + width \tabustrutrule}\hss}\cr + \noalign{\vskip -\the\dimexpr \@tempdima+\@tempdimb + +\dp\@arstrutbox \relax}% + \the\toks@ + }\ifnum0=`{\fi + \expandafter}\firsthline % we are then ! +}% \tabu@firsthlinecorrection +\def\tabu@lasthlinecorrection{% + \@tempdima \dimexpr \dp\@arstrutbox+\dimen@+\@tempdimb+\@tempdimc + \edef\lasthline{% + \the\toks@ + \noalign{\vskip -\the\dimexpr\dimen@+\@tempdimb+\dp\@arstrutbox}% + \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule + depth \the\dimexpr \dp\@arstrutbox+\@tempdimb+\dimen@ + +\extratabsurround-\@tempdimc + height \z@ + width \tabustrutrule}\hss}\cr + }\ifnum0=`{\fi + \expandafter}\lasthline % we are then ! +}% \tabu@lasthlinecorrection +\def\tabu@LT@@hline{% + \ifx\LT@next\hline + \global\let\LT@next \@gobble + \ifx \CT@drsc@\relax + \gdef\CT@LT@sep{% + \noalign{\penalty-\@medpenalty\vskip\doublerulesep}}% + \else + \gdef\CT@LT@sep{% + \multispan\LT@cols{% + \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill}\cr}% + \fi + \else + \global\let\LT@next\empty + \gdef\CT@LT@sep{% + \noalign{\penalty-\@lowpenalty\vskip-\arrayrulewidth}}% + \fi + \ifnum0=`{\fi}% + \multispan\LT@cols + {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr + \CT@LT@sep + \multispan\LT@cols + {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr + \noalign{\penalty\@M}% + \LT@next +}% \tabu@LT@@hline +%% Horizontal lines : \tabucline ------------------------------------ +\let\tabu@start \@tempcnta +\let\tabu@stop \@tempcntb +\newcommand*\tabucline{\noalign{\ifnum0=`}\fi \tabu@cline} +\newcommand*\tabu@cline[2][]{\tabu@startstop{#2}% + \ifnum \tabu@stop<\z@ \toks@{}% + \else \tabu@clinearg{#1}\tabu@thestyle + \edef\tabucline{\toks@{% + \ifnum \tabu@start>\z@ \omit + \tabu@multispan\tabu@start {\span\omit}&\fi + \omit \tabu@multispan\tabu@stop {\span\omit}% + \tabu@thehline\cr + }}\tabucline + \tabu@tracinglines{(tabu:tabucline) Style: #1^^J\the\toks@^^J^^J}% + \fi + \futurelet \tabu@temp \tabu@xcline +}% \tabu@cline +\def\tabu@clinearg #1{% + \ifx\\#1\\\let\tabu@thestyle \tabu@ls@ + \else \@defaultunits \expandafter\let\expandafter\@tempa + \romannumeral-`\0#1\relax \@nnil + \ifx \hbox\@tempa \tabu@clinebox{#1}% + \else\ifx \box\@tempa \tabu@clinebox{#1}% + \else\ifx \vbox\@tempa \tabu@clinebox{#1}% + \else\ifx \vtop\@tempa \tabu@clinebox{#1}% + \else\ifx \copy\@tempa \tabu@clinebox{#1}% + \else\ifx \leaders\@tempa \tabu@clineleads{#1}% + \else\ifx \cleaders\@tempa \tabu@clineleads{#1}% + \else\ifx \xleaders\@tempa \tabu@clineleads{#1}% + \else\tabu@getline {#1}% + \fi\fi\fi\fi\fi\fi\fi\fi + \fi +}% \tabu@clinearg +\def\tabu@clinebox #1{\tabu@clineleads{\xleaders#1\hss}} +\def\tabu@clineleads #1{% + \let\tabu@thestyle \relax \let\tabu@leaders \@undefined + \gdef\tabu@thehrule{#1}} +\def\tabu@thehline{\begingroup + \ifdefined\tabu@leaders + \noexpand\tabu@thehleaders + \else \noexpand\tabu@thehrule + \fi \endgroup +}% \tabu@thehline +\def\tabu@xcline{% + \ifx \tabu@temp\tabucline + \toks@\expandafter{\the\toks@ \noalign + {\ifx\CT@drsc@\relax \vskip + \else \CT@drsc@\hrule height + \fi + \doublerulesep}}% + \fi + \tabu@docline +}% \tabu@xcline +\def\tabu@docline {\ifnum0=`{\fi \expandafter}\the\toks@} +\def\tabu@docline@evr {\xdef\tabu@doclineafter{\the\toks@}% + \ifnum0=`{\fi}\aftergroup\tabu@doclineafter} +\def\tabu@multispan #1#2{% + \ifnum\numexpr#1>\@ne #2\expandafter\tabu@multispan + \else \expandafter\@gobbletwo + \fi {#1-1}{#2}% +}% \tabu@multispan +\def\tabu@startstop #1{\tabu@start@stop #1\relax 1-\tabu@nbcols \@nnil} +\def\tabu@start@stop #1-#2\@nnil{% + \@defaultunits \tabu@start\number 0#1\relax \@nnil + \@defaultunits \tabu@stop \number 0#2\relax \@nnil + \tabu@stop \ifnum \tabu@start>\tabu@nbcols \m@ne + \else\ifnum \tabu@stop=\z@ \tabu@nbcols + \else\ifnum \tabu@stop>\tabu@nbcols \tabu@nbcols + \else \tabu@stop + \fi\fi\fi + \advance\tabu@start \m@ne + \ifnum \tabu@start>\z@ \advance\tabu@stop -\tabu@start \fi +}% \tabu@start@stop +%% Numbers: siunitx S columns (and \tabudecimal) ------------------- +\def\tabu@tabudecimal #1{% + \def\tabu@decimal{#1}\@temptokena{}% + \let\tabu@getdecimal@ \tabu@getdecimal@ignorespaces + \tabu@scandecimal +}% \tabu@tabudecimal +\def\tabu@scandecimal{\futurelet \tabu@temp \tabu@getdecimal@} +\def\tabu@skipdecimal#1{#1\tabu@scandecimal} +\def\tabu@getdecimal@ignorespaces{% + \ifcase 0\ifx\tabu@temp\ignorespaces\else + \ifx\tabu@temp\@sptoken1\else + 2\fi\fi\relax + \let\tabu@getdecimal@ \tabu@getdecimal + \expandafter\tabu@skipdecimal + \or \expandafter\tabu@gobblespace\expandafter\tabu@scandecimal + \else \expandafter\tabu@skipdecimal + \fi +}% \tabu@getdecimal@ignorespaces +\def\tabu@get@decimal#1{\@temptokena\expandafter{\the\@temptokena #1}% + \tabu@scandecimal} +\def\do#1{% + \def\tabu@get@decimalspace#1{% + \@temptokena\expandafter{\the\@temptokena #1}\tabu@scandecimal}% +}\do{ } +\let\tabu@@tabudecimal \tabu@tabudecimal +\def\tabu@getdecimal{% + \ifcase 0\ifx 0\tabu@temp\else + \ifx 1\tabu@temp\else + \ifx 2\tabu@temp\else + \ifx 3\tabu@temp\else + \ifx 4\tabu@temp\else + \ifx 5\tabu@temp\else + \ifx 6\tabu@temp\else + \ifx 7\tabu@temp\else + \ifx 8\tabu@temp\else + \ifx 9\tabu@temp\else + \ifx .\tabu@temp\else + \ifx ,\tabu@temp\else + \ifx -\tabu@temp\else + \ifx +\tabu@temp\else + \ifx e\tabu@temp\else + \ifx E\tabu@temp\else + \ifx\tabu@cellleft\tabu@temp1\else + \ifx\ignorespaces\tabu@temp1\else + \ifx\@sptoken\tabu@temp2\else + 3\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax + \expandafter\tabu@get@decimal + \or \expandafter\tabu@skipdecimal + \or \expandafter\tabu@get@decimalspace + \else\expandafter\tabu@printdecimal + \fi +}% \tabu@getdecimal +\def\tabu@printdecimal{% + \edef\tabu@temp{\the\@temptokena}% + \ifx\tabu@temp\@empty\else + \ifx\tabu@temp\space\else + \expandafter\tabu@decimal\expandafter{\the\@temptokena}% + \fi\fi +}% \tabu@printdecimal +%% Verbatim inside X columns ---------------------------------------- +\def\tabu@verbatim{% + \let\verb \tabu@verb + \let\FV@DefineCheckEnd \tabu@FV@DefineCheckEnd +}% \tabu@verbatim +\let\tabu@ltx@verb \verb +\def\tabu@verb{\@ifstar {\tabu@ltx@verb*} \tabu@ltx@verb} +\def\tabu@fancyvrb {% + \def\tabu@FV@DefineCheckEnd ##1{% + \def\tabu@FV@DefineCheckEnd{% + ##1% + \let\FV@CheckEnd \tabu@FV@CheckEnd + \let\FV@@CheckEnd \tabu@FV@@CheckEnd + \let\FV@@@CheckEnd \tabu@FV@@@CheckEnd + \edef\FV@EndScanning{% + \def\noexpand\next{\noexpand\end{\FV@EnvironName}}% + \global\let\noexpand\FV@EnvironName\relax + \noexpand\next}% + \xdef\FV@EnvironName{\detokenize\expandafter{\FV@EnvironName}}}% + }\expandafter\tabu@FV@DefineCheckEnd\expandafter{\FV@DefineCheckEnd} +}% \tabu@fancyvrb +\def\tabu@FV@CheckEnd #1{\expandafter\FV@@CheckEnd \detokenize{#1\end{}}\@nil} +\edef\tabu@FV@@@CheckEnd {\detokenize{\end{}}} +\begingroup +\catcode`\[1 \catcode`\]2 +\@makeother\{ \@makeother\} + \edef\x[\endgroup + \def\noexpand\tabu@FV@@CheckEnd ##1\detokenize[\end{]##2\detokenize[}]##3% + ]\x \@nil{\def\@tempa{#2}\def\@tempb{#3}} +\def\tabu@FV@ListProcessLine #1{% + \hbox {%to \hsize{% + \kern\leftmargin + \hbox {%to \linewidth{% + \FV@LeftListNumber + \FV@LeftListFrame + \FancyVerbFormatLine{#1}\hss +%% DG/SR modification begin - Jan. 28, 1998 (for numbers=right add-on) +%% \FV@RightListFrame}% + \FV@RightListFrame + \FV@RightListNumber}% +%% DG/SR modification end + \hss}} +%% \savetabu -------------------------------------------------------- +\newcommand*\savetabu[1]{\noalign{% + \tabu@sanitizearg{#1}\tabu@temp + \ifx \tabu@temp\@empty \tabu@savewarn{}{The tabu will not be saved}\else + \@ifundefined{tabu@saved@\tabu@temp}{}{\tabu@savewarn{#1}{Overwriting}}% + \ifdefined\tabu@restored \expandafter\let + \csname tabu@saved@\tabu@temp \endcsname \tabu@restored + \else {\tabu@save}% + \fi + \fi}% +}% \savetabu +\def\tabu@save {% + \toks0\expandafter{\tabu@saved@}% + \iftabu@negcoef + \let\tabu@wddef \relax \let\tabu@ \tabu@savewd \edef\tabu@savewd{\tabu@Xcoefs}% + \toks0\expandafter{\the\toks\expandafter0\tabu@savewd}\fi + \toks1\expandafter{\tabu@savedpream}% + \toks2\expandafter{\tabu@savedpreamble}% + \let\@preamble \relax + \let\tabu@savedpream \relax \let\tabu@savedparams \relax + \edef\tabu@preamble{% + \def\noexpand\tabu@aligndefault{\tabu@align}% + \def\tabu@savedparams {\noexpand\the\toks0}% + \def\tabu@savedpream {\noexpand\the\toks1}}% + \edef\tabu@usetabu{% + \def\@preamble {\noexpand\the\toks2}% + \tabu@target \the\tabu@target \relax + \tabucolX \the\tabucolX \relax + \tabu@nbcols \the\tabu@nbcols \relax + \def\noexpand\tabu@aligndefault{\tabu@align}% + \def\tabu@savedparams {\noexpand\the\toks0}% + \def\tabu@savedpream {\noexpand\the\toks1}}% + \let\tabu@aligndefault \relax \let\@sharp \relax + \edef\@tempa{\noexpand\tabu@s@ved + {\tabu@usetabu} + {\tabu@preamble} + {\the\toks1}}\@tempa + \tabu@message@save +}% \tabu@save +\long\def\tabu@s@ved #1#2#3{% + \def\tabu@usetabu{#1}% + \expandafter\gdef\csname tabu@saved@\tabu@temp\endcsname ##1{% + \ifodd ##1% \usetabu + \tabu@measuringfalse \tabu@spreadfalse % Just in case... + \gdef\tabu@usetabu {% + \ifdim \tabu@target>\z@ \tabu@warn@usetabu \fi + \global\let\tabu@usetabu \@undefined + \def\@halignto {to\tabu@target}% + #1% + \ifx \tabu@align\tabu@aligndefault@text + \ifnum \tabu@nested=\z@ + \let\tabu@align \tabu@aligndefault \fi\fi}% + \else % \preamble + \gdef\tabu@preamble {% + \global\let\tabu@preamble \@undefined + #2% + \ifx \tabu@align\tabu@aligndefault@text + \ifnum \tabu@nested=\z@ + \let\tabu@align \tabu@aligndefault \fi\fi}% + \fi + #3}% +}% \tabu@s@ved +\def\tabu@aligndefault@text {\tabu@aligndefault}% +\def\tabu@warn@usetabu {\PackageWarning{tabu} + {Specifying a target with \string\usetabu\space is useless + \MessageBreak The target cannot be changed!}} +\def\tabu@savewd #1#2{\ifdim #2\p@<\z@ \tabu@wddef{#1}{\tabu@wd{#1}}\fi} +\def\tabu@savewarn#1#2{\PackageInfo{tabu} + {User-name `#1' already used for \string\savetabu + \MessageBreak #2}}% +\def\tabu@saveerr#1{\PackageError{tabu} + {User-name `#1' is unknown for \string\usetabu + \MessageBreak I cannot restore an unknown preamble!}\@ehd} +%% \rowfont --------------------------------------------------------- +\newskip \tabu@cellskip +\def\tabu@rowfont{\ifdim \baselineskip=\z@\noalign\fi + {\ifnum0=`}\fi \tabu@row@font} +\newcommand*\tabu@row@font[2][]{% + \ifnum7=\currentgrouptype + \global\let\tabu@@cellleft \tabu@cellleft + \global\let\tabu@@cellright \tabu@cellright + \global\let\tabu@@celllalign \tabu@celllalign + \global\let\tabu@@cellralign \tabu@cellralign + \global\let\tabu@@rowfontreset\tabu@rowfontreset + \fi + \global\let\tabu@rowfontreset \tabu@rowfont@reset + \expandafter\gdef\expandafter\tabu@cellleft\expandafter{\tabu@cellleft #2}% + \ifcsname tabu@cell@#1\endcsname % row alignment + \csname tabu@cell@#1\endcsname \fi + \ifnum0=`{\fi}% end of group / noalign group +}% \rowfont +\def\tabu@ifcolorleavevmode #1{\let\color \tabu@leavevmodecolor #1\let\color\tabu@color}% +\def\tabu@rowfont@reset{% + \global\let\tabu@rowfontreset \tabu@@rowfontreset + \global\let\tabu@cellleft \tabu@@cellleft + \global\let\tabu@cellright \tabu@@cellright + \global\let\tabu@cellfont \@empty + \global\let\tabu@celllalign \tabu@@celllalign + \global\let\tabu@cellralign \tabu@@cellralign +}% \tabu@@rowfontreset +\let\tabu@rowfontreset \@empty % overwritten \AtBeginDocument if colortbl +%% \tabu@prepnext@tok ----------------------------------------------- +\newif \iftabu@cellright +\def\tabu@prepnext@tok{% + \ifnum \count@<\z@ % + \@tempcnta \@M % + \tabu@nbcols\z@ + \let\tabu@fornoopORI \@fornoop + \tabu@cellrightfalse + \else + \ifcase \numexpr \count@-\@tempcnta \relax % (case 0): prev. token is left + \advance \tabu@nbcols \@ne + \iftabu@cellright % before-previous token is right and is finished + \tabu@cellrightfalse % + \tabu@righttok + \fi + \tabu@lefttok + \or % (case 1) previous token is right + \tabu@cellrighttrue \let\@fornoop \tabu@lastnoop + \else % special column: do not change the token + \iftabu@cellright % before-previous token is right + \tabu@cellrightfalse + \tabu@righttok + \fi + \fi % \ifcase + \fi + \tabu@prepnext@tokORI +}% \tabu@prepnext@tok +\long\def\tabu@lastnoop#1\@@#2#3{\tabu@lastn@@p #2\@nextchar \in@\in@@} +\def\tabu@lastn@@p #1\@nextchar #2#3\in@@{% + \ifx \in@#2\else + \let\@fornoop \tabu@fornoopORI + \xdef\tabu@mkpreambuffer{\tabu@nbcols\the\tabu@nbcols \tabu@mkpreambuffer}% + \toks0\expandafter{\expandafter\tabu@everyrowtrue \the\toks0}% + \expandafter\prepnext@tok + \fi +}% \tabu@lastnoop +\def\tabu@righttok{% + \advance \count@ \m@ne + \toks\count@\expandafter {\the\toks\count@ \tabu@cellright \tabu@cellralign}% + \advance \count@ \@ne +}% \tabu@righttok +\def\tabu@lefttok{\toks\count@\expandafter{\expandafter\tabu@celllalign + \the\toks\count@ \tabu@cellleft}% after because of $ +}% \tabu@lefttok +%% Neutralisation of glues ------------------------------------------ +\let\tabu@cellleft \@empty +\let\tabu@cellright \@empty +\tabu@celllalign@def{\tabu@cellleft}% +\let\tabu@cellralign \@empty +\def\tabu@cell@align #1#2#3{% + \let\tabu@maybesiunitx \toks@ \tabu@celllalign + \global \expandafter \tabu@celllalign@def \expandafter {\the\toks@ #1}% + \toks@\expandafter{\tabu@cellralign #2}% + \xdef\tabu@cellralign{\the\toks@}% + \toks@\expandafter{\tabu@cellleft #3}% + \xdef\tabu@cellleft{\the\toks@}% +}% \tabu@cell@align +\def\tabu@cell@l{% force alignment to left + \tabu@cell@align + {\tabu@removehfil \raggedright \tabu@cellleft}% left + {\tabu@flush1\tabu@ignorehfil}% right + \raggedright +}% \tabu@cell@l +\def\tabu@cell@c{% force alignment to center + \tabu@cell@align + {\tabu@removehfil \centering \tabu@flush{.5}\tabu@cellleft} + {\tabu@flush{.5}\tabu@ignorehfil} + \centering +}% \tabu@cell@c +\def\tabu@cell@r{% force alignment to right + \tabu@cell@align + {\tabu@removehfil \raggedleft \tabu@flush1\tabu@cellleft} + \tabu@ignorehfil + \raggedleft +}% \tabu@cell@r +\def\tabu@cell@j{% force justification (for p, m, b columns) + \tabu@cell@align + {\tabu@justify\tabu@cellleft} + {} + \tabu@justify +}% \tabu@cell@j +\def\tabu@justify{% + \leftskip\z@skip \@rightskip\leftskip \rightskip\@rightskip + \parfillskip\@flushglue +}% \tabu@justify +%% ragged2e settings +\def\tabu@cell@L{% force alignment to left (ragged2e) + \tabu@cell@align + {\tabu@removehfil \RaggedRight \tabu@cellleft} + {\tabu@flush 1\tabu@ignorehfil} + \RaggedRight +}% \tabu@cell@L +\def\tabu@cell@C{% force alignment to center (ragged2e) + \tabu@cell@align + {\tabu@removehfil \Centering \tabu@flush{.5}\tabu@cellleft} + {\tabu@flush{.5}\tabu@ignorehfil} + \Centering +}% \tabu@cell@C +\def\tabu@cell@R{% force alignment to right (ragged2e) + \tabu@cell@align + {\tabu@removehfil \RaggedLeft \tabu@flush 1\tabu@cellleft} + \tabu@ignorehfil + \RaggedLeft +}% \tabu@cell@R +\def\tabu@cell@J{% force justification (ragged2e) + \tabu@cell@align + {\justifying \tabu@cellleft} + {} + \justifying +}% \tabu@cell@J +\def\tabu@flush#1{% + \iftabu@colortbl % colortbl uses \hfill rather than \hfil + \hskip \ifnum13<\currentgrouptype \stretch{#1}% + \else \ifdim#1pt<\p@ \tabu@cellskip + \else \stretch{#1} + \fi\fi \relax + \else % array.sty + \ifnum 13<\currentgrouptype + \hfil \hskip1sp \relax \fi + \fi +}% \tabu@flush +\let\tabu@hfil \hfil +\let\tabu@hfill \hfill +\let\tabu@hskip \hskip +\def\tabu@removehfil{% + \iftabu@colortbl + \unkern \tabu@cellskip =\lastskip + \ifnum\gluestretchorder\tabu@cellskip =\tw@ \hskip-\tabu@cellskip + \else \tabu@cellskip \z@skip + \fi + \else + \ifdim\lastskip=1sp\unskip\fi + \ifnum\gluestretchorder\lastskip =\@ne + \hfilneg % \hfilneg for array.sty but not for colortbl... + \fi + \fi +}% \tabu@removehfil +\def\tabu@ignorehfil{\aftergroup \tabu@nohfil} +\def\tabu@nohfil{% \hfil -> do nothing + restore original \hfil + \def\hfil{\let\hfil \tabu@hfil}% local to (alignment template) group +}% \tabu@nohfil +\def\tabu@colortblalignments {% if colortbl + \def\tabu@nohfil{% + \def\hfil {\let\hfil \tabu@hfil}% local to (alignment template) group + \def\hfill {\let\hfill \tabu@hfill}% (colortbl uses \hfill) pfff... + \def\hskip ####1\relax{\let\hskip \tabu@hskip}}% local +}% \tabu@colortblalignments +%% Taking care of footnotes and hyperfootnotes ---------------------- +\long\def\tabu@footnotetext #1{% + \edef\@tempa{\the\tabu@footnotes + \noexpand\footnotetext [\the\csname c@\@mpfn\endcsname]}% + \global\tabu@footnotes\expandafter{\@tempa {#1}}}% +\long\def\tabu@xfootnotetext [#1]#2{% + \global\tabu@footnotes\expandafter{\the\tabu@footnotes + \footnotetext [{#1}]{#2}}} +\let\tabu@xfootnote \@xfootnote +\long\def\tabu@Hy@ftntext{\tabu@Hy@ftntxt {\the \c@footnote }} +\long\def\tabu@Hy@xfootnote [#1]{% + \begingroup + \value\@mpfn #1\relax + \protected@xdef \@thefnmark {\thempfn}% + \endgroup + \@footnotemark \tabu@Hy@ftntxt {#1}% +}% \tabu@Hy@xfootnote +\long\def\tabu@Hy@ftntxt #1#2{% + \edef\@tempa{% + \the\tabu@footnotes + \begingroup + \value\@mpfn #1\relax + \noexpand\protected@xdef\noexpand\@thefnmark {\noexpand\thempfn}% + \expandafter \noexpand \expandafter + \tabu@Hy@footnotetext \expandafter{\Hy@footnote@currentHref}% + }% + \global\tabu@footnotes\expandafter{\@tempa {#2}% + \endgroup}% +}% \tabu@Hy@ftntxt +\long\def\tabu@Hy@footnotetext #1#2{% + \H@@footnotetext{% + \ifHy@nesting + \hyper@@anchor {#1}{#2}% + \else + \Hy@raisedlink{% + \hyper@@anchor {#1}{\relax}% + }% + \def\@currentHref {#1}% + \let\@currentlabelname \@empty + #2% + \fi + }% +}% \tabu@Hy@footnotetext +%% No need for \arraybackslash ! ------------------------------------ +\def\tabu@latextwoe {% +\def\tabu@temp##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} +\tabu@temp \tabu@centering \centering \arraybackslash +\tabu@temp \tabu@raggedleft \raggedleft \arraybackslash +\tabu@temp \tabu@raggedright \raggedright \arraybackslash +}% \tabu@latextwoe +\def\tabu@raggedtwoe {% +\def\tabu@temp ##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} +\tabu@temp \tabu@Centering \Centering \arraybackslash +\tabu@temp \tabu@RaggedLeft \RaggedLeft \arraybackslash +\tabu@temp \tabu@RaggedRight \RaggedRight \arraybackslash +\tabu@temp \tabu@justifying \justifying \arraybackslash +}% \tabu@raggedtwoe +\def\tabu@normalcrbackslash{\let\\\@normalcr} +\def\tabu@trivlist{\expandafter\def\expandafter\@trivlist\expandafter{% + \expandafter\tabu@normalcrbackslash \@trivlist}} +%% Utilities: \fbox \fcolorbox and \tabudecimal ------------------- +\def\tabu@fbox {\leavevmode\afterassignment\tabu@beginfbox \setbox\@tempboxa\hbox} +\def\tabu@beginfbox {\bgroup \kern\fboxsep + \bgroup\aftergroup\tabu@endfbox} +\def\tabu@endfbox {\kern\fboxsep\egroup\egroup + \@frameb@x\relax} +\def\tabu@color@b@x #1#2{\leavevmode \bgroup + \def\tabu@docolor@b@x{#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}\box\z@}}% + \afterassignment\tabu@begincolor@b@x \setbox\z@ \hbox +}% \tabu@color@b@x +\def\tabu@begincolor@b@x {\kern\fboxsep \bgroup + \aftergroup\tabu@endcolor@b@x \set@color} +\def\tabu@endcolor@b@x {\kern\fboxsep \egroup + \dimen@\ht\z@ \advance\dimen@ \fboxsep \ht\z@ \dimen@ + \dimen@\dp\z@ \advance\dimen@ \fboxsep \dp\z@ \dimen@ + \tabu@docolor@b@x \egroup +}% \tabu@endcolor@b@x +%% Corrections (arydshln, delarray, colortbl) ----------------------- +\def\tabu@fix@arrayright {%% \@arrayright is missing from \endarray + \iftabu@colortbl + \ifdefined\adl@array % + \def\tabu@endarray{% + \adl@endarray \egroup \adl@arrayrestore \CT@end \egroup % + \@arrayright % + \gdef\@preamble{}}% + \else % + \def\tabu@endarray{% + \crcr \egroup \egroup % + \@arrayright % + \gdef\@preamble{}\CT@end}% + \fi + \else + \ifdefined\adl@array % + \def\tabu@endarray{% + \adl@endarray \egroup \adl@arrayrestore \egroup % + \@arrayright % + \gdef\@preamble{}}% + \else % + \PackageWarning{tabu} + {\string\@arrayright\space is missing from the + \MessageBreak definition of \string\endarray. + \MessageBreak Compatibility with delarray.sty is broken.}% + \fi\fi +}% \tabu@fix@arrayright +\def\tabu@adl@xarraydashrule #1#2#3{% + \ifnum\@lastchclass=\adl@class@start\else + \ifnum\@lastchclass=\@ne\else + \ifnum\@lastchclass=5 \else % @-arg (class 5) and !-arg (class 1) + \adl@leftrulefalse \fi\fi % must be treated the same + \fi + \ifadl@zwvrule\else \ifadl@inactive\else + \@addtopreamble{\vrule\@width\arrayrulewidth + \@height\z@ \@depth\z@}\fi \fi + \ifadl@leftrule + \@addtopreamble{\adl@vlineL{\CT@arc@}{\adl@dashgapcolor}% + {\number#1}#3}% + \else \@addtopreamble{\adl@vlineR{\CT@arc@}{\adl@dashgapcolor}% + {\number#2}#3} + \fi +}% \tabu@adl@xarraydashrule +\def\tabu@adl@act@endpbox {% + \unskip \ifhmode \nobreak \fi \@finalstrut \@arstrutbox + \egroup \egroup + \adl@colhtdp \box\adl@box \hfil +}% \tabu@adl@act@endpbox +\def\tabu@adl@fix {% + \let\adl@xarraydashrule \tabu@adl@xarraydashrule % arydshln + \let\adl@act@endpbox \tabu@adl@act@endpbox % arydshln + \let\adl@act@@endpbox \tabu@adl@act@endpbox % arydshln + \let\@preamerror \@preamerr % arydshln +}% \tabu@adl@fix +%% Correction for longtable' \@startbox definition ------------------ +%% => \everypar is ``missing'' : TeX should be in vertical mode +\def\tabu@LT@startpbox #1{% + \bgroup + \let\@footnotetext\LT@p@ftntext + \setlength\hsize{#1}% + \@arrayparboxrestore + \everypar{% + \vrule \@height \ht\@arstrutbox \@width \z@ + \everypar{}}% +}% \tabu@LT@startpbox +%% \tracingtabu and the package options ------------------ +\DeclareOption{delarray}{\AtEndOfPackage{\RequirePackage{delarray}}} +\DeclareOption{linegoal}{% + \AtEndOfPackage{% + \RequirePackage{linegoal}[2010/12/07]% + \let\tabudefaulttarget \linegoal% \linegoal is \linewidth if not pdfTeX +}} +\DeclareOption{scantokens}{\tabuscantokenstrue} +\DeclareOption{debugshow}{\AtEndOfPackage{\tracingtabu=\tw@}} +\def\tracingtabu {\begingroup\@ifnextchar=% + {\afterassignment\tabu@tracing\count@} + {\afterassignment\tabu@tracing\count@1\relax}} +\def\tabu@tracing{\expandafter\endgroup + \expandafter\tabu@tr@cing \the\count@ \relax +}% \tabu@tracing +\def\tabu@tr@cing #1\relax {% + \ifnum#1>\thr@@ \let\tabu@tracinglines\message + \else \let\tabu@tracinglines\@gobble + \fi + \ifnum#1>\tw@ \let\tabu@DBG \tabu@@DBG + \def\tabu@mkarstrut {\tabu@DBG@arstrut}% + \tabustrutrule 1.5\p@ + \else \let\tabu@DBG \@gobble + \def\tabu@mkarstrut {\tabu@arstrut}% + \tabustrutrule \z@ + \fi + \ifnum#1>\@ne \let\tabu@debug \message + \else \let\tabu@debug \@gobble + \fi + \ifnum#1>\z@ + \let\tabu@message \message + \let\tabu@tracing@save \tabu@message@save + \let\tabu@starttimer \tabu@pdftimer + \else + \let\tabu@message \@gobble + \let\tabu@tracing@save \@gobble + \let\tabu@starttimer \relax + \fi +}% \tabu@tr@cing +%% Setup \AtBeginDocument +\AtBeginDocument{\tabu@AtBeginDocument} +\def\tabu@AtBeginDocument{\let\tabu@AtBeginDocument \@undefined + \ifdefined\arrayrulecolor \tabu@colortbltrue % + \tabu@colortblalignments % different glues are used + \else \tabu@colortblfalse \fi + \ifdefined\CT@arc@ \else \let\CT@arc@ \relax \fi + \ifdefined\CT@drsc@\else \let\CT@drsc@ \relax \fi + \let\tabu@arc@L \CT@arc@ \let\tabu@drsc@L \CT@drsc@ + \ifodd 1\ifcsname siunitx_table_collect_begin:Nn\endcsname % + \expandafter\ifx + \csname siunitx_table_collect_begin:Nn\endcsname\relax 0\fi\fi\relax + \tabu@siunitxtrue + \else \let\tabu@maybesiunitx \@firstofone % + \let\tabu@siunitx \tabu@nosiunitx + \tabu@siunitxfalse + \fi + \ifdefined\adl@array % + \else \let\tabu@adl@fix \relax + \let\tabu@adl@endtrial \@empty \fi + \ifdefined\longtable % + \else \let\longtabu \tabu@nolongtabu \fi + \ifdefined\cellspacetoplimit \tabu@warn@cellspace\fi + \csname\ifcsname ifHy@hyperfootnotes\endcsname % + ifHy@hyperfootnotes\else iffalse\fi\endcsname + \let\tabu@footnotetext \tabu@Hy@ftntext + \let\tabu@xfootnote \tabu@Hy@xfootnote \fi + \ifdefined\FV@DefineCheckEnd% + \tabu@fancyvrb \fi + \ifdefined\color % + \let\tabu@color \color + \def\tabu@leavevmodecolor ##1{% + \def\tabu@leavevmodecolor {\leavevmode ##1}% + }\expandafter\tabu@leavevmodecolor\expandafter{\color}% + \else + \let\tabu@color \tabu@nocolor + \let\tabu@leavevmodecolor \@firstofone \fi + \tabu@latextwoe + \ifdefined\@raggedtwoe@everyselectfont % + \tabu@raggedtwoe + \else + \let\tabu@cell@L \tabu@cell@l + \let\tabu@cell@R \tabu@cell@r + \let\tabu@cell@C \tabu@cell@c + \let\tabu@cell@J \tabu@cell@j \fi + \expandafter\in@ \expandafter\@arrayright \expandafter{\endarray}% + \ifin@ \let\tabu@endarray \endarray + \else \tabu@fix@arrayright \fi% + \everyrow{}% +}% \tabu@AtBeginDocument +\def\tabu@warn@cellspace{% + \PackageWarning{tabu}{% + Package cellspace has some limitations + \MessageBreak And redefines some macros of array.sty. + \MessageBreak Please use \string\tabulinesep\space to control + \MessageBreak vertical spacing of lines inside tabu environment}% +}% \tabu@warn@cellspace +%% tabu Package initialisation +\tabuscantokensfalse +\let\tabu@arc@G \relax +\let\tabu@drsc@G \relax +\let\tabu@evr@G \@empty +\let\tabu@rc@G \@empty +\def\tabu@ls@G {\tabu@linestyle@}% +\let\tabu@@rowfontreset \@empty % +\let\tabu@@celllalign \@empty +\let\tabu@@cellralign \@empty +\let\tabu@@cellleft \@empty +\let\tabu@@cellright \@empty +\def\tabu@naturalXmin {\z@} +\def\tabu@naturalXmax {\z@} +\let\tabu@rowfontreset \@empty +\def\tabulineon {4pt}\let\tabulineoff \tabulineon +\tabu@everyrowtrue +\ifdefined\pdfelapsedtime % + \def\tabu@pdftimer {\xdef\tabu@starttime{\the\pdfelapsedtime}}% +\else \let\tabu@pdftimer \relax \let\tabu@message@etime \relax +\fi +\tracingtabu=\z@ +\newtabulinestyle {=\maxdimen}% creates the 'factory' settings \tabu@linestyle@ +\tabulinestyle{} +\taburowcolors{} +\let\tabudefaulttarget \linewidth +\ProcessOptions* % \ProcessOptions* is quicker ! +\endinput +%% +%% End of file `tabu.sty'. diff --git a/Documents/Doxygen/latex/todo.tex b/Documents/Doxygen/latex/todo.tex new file mode 100644 index 0000000..702656f --- /dev/null +++ b/Documents/Doxygen/latex/todo.tex @@ -0,0 +1,6 @@ + +\begin{DoxyRefList} +\item[Global \mbox{\hyperlink{functions_8h_a33edcf2aa23f97390659434ead6ef593}{Send\+String}} (char $\ast$s)]\label{todo__todo000001}% +\Hypertarget{todo__todo000001}% +Für die Zeichenausgabe der Textspeicher könnte hier noch die Beachtung des eingestellten Ratios und der Gewichtung zugefügt werden. +\end{DoxyRefList} \ No newline at end of file diff --git a/Documents/Doxygen/latex/vt100_8c.tex b/Documents/Doxygen/latex/vt100_8c.tex new file mode 100644 index 0000000..bea7ec6 --- /dev/null +++ b/Documents/Doxygen/latex/vt100_8c.tex @@ -0,0 +1,161 @@ +\hypertarget{vt100_8c}{}\doxysection{vt100.\+c-\/Dateireferenz} +\label{vt100_8c}\index{vt100.c@{vt100.c}} + + +VT100 Terminalausgabe. + + +{\ttfamily \#include \char`\"{}vt100.\+h\char`\"{}}\newline +Include-\/\+Abhängigkeitsdiagramm für vt100.\+c\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{vt100_8c__incl} +\end{center} +\end{figure} +\doxysubsection*{Funktionen} +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{vt100_8c_af214225c421f33e106f2e94feb80f9d8}{Serial\+Menue}} (void) +\begin{DoxyCompactList}\small\item\em Auswahlmenue über serielle Schnittstelle ausgeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{vt100_8c_a4c083c2b0ddae216cf2bdfe6490c9738}{Serial\+Setup}} (void) +\begin{DoxyCompactList}\small\item\em Aktuelle Einstellungen über serielle Schnittstelle ausgeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{vt100_8c_a4ee21561cb51aeaa80633e244b3811c6}{Serial\+About}} (void) +\begin{DoxyCompactList}\small\item\em Versionsinformation über serielle Schnittstelle ausgeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{vt100_8c_aa9e990762ad311b3582c6e7b0c4addf6}{Serial\+Reset}} (void) +\begin{DoxyCompactList}\small\item\em Löscht die Terminalanzeige und gibt Versionsinfo und Menue aus. \end{DoxyCompactList}\item +void \mbox{\hyperlink{vt100_8c_aed5211def004c592733d721fd1d6c186}{Serial\+Receive}} (char c) +\begin{DoxyCompactList}\small\item\em Wird vom UART Interrupt aufgerufen, wenn ein Zeichen empfangen wurde. \end{DoxyCompactList}\item +\mbox{\Hypertarget{vt100_8c_adee204ccfa569867de5db5c8b614d470}\label{vt100_8c_adee204ccfa569867de5db5c8b614d470}} +void {\bfseries Serial\+Msg\+Out} (void) +\item +void \mbox{\hyperlink{vt100_8c_a224d9b143a368c30ceceaeffbd696500}{Serial\+Msg\+Menue}} (char c) +\begin{DoxyCompactList}\small\item\em Zeigt einen Textspeicher an, der geändert werden soll. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Ausführliche Beschreibung} +VT100 Terminalausgabe. + + + +\doxysubsection{Dokumentation der Funktionen} +\mbox{\Hypertarget{vt100_8c_a4ee21561cb51aeaa80633e244b3811c6}\label{vt100_8c_a4ee21561cb51aeaa80633e244b3811c6}} +\index{vt100.c@{vt100.c}!SerialAbout@{SerialAbout}} +\index{SerialAbout@{SerialAbout}!vt100.c@{vt100.c}} +\doxysubsubsection{\texorpdfstring{SerialAbout()}{SerialAbout()}} +{\footnotesize\ttfamily void Serial\+About (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Versionsinformation über serielle Schnittstelle ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{vt100_8c_af214225c421f33e106f2e94feb80f9d8}\label{vt100_8c_af214225c421f33e106f2e94feb80f9d8}} +\index{vt100.c@{vt100.c}!SerialMenue@{SerialMenue}} +\index{SerialMenue@{SerialMenue}!vt100.c@{vt100.c}} +\doxysubsubsection{\texorpdfstring{SerialMenue()}{SerialMenue()}} +{\footnotesize\ttfamily void Serial\+Menue (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Auswahlmenue über serielle Schnittstelle ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{vt100_8c_a224d9b143a368c30ceceaeffbd696500}\label{vt100_8c_a224d9b143a368c30ceceaeffbd696500}} +\index{vt100.c@{vt100.c}!SerialMsgMenue@{SerialMsgMenue}} +\index{SerialMsgMenue@{SerialMsgMenue}!vt100.c@{vt100.c}} +\doxysubsubsection{\texorpdfstring{SerialMsgMenue()}{SerialMsgMenue()}} +{\footnotesize\ttfamily void Serial\+Msg\+Menue (\begin{DoxyParamCaption}\item[{char}]{c }\end{DoxyParamCaption})} + + + +Zeigt einen Textspeicher an, der geändert werden soll. + + +\begin{DoxyParams}{Parameter} +{\em c} & Nummer des Textspeichers \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{vt100_8c_aed5211def004c592733d721fd1d6c186}\label{vt100_8c_aed5211def004c592733d721fd1d6c186}} +\index{vt100.c@{vt100.c}!SerialReceive@{SerialReceive}} +\index{SerialReceive@{SerialReceive}!vt100.c@{vt100.c}} +\doxysubsubsection{\texorpdfstring{SerialReceive()}{SerialReceive()}} +{\footnotesize\ttfamily void Serial\+Receive (\begin{DoxyParamCaption}\item[{char}]{c }\end{DoxyParamCaption})} + + + +Wird vom UART Interrupt aufgerufen, wenn ein Zeichen empfangen wurde. + + +\begin{DoxyParams}{Parameter} +{\em c} & Zeichen, das empfangen wurde \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{vt100_8c_aa9e990762ad311b3582c6e7b0c4addf6}\label{vt100_8c_aa9e990762ad311b3582c6e7b0c4addf6}} +\index{vt100.c@{vt100.c}!SerialReset@{SerialReset}} +\index{SerialReset@{SerialReset}!vt100.c@{vt100.c}} +\doxysubsubsection{\texorpdfstring{SerialReset()}{SerialReset()}} +{\footnotesize\ttfamily void Serial\+Reset (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Löscht die Terminalanzeige und gibt Versionsinfo und Menue aus. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{vt100_8c_a4c083c2b0ddae216cf2bdfe6490c9738}\label{vt100_8c_a4c083c2b0ddae216cf2bdfe6490c9738}} +\index{vt100.c@{vt100.c}!SerialSetup@{SerialSetup}} +\index{SerialSetup@{SerialSetup}!vt100.c@{vt100.c}} +\doxysubsubsection{\texorpdfstring{SerialSetup()}{SerialSetup()}} +{\footnotesize\ttfamily void Serial\+Setup (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Aktuelle Einstellungen über serielle Schnittstelle ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} diff --git a/Documents/Doxygen/latex/vt100_8c__incl.md5 b/Documents/Doxygen/latex/vt100_8c__incl.md5 new file mode 100644 index 0000000..24e4629 --- /dev/null +++ b/Documents/Doxygen/latex/vt100_8c__incl.md5 @@ -0,0 +1 @@ +401ebc2690f196df9a596ae007ec383e \ No newline at end of file diff --git a/Documents/Doxygen/latex/vt100_8c__incl.pdf b/Documents/Doxygen/latex/vt100_8c__incl.pdf new file mode 100644 index 0000000..52b4ab1 Binary files /dev/null and b/Documents/Doxygen/latex/vt100_8c__incl.pdf differ diff --git a/Documents/Doxygen/latex/vt100_8h.tex b/Documents/Doxygen/latex/vt100_8h.tex new file mode 100644 index 0000000..ca83a79 --- /dev/null +++ b/Documents/Doxygen/latex/vt100_8h.tex @@ -0,0 +1,212 @@ +\hypertarget{vt100_8h}{}\doxysection{vt100.\+h-\/Dateireferenz} +\label{vt100_8h}\index{vt100.h@{vt100.h}} + + +VT100 Terminal. + + +{\ttfamily \#include \char`\"{}functions.\+h\char`\"{}}\newline +Include-\/\+Abhängigkeitsdiagramm für vt100.\+h\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{vt100_8h__incl} +\end{center} +\end{figure} +Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=217pt]{vt100_8h__dep__incl} +\end{center} +\end{figure} +\doxysubsection*{Datenstrukturen} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structSerialState}{Serial\+State}} +\end{DoxyCompactItemize} +\doxysubsection*{Makrodefinitionen} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{vt100_8h_a437ae0e23a0dbb5ed203d3164ddc0236}\label{vt100_8h_a437ae0e23a0dbb5ed203d3164ddc0236}} +\#define {\bfseries SERMENUE}~1 +\item +\mbox{\Hypertarget{vt100_8h_a5da74b8a0d9ccc3f50517604b187a24b}\label{vt100_8h_a5da74b8a0d9ccc3f50517604b187a24b}} +\#define {\bfseries SERMSG}~2 +\item +\mbox{\Hypertarget{vt100_8h_ae27ed790a6b6740b3734189d2b316529}\label{vt100_8h_ae27ed790a6b6740b3734189d2b316529}} +\#define {\bfseries SERMSGMENUE}~3 +\item +\mbox{\Hypertarget{vt100_8h_a46da8d0a51f0d737ab2c30dafd7ad75b}\label{vt100_8h_a46da8d0a51f0d737ab2c30dafd7ad75b}} +\#define {\bfseries SERMSGCHANGE}~4 +\item +\mbox{\Hypertarget{vt100_8h_a616119c79c558ea31a1b2c8b91d83cd6}\label{vt100_8h_a616119c79c558ea31a1b2c8b91d83cd6}} +\#define {\bfseries SERMSG1}~5 +\item +\mbox{\Hypertarget{vt100_8h_a7594e068a72dfacf2468960050f5f851}\label{vt100_8h_a7594e068a72dfacf2468960050f5f851}} +\#define {\bfseries SERMSG2}~6 +\item +\mbox{\Hypertarget{vt100_8h_a21d1129bcba5d4d4444ae42a6d9a5764}\label{vt100_8h_a21d1129bcba5d4d4444ae42a6d9a5764}} +\#define {\bfseries SERMSG3}~7 +\item +\mbox{\Hypertarget{vt100_8h_a3f0bfe942353ecacec9e0565eb0f6e1d}\label{vt100_8h_a3f0bfe942353ecacec9e0565eb0f6e1d}} +\#define {\bfseries SERMSG4}~8 +\item +\mbox{\Hypertarget{vt100_8h_a1986a4efce951e8918bfa48637d5f869}\label{vt100_8h_a1986a4efce951e8918bfa48637d5f869}} +\#define {\bfseries SERMSG5}~9 +\item +\mbox{\Hypertarget{vt100_8h_aae22a8cd21c908acb2519858d9aa2f79}\label{vt100_8h_aae22a8cd21c908acb2519858d9aa2f79}} +\#define {\bfseries SERMSG0}~0 +\item +\mbox{\Hypertarget{vt100_8h_ad979fa8b412ae735d2b0debcf9e128a7}\label{vt100_8h_ad979fa8b412ae735d2b0debcf9e128a7}} +\#define {\bfseries SERSETUP}~10 +\end{DoxyCompactItemize} +\doxysubsection*{Funktionen} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{vt100_8h_a90d76aea7abf0ee9e5218582bd1e2e2c}\label{vt100_8h_a90d76aea7abf0ee9e5218582bd1e2e2c}} +void {\bfseries Serial\+Info} (void) +\item +void \mbox{\hyperlink{vt100_8h_a4ee21561cb51aeaa80633e244b3811c6}{Serial\+About}} (void) +\begin{DoxyCompactList}\small\item\em Versionsinformation über serielle Schnittstelle ausgeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{vt100_8h_a4c083c2b0ddae216cf2bdfe6490c9738}{Serial\+Setup}} (void) +\begin{DoxyCompactList}\small\item\em Aktuelle Einstellungen über serielle Schnittstelle ausgeben. \end{DoxyCompactList}\item +void \mbox{\hyperlink{vt100_8h_af214225c421f33e106f2e94feb80f9d8}{Serial\+Menue}} (void) +\begin{DoxyCompactList}\small\item\em Auswahlmenue über serielle Schnittstelle ausgeben. \end{DoxyCompactList}\item +\mbox{\Hypertarget{vt100_8h_adee204ccfa569867de5db5c8b614d470}\label{vt100_8h_adee204ccfa569867de5db5c8b614d470}} +void {\bfseries Serial\+Msg\+Out} (void) +\item +void \mbox{\hyperlink{vt100_8h_a224d9b143a368c30ceceaeffbd696500}{Serial\+Msg\+Menue}} (char c) +\begin{DoxyCompactList}\small\item\em Zeigt einen Textspeicher an, der geändert werden soll. \end{DoxyCompactList}\item +void \mbox{\hyperlink{vt100_8h_a77266197e015c3320c0aa4f491101903}{Write\+Msg\+EEprom}} (uint8\+\_\+t idx) +\begin{DoxyCompactList}\small\item\em Textspeicher in EEprom schreiben. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Variablen} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{vt100_8h_ae9078b83eea3d7919a417fba39d744ce}\label{vt100_8h_ae9078b83eea3d7919a417fba39d744ce}} +static const char $\ast$const {\bfseries CLRSCR} = \char`\"{}\textbackslash{}033\mbox{[}2J\char`\"{} +\item +\mbox{\Hypertarget{vt100_8h_a8ec3a16bc16d93c6f2878b7cc1031c9e}\label{vt100_8h_a8ec3a16bc16d93c6f2878b7cc1031c9e}} +char {\bfseries out} \mbox{[}120\mbox{]} +\item +\mbox{\Hypertarget{vt100_8h_a82ce29ac824fd42dfac671701de20dc9}\label{vt100_8h_a82ce29ac824fd42dfac671701de20dc9}} +char {\bfseries inp} \mbox{[}120\mbox{]} +\item +\mbox{\Hypertarget{vt100_8h_af27e3188294c2df66d975b74a09c001d}\label{vt100_8h_af27e3188294c2df66d975b74a09c001d}} +uint8\+\_\+t {\bfseries i} +\item +\mbox{\Hypertarget{vt100_8h_a69c4569269da7faedfa431b065370468}\label{vt100_8h_a69c4569269da7faedfa431b065370468}} +uint8\+\_\+t {\bfseries o} +\item +\mbox{\Hypertarget{vt100_8h_a0fb4570721a451b3d31a7e71b2124f17}\label{vt100_8h_a0fb4570721a451b3d31a7e71b2124f17}} +struct \mbox{\hyperlink{structSerialState}{Serial\+State}} {\bfseries b\+Serial\+State} +\end{DoxyCompactItemize} + + +\doxysubsection{Ausführliche Beschreibung} +VT100 Terminal. + +\begin{DoxyAuthor}{Autor} +Tom, DL7\+BJ +\end{DoxyAuthor} + + +\doxysubsection{Dokumentation der Funktionen} +\mbox{\Hypertarget{vt100_8h_a4ee21561cb51aeaa80633e244b3811c6}\label{vt100_8h_a4ee21561cb51aeaa80633e244b3811c6}} +\index{vt100.h@{vt100.h}!SerialAbout@{SerialAbout}} +\index{SerialAbout@{SerialAbout}!vt100.h@{vt100.h}} +\doxysubsubsection{\texorpdfstring{SerialAbout()}{SerialAbout()}} +{\footnotesize\ttfamily void Serial\+About (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Versionsinformation über serielle Schnittstelle ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{vt100_8h_af214225c421f33e106f2e94feb80f9d8}\label{vt100_8h_af214225c421f33e106f2e94feb80f9d8}} +\index{vt100.h@{vt100.h}!SerialMenue@{SerialMenue}} +\index{SerialMenue@{SerialMenue}!vt100.h@{vt100.h}} +\doxysubsubsection{\texorpdfstring{SerialMenue()}{SerialMenue()}} +{\footnotesize\ttfamily void Serial\+Menue (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Auswahlmenue über serielle Schnittstelle ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{vt100_8h_a224d9b143a368c30ceceaeffbd696500}\label{vt100_8h_a224d9b143a368c30ceceaeffbd696500}} +\index{vt100.h@{vt100.h}!SerialMsgMenue@{SerialMsgMenue}} +\index{SerialMsgMenue@{SerialMsgMenue}!vt100.h@{vt100.h}} +\doxysubsubsection{\texorpdfstring{SerialMsgMenue()}{SerialMsgMenue()}} +{\footnotesize\ttfamily void Serial\+Msg\+Menue (\begin{DoxyParamCaption}\item[{char}]{c }\end{DoxyParamCaption})} + + + +Zeigt einen Textspeicher an, der geändert werden soll. + + +\begin{DoxyParams}{Parameter} +{\em c} & Nummer des Textspeichers \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{vt100_8h_a4c083c2b0ddae216cf2bdfe6490c9738}\label{vt100_8h_a4c083c2b0ddae216cf2bdfe6490c9738}} +\index{vt100.h@{vt100.h}!SerialSetup@{SerialSetup}} +\index{SerialSetup@{SerialSetup}!vt100.h@{vt100.h}} +\doxysubsubsection{\texorpdfstring{SerialSetup()}{SerialSetup()}} +{\footnotesize\ttfamily void Serial\+Setup (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Aktuelle Einstellungen über serielle Schnittstelle ausgeben. + + +\begin{DoxyParams}{Parameter} +{\em none} & \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Rückgabewerte} +{\em none} & \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{vt100_8h_a77266197e015c3320c0aa4f491101903}\label{vt100_8h_a77266197e015c3320c0aa4f491101903}} +\index{vt100.h@{vt100.h}!WriteMsgEEprom@{WriteMsgEEprom}} +\index{WriteMsgEEprom@{WriteMsgEEprom}!vt100.h@{vt100.h}} +\doxysubsubsection{\texorpdfstring{WriteMsgEEprom()}{WriteMsgEEprom()}} +{\footnotesize\ttfamily void Write\+Msg\+EEprom (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{idx }\end{DoxyParamCaption})} + + + +Textspeicher in EEprom schreiben. + + +\begin{DoxyParams}{Parameter} +{\em Nummer} & des Textspeichers \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Rückgabe} +none +\end{DoxyReturn} diff --git a/Documents/Doxygen/latex/vt100_8h__dep__incl.md5 b/Documents/Doxygen/latex/vt100_8h__dep__incl.md5 new file mode 100644 index 0000000..c91c8ef --- /dev/null +++ b/Documents/Doxygen/latex/vt100_8h__dep__incl.md5 @@ -0,0 +1 @@ +31f9a4bbb37955ea28d9800402587fe9 \ No newline at end of file diff --git a/Documents/Doxygen/latex/vt100_8h__dep__incl.pdf b/Documents/Doxygen/latex/vt100_8h__dep__incl.pdf new file mode 100644 index 0000000..f566231 Binary files /dev/null and b/Documents/Doxygen/latex/vt100_8h__dep__incl.pdf differ diff --git a/Documents/Doxygen/latex/vt100_8h__incl.md5 b/Documents/Doxygen/latex/vt100_8h__incl.md5 new file mode 100644 index 0000000..8beb9e0 --- /dev/null +++ b/Documents/Doxygen/latex/vt100_8h__incl.md5 @@ -0,0 +1 @@ +111c650e5eec2c33627b6e5ca7741abc \ No newline at end of file diff --git a/Documents/Doxygen/latex/vt100_8h__incl.pdf b/Documents/Doxygen/latex/vt100_8h__incl.pdf new file mode 100644 index 0000000..7b2baf8 Binary files /dev/null and b/Documents/Doxygen/latex/vt100_8h__incl.pdf differ diff --git a/Documents/PWM-Sinus.pdf b/Documents/PWM-Sinus.pdf deleted file mode 100644 index 8f239ec..0000000 Binary files a/Documents/PWM-Sinus.pdf and /dev/null differ diff --git a/Documents/doctest.pdf b/Documents/doctest.pdf deleted file mode 100644 index 7012842..0000000 Binary files a/Documents/doctest.pdf and /dev/null differ diff --git a/Documents/doctest.tex b/Documents/doctest.tex deleted file mode 100644 index 58d6ed9..0000000 --- a/Documents/doctest.tex +++ /dev/null @@ -1,152 +0,0 @@ -\documentclass[ - 11pt, - a4paper, - twoside, - parskip=full-, - bibliography=totoc, - listof=totoc, - listof=entryprefix, - toc=sectionentrywithdots -]{scrbook} -\usepackage[T1]{fontenc} -\usepackage{fontspec} -\usepackage[ngerman]{babel} -\usepackage{color} -\usepackage{graphicx} -\usepackage{longtable} -\usepackage{subfig} -\usepackage{floatflt,epsfig} -\usepackage{nicefrac} -\usepackage{units} -\usepackage{keystroke} -\usepackage{pstricks} -\usepackage{pst-node} -\usepackage{rotating} -\usepackage{bbding} -\usepackage{tikz} -\usepackage{tikz-timing} -\usepackage{pgfplots} -\usepackage{ccicons} -\usepackage{amsmath} -\usepackage{amssymb} -%\usepackage{unicode-math, polyglossia} -\usepackage{lmodern} - -% Settings -\pgfplotsset{compat=1.17} - -\renewcaptionname{ngerman}{\contentsname}{Inhalt} -\renewcaptionname{ngerman}{\listfigurename}{Abbildungen} -\renewcaptionname{ngerman}{\listtablename}{Tabellen} -\renewcaptionname{ngerman}{\figurename}{Abb.} -\renewcaptionname{ngerman}{\tablename}{Tab.} - -\BeforeStartingTOC[lof]{\def\autodot{:}} -\BeforeStartingTOC[lot]{\def\autodot{:}} - -\definecolor{font}{RGB}{240,240,240} -\begin{document} - -\begin{titlepage} - \raggedright - \begin{figure}[h] - \centering - \hfill % - \subfloat{\includegraphics[scale=0.4]{../Pictures/dl7bj}} - \hfill % - \subfloat{\includegraphics[scale=0.75]{../Pictures/dl7bj-logo}} - \hfill % - \end{figure} - \huge - \vspace{2cm} - BJ-Keyer\\ - Dokumentation \\ - \small - ab Version 1.00 vom \today \\ - Tom, DL7BJ \\ - \vspace{0.1cm} - \vspace{2cm} -\normalsize - \dictum[DK5KE]{Die Morsetelegrafie ist der Urknall des Internets.} -\end{titlepage} - - -\section*{Vorwort} - -Was ist ein elektronischer Morsezeichengeber? Das ist ein Gerät, welches wir Funkamateure besser -unter dem Namen Morse-Keyer kennen. Kurzgesagt, ein Morse-Keyer erzeugt elektronisch Punkte, Striche -und Pausen. Während dies mit der Handtaste zum Morsen manuell gemacht werden muss, wird ein Morse-Keyer -in Verbindung mit Ein- oder Zweihebeltasten verwendet und erzeugt bei Betätigung die Punkte und Striche -sowie die Pausen selbständig. - -Ist das neu? - -Nein, Morse-Keyer gibt es schon sehr lange. Als Fertiggeräte, als Bausätze und auch nur als Bauanleitungen -in vielen verschiedenen Varianten. Etwas, das man quasi an jeder Straßenecke bekommt, in unterschiedlichen -Preisklassen. - -Warum noch ein Morse-Keyer? - -Einige der erhältlichen Morse-Keyer sind in großen Gehäusen untergebracht, mit vielen Funktionen, Abschluß für eine Tastatur, dutzende Speicher und LC-Display und kosten viel Geld. Andere sind sehr günstig, haben aber nur einen Anschluß für eine Taste. Wenn man nicht gerade der Contester und DX-Jäger ist, gerne mal diverse Tasten an mehr als einem Transceiver verwendet und weder Steuerung über den PC noch Anschluß für Tastaturen benötigt, findet fast nichts am Markt. - -Deswegen der BJ-Keyer, einfach, simpel, klein und trotzdem können mehrere Tasten und 2 Transceiver angeschlossen werden. Alles, was ich nicht benötige, habe ich auch weggelassen. Wer also auf der Suche nach einem Morse-Keyer mit ganz vielen Funktionen ist, dem empfehle ich eher sich woanders umzuschauen. - -Wer aber einen kleinen Keyer mit wenigen aber praktischen Funktionen sucht, sollte hier weiterlesen. - -Viel Spaß! -Tom, DL7BJ - -% \newline - -\tableofcontents - -\chapter{Funktionen} -\begin{itemize} -\item{BJ-Keyer Funktionsübersicht} - \begin{itemize} - \item{Iambic A und Iambic B Mode} - \item{Anschluß für Handtaste und Paddle} - \item{Ausgang für Key-Eingang TRX} - \item{Ausgang für PTT} - \item{Stromversorgung 7-15V} - \item{Integrierter Lautsprecher für Mithörton} - \item{Mithörton als Sinussignal} - \end{itemize} -\end{itemize} - -\chapter{Hinweise zur Dokumentation} - -In dieser Dokumentation werden diverse gleichbleibende Darstellungsweisen verwendet. Dies erleichtert Dir das Verständnis der Bedeutung. Texte, die auf dem Display erscheinen, werden in der Bedienungsanleitung so \texttt{dargestellt}. Quellcode wird in einer farbigen Code-Darstellung eingebunden. - - -\begin{figure}[!ht] -\begin{tikztimingtable}[ - timing/slope=0, - timing/coldist=2pt, - xscale=5.0,yscale=3.1, - semithick - ] - %% Timing - DIT\ & LH 1{2C} \\ - DAH\ & 0.5LLHH 1{2C} \\ - Mode B\ & LHLHHLH 1{2C} \\ - \extracode - \makeatletter - \begin{pgfonlayer}{background} - \begin{scope}[gray,semitransparent,semithick] - \horlines{} - \vertlines{1,...,7} - \end{scope} - \node[anchor=south east,inner sep=0pt] - at (10,-4) {\tiny Output}; - \end{pgfonlayer} -\end{tikztimingtable} - -\caption{Diagramm Mode B} -\end{figure} - -\listoftables -\listoffigures -\appendix - -\end{document} diff --git a/External/Lab 2d - Sine_Wave_Generator(3).pdf b/External/Lab 2d - Sine_Wave_Generator(3).pdf deleted file mode 100644 index d871430..0000000 Binary files a/External/Lab 2d - Sine_Wave_Generator(3).pdf and /dev/null differ diff --git a/Pictures/.comments/Elektronik-1.png.xml b/Pictures/.comments/Elektronik-1.png.xml new file mode 100644 index 0000000..e8d4dc2 --- /dev/null +++ b/Pictures/.comments/Elektronik-1.png.xml @@ -0,0 +1,9 @@ + + + BJ-Keyer + BJ-Keyer V1.00 +Tom, DL7BJ + JO43GC + diff --git a/Pictures/Elektronik-1.png b/Pictures/Elektronik-1.png new file mode 100644 index 0000000..f41f7dc Binary files /dev/null and b/Pictures/Elektronik-1.png differ diff --git a/Pictures/Elektronik-2.png b/Pictures/Elektronik-2.png new file mode 100644 index 0000000..3c50ab5 Binary files /dev/null and b/Pictures/Elektronik-2.png differ diff --git a/Pictures/Elektronik-3.png b/Pictures/Elektronik-3.png new file mode 100644 index 0000000..28951e8 Binary files /dev/null and b/Pictures/Elektronik-3.png differ diff --git a/Pictures/Keyer-Begali.png b/Pictures/Keyer-Begali.png new file mode 100644 index 0000000..c080a0f Binary files /dev/null and b/Pictures/Keyer-Begali.png differ diff --git a/Pictures/Keyer-Gehäuse-1.png b/Pictures/Keyer-Gehäuse-1.png new file mode 100644 index 0000000..cadfc9b Binary files /dev/null and b/Pictures/Keyer-Gehäuse-1.png differ diff --git a/Pictures/Keyer-Gehäuse-2.png b/Pictures/Keyer-Gehäuse-2.png new file mode 100644 index 0000000..3c41531 Binary files /dev/null and b/Pictures/Keyer-Gehäuse-2.png differ diff --git a/Pictures/Keyer-Gehäuse-3.png b/Pictures/Keyer-Gehäuse-3.png new file mode 100644 index 0000000..b2e11de Binary files /dev/null and b/Pictures/Keyer-Gehäuse-3.png differ diff --git a/Pictures/dl7bj-shadow-vert.png b/Pictures/dl7bj-shadow-vert.png new file mode 100644 index 0000000..86bdb79 Binary files /dev/null and b/Pictures/dl7bj-shadow-vert.png differ diff --git a/Pictures/sinewave-dots.jpg b/Pictures/sinewave-dots.jpg index 129de23..b1fdb29 100644 Binary files a/Pictures/sinewave-dots.jpg and b/Pictures/sinewave-dots.jpg differ diff --git a/Pictures/sinewave-line.jpg b/Pictures/sinewave-line.jpg index 7ca941c..88b1f5c 100644 Binary files a/Pictures/sinewave-line.jpg and b/Pictures/sinewave-line.jpg differ diff --git a/Source/bj-keyer b/Source/bj-keyer new file mode 100644 index 0000000..bf8959f --- /dev/null +++ b/Source/bj-keyer @@ -0,0 +1,2659 @@ +# Doxyfile 1.9.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "BJ-Keyer" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = 1.03 + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = Morsekeyer für 2 TRX und 6 Morsetasten + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = ../Pictures/dl7bj-shadow-vert.png + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = ../Documents/Doxygen + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = YES + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = German + +# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all generated output in the proper direction. +# Possible values are: None, LTR, RTL and Context. +# The default value is: None. + +OUTPUT_TEXT_DIRECTION = None + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = NO + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# By default Python docstrings are displayed as preformatted text and doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines (in the resulting output). You can put ^^ in the value part of an +# alias to insert a newline as if a physical newline was in the original file. +# When you need a literal { or } or , in the value part of an alias you have to +# escape them by means of a backslash (\), this can lead to conflicts with the +# commands \{ and \} for these it is advised to use the version @{ and @} or use +# a double escape (\\{ and \\}) + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL, +# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use +# during processing. When set to 0 doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which efficively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and MacOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. If +# EXTRACT_ALL is set to YES then this flag will automatically be disabled. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the doxygen process doxygen will return with a non-zero status. +# Possible values are: NO, YES and FAIL_ON_WARNINGS. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), +# *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, *.vhdl, +# *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f18 \ + *.f \ + *.for \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.ice + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: +# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# performance. This can be particularly helpful with template rich C++ code for +# which doxygen's built-in parser lacks the necessary type information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled and the CLANG_ADD_INC_PATHS tag is set to +# YES then doxygen will add the directory of each input to the include path. +# The default value is: YES. + +CLANG_ADD_INC_PATHS = YES + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the directory containing a file called compile_commands.json. This +# file is the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# options used when the source files were built. This is equivalent to +# specifying the -p option to a clang tool, such as clang-check. These options +# will then be passed to the parser. Any options specified with CLANG_OPTIONS +# will be added as well. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = ../doxygen-awesome-css/doxygen-awesome.css + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE = LIGHT +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: +# https://www.microsoft.com/en-us/download/details.aspx?id=21138) on Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO +FULL_SIDEBAR = NO +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. +# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2 + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /