From 9300263411ac0c943fbc11a30a1c2d10d7581cf1 Mon Sep 17 00:00:00 2001
From: Jerzy Jamroz <jerzy.jamroz@esss.se>
Date: Mon, 25 Nov 2019 13:59:21 +0100
Subject: [PATCH] Update README.md

---
 .gitignore                                    |   1 +
 LICENSE                                       | 339 ++++++++++++++++++
 README.md                                     |  15 +-
 init/.gitkeep                                 |   0
 init/README.md                                |  19 +
 init/ess.json                                 | 136 +++++++
 spreadsheets/.gitkeep                         |   0
 .../20191031_Supercycle_Example_EX1.xlsx      | Bin 0 -> 14966 bytes
 supercycles/.gitkeep                          |   0
 tools/.gitkeep                                |   0
 tools/README.md                               |   8 +
 11 files changed, 516 insertions(+), 2 deletions(-)
 create mode 100644 .gitignore
 create mode 100644 LICENSE
 create mode 100644 init/.gitkeep
 create mode 100644 init/README.md
 create mode 100644 init/ess.json
 create mode 100644 spreadsheets/.gitkeep
 create mode 100644 spreadsheets/20191031_Supercycle_Example_EX1.xlsx
 create mode 100644 supercycles/.gitkeep
 create mode 100644 tools/.gitkeep
 create mode 100644 tools/README.md

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e43b0f9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.DS_Store
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..dd04245
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    LookupTables
+    Copyright (C) 2019  icshwi
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  {signature of Ty Coon}, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/README.md b/README.md
index c758f41..c7d1dd9 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,14 @@
-# LookupTables
+ESS Lookup Tables
+--
 
-ESS Lookup Tables
\ No newline at end of file
+# Directory description
+
+* init: will be loaded during the initialization. The facility constant configuration.
+* supercycles: will be loaded upon the selection (memorized PV with the supercycle table selection). The dynamic routines/cycles (runtime).
+* spreadsheets: examples for the supercycle usage.
+* tools: productivity enhancements.
+
+# Documentation
+
+## Data buffer
+* https://confluence.esss.lu.se/display/HAR/Data+Buffer
\ No newline at end of file
diff --git a/init/.gitkeep b/init/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/init/README.md b/init/README.md
new file mode 100644
index 0000000..4b18289
--- /dev/null
+++ b/init/README.md
@@ -0,0 +1,19 @@
+init
+--
+
+# Usage
+* Load this file upon the startup. The file contains the constant configuration of the machine.
+
+# Note
+* modes->id: will be hardcoded in the firmware by
+  * the machine protection group
+  * PLC group 
+* EVT_14HZ is always ON. The cycle fiducial mark and the first event within the sequence.
+
+# Target Segment
+* pv: TgSeg-RB [uint] - the actuall target segment number.
+
+# TODO
+* Event mapping for each mode.
+* 1Hz beam operation means that which events always exist in the 1Hz beam? ION_ST/END?
+* Constant base time shift for each event code.
\ No newline at end of file
diff --git a/init/ess.json b/init/ess.json
new file mode 100644
index 0000000..d7c58cd
--- /dev/null
+++ b/init/ess.json
@@ -0,0 +1,136 @@
+{
+  "Modes": {
+    "None": {
+      "id": 0,
+      "events": "None"
+    },
+    "Probe Beam": {
+      "id": 1,
+      "events": [
+        "ION_ST",
+        "ION_END",
+        "BPULSE_CM",
+        "BPULSE_ST",
+        "BPULSE_END",
+        "DATA"
+      ]
+    },
+    "Fast Tuning": {
+      "id": 2,
+      "events": [
+        "ION_ST",
+        "ION_END",
+        "BPULSE_CM",
+        "BPULSE_ST",
+        "BPULSE_END",
+        "DATA"
+      ]
+    },
+    "Slow Tuning": {
+      "id": 3,
+      "events": [
+        "ION_ST",
+        "ION_END",
+        "BPULSE_CM",
+        "BPULSE_ST",
+        "BPULSE_END",
+        "DATA"
+      ]
+    },
+    "Fat Probe": {
+      "id": 4,
+      "events": [
+        "ION_ST",
+        "ION_END",
+        "BPULSE_CM",
+        "BPULSE_ST",
+        "BPULSE_END",
+        "DATA"
+      ]
+    },
+    "Slow Studies": {
+      "id": 5,
+      "events": [
+        "ION_ST",
+        "ION_END",
+        "BPULSE_CM",
+        "BPULSE_ST",
+        "BPULSE_END",
+        "DATA"
+      ]
+    },
+    "Long Pulse Verification": {
+      "id": 6,
+      "events": [
+        "ION_ST",
+        "ION_END",
+        "BPULSE_CM",
+        "BPULSE_ST",
+        "BPULSE_END",
+        "DATA"
+      ]
+    },
+    "Shielding Verification": {
+      "id": 7,
+      "events": [
+        "ION_ST",
+        "ION_END",
+        "BPULSE_CM",
+        "BPULSE_ST",
+        "BPULSE_END",
+        "DATA"
+      ]
+    },
+    "Production": {
+      "id": 8,
+      "events": [
+        "ION_ST",
+        "ION_END",
+        "BPULSE_CM",
+        "BPULSE_ST",
+        "BPULSE_END",
+        "DATA"
+      ]
+    },
+    "Global": {
+      "pv": "PBMod"
+    }
+  },
+  "Destination": {
+    "None": {
+      "id": 0
+    },
+    "LEBT FC": {
+      "id": 1
+    },
+    "MEBT FC": {
+      "id": 2
+    },
+    "DTL 2 FC": {
+      "id": 3
+    },
+    "DTL 4 FC": {
+      "id": 4
+    },
+    "Spokes FC": {
+      "id": 5
+    },
+    "MBL Beam Stop": {
+      "id": 6
+    },
+    "Tuning Dump": {
+      "id": 7
+    },
+    "Target": {
+      "id": 8
+    },
+    "Global": {
+      "pv": "PBDest"
+    }
+  },
+  "Target": {
+    "Global": {
+      "pv": "TgSeg"
+    }
+  }
+}
\ No newline at end of file
diff --git a/spreadsheets/.gitkeep b/spreadsheets/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/spreadsheets/20191031_Supercycle_Example_EX1.xlsx b/spreadsheets/20191031_Supercycle_Example_EX1.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..af476dc4e24a86239151e0c7ef2b966fe362643e
GIT binary patch
literal 14966
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
IwqK?H2ZGhd+5i9m

literal 0
HcmV?d00001

diff --git a/supercycles/.gitkeep b/supercycles/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/tools/.gitkeep b/tools/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/tools/README.md b/tools/README.md
new file mode 100644
index 0000000..9d65423
--- /dev/null
+++ b/tools/README.md
@@ -0,0 +1,8 @@
+Tools
+--
+
+# Convert .json to a table
+* http://json2table.com/
+
+# Check the .json syntax
+* https://jsonformatter.curiousconcept.com/
-- 
GitLab