Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
135 commits
Select commit Hold shift + click to select a range
89065e3
Update sas.py
dedalgr May 20, 2021
6f03c4f
Update sas.py
dedalgr Jun 6, 2022
9bc98af
ported to python3 and formatted
zacharytomlinson Dec 14, 2023
ad461cf
Game machine ID function does not return financial data
zacharytomlinson Jan 19, 2024
2844126
Removed artifacts
zacharytomlinson Jan 19, 2024
f9edf92
Fixed CRC issues with python3
zacharytomlinson Jan 23, 2024
8255684
Initial passover and cleanup of code
zacharytomlinson Jan 23, 2024
367540f
Formatted with black
zacharytomlinson Jan 23, 2024
a9bf015
Fixed some name cases
zacharytomlinson Jan 24, 2024
86dc186
Merge pull request #4 from zacharytomlinson/name-fix
zacharytomlinson Jan 24, 2024
f2b78d5
Merge branch 'master' into black-format
zacharytomlinson Jan 24, 2024
71798dd
Merge pull request #3 from zacharytomlinson/black-format
zacharytomlinson Jan 24, 2024
50e14c5
chore: fix typo, var/func naming confusion, restructure of the projec…
Jan 24, 2024
cc8bfba
chore: forgot to check if self.trasaction is populated before using it
Jan 24, 2024
8452a79
chore: black reformatting
Jan 24, 2024
b9d9e30
chore: test case skeleton
Jan 24, 2024
754ee7d
chore: test case skeleton
Jan 24, 2024
0289aaa
chore: detached config file from library. It's a lib and not a program
Jan 24, 2024
35a9f90
chore: updated test case skeleton
Jan 24, 2024
1e699a5
Merge remote-tracking branch 'origin/cleaning-and-restructure' into c…
Jan 24, 2024
7462a17
chore: reformatted with black
Jan 24, 2024
4bb9397
Merge pull request #5 from zacharytomlinson/cleaning-and-restructure
zacharytomlinson Jan 24, 2024
844b7a4
Update example.py
dedalgr Jan 26, 2024
f2a2187
Transfered dictionaries to dataclasses
zacharytomlinson Jan 26, 2024
5448647
Added instructions for getting RPI 3 running and stubbed out for RPI …
zacharytomlinson Jan 27, 2024
76c0d98
Added clarification of logic level converter so people don't fry thei…
zacharytomlinson Jan 27, 2024
d6c8af0
Merge pull request #7 from zacharytomlinson/rpi-3-instructions
well-it-wasnt-me Jan 28, 2024
39e1a05
Merge pull request #6 from dedalgr/patch-3
well-it-wasnt-me Jan 28, 2024
504168f
chore: requirements update
Jan 28, 2024
ac1e2e5
chore: requirements update
Jan 28, 2024
beb7427
chore: code reformatting, use of models, remnoved dictionaries, added…
Jan 28, 2024
7813d65
chore: test case to be done
Jan 28, 2024
210aaa6
chore: gitignore update to not push around the benchmark folder
Jan 28, 2024
1c2f245
chore: docs, first draft
Jan 28, 2024
f9a2360
Merge pull request #8 from zacharytomlinson/models-comments-tests
well-it-wasnt-me Jan 29, 2024
c1e0792
chore: fix conf.py path
well-it-wasnt-me Jan 29, 2024
ce40a2d
chore: readme update
well-it-wasnt-me Jan 29, 2024
08b1c3c
Merge pull request #10 from zacharytomlinson/well-it-wasnt-me-patch-1
well-it-wasnt-me Jan 29, 2024
7f06aa2
Merge pull request #11 from zacharytomlinson/well-it-wasnt-me-patch-2
well-it-wasnt-me Jan 29, 2024
75beb9b
Update sas.py
dedalgr Jan 30, 2024
d896ec7
Merge pull request #12 from dedalgr/patch-4
well-it-wasnt-me Jan 30, 2024
59ef4e5
chore: fix var name from constant not initializated to self.poll_timeout
well-it-wasnt-me Jan 30, 2024
86a7902
chore: fixed some missing translation and removed unused constant
Jan 30, 2024
dee45af
Merge pull request #13 from zacharytomlinson/well-it-wasnt-me-patch-1
well-it-wasnt-me Jan 30, 2024
29a937d
Merge pull request #14 from zacharytomlinson/various-fix
well-it-wasnt-me Jan 30, 2024
bc99e3a
chore: readme update
well-it-wasnt-me Jan 30, 2024
d110043
chore: bug template
well-it-wasnt-me Jan 30, 2024
a4547a6
chore: feature template
well-it-wasnt-me Jan 30, 2024
1fbd0b9
chore: bug.md update
well-it-wasnt-me Jan 30, 2024
1126d4b
Merge pull request #16 from zacharytomlinson/issue-templating
well-it-wasnt-me Jan 30, 2024
c55a8b6
Merge pull request #15 from zacharytomlinson/readme-update
well-it-wasnt-me Jan 30, 2024
738f33a
chore: typo error fix
well-it-wasnt-me Jan 31, 2024
7d336e1
Merge pull request #17 from zacharytomlinson/well-it-wasnt-me-patch-1
well-it-wasnt-me Jan 31, 2024
0ef0718
chore: fix bug #18
well-it-wasnt-me Jan 31, 2024
7e38e0b
Fixed crc comparators in _check_response
zacharytomlinson Jan 31, 2024
fce8c2d
remove fix me pertaining to bug
zacharytomlinson Jan 31, 2024
603ed04
Merge pull request #20 from zacharytomlinson/crc-checkresponse-fix
well-it-wasnt-me Jan 31, 2024
0effe2c
Merge pull request #19 from zacharytomlinson/18-bug-error-in-choosing…
well-it-wasnt-me Jan 31, 2024
814e143
add example.py to gitignore and ran static code analysis (flake8) on …
zacharytomlinson Jan 31, 2024
ec63ece
undid automated **kwargs insertions
zacharytomlinson Jan 31, 2024
27f7c54
Merge pull request #21 from zacharytomlinson/flake8-static-analysis
well-it-wasnt-me Jan 31, 2024
2b7867b
chore: update bug template and relative typo fix
Feb 16, 2024
c886351
chore: updated config.yml in order to be more in line with common set…
Feb 16, 2024
566bf17
chore: fix function is_open, was calling a wrong method. How the heck…
well-it-wasnt-me Feb 16, 2024
df773db
chore: updated, again, config.yml to avoid type coercion during confi…
Feb 16, 2024
da94329
chore: updated the example in accordance with new features
Feb 16, 2024
4eb40b6
chore(feat): Added "perpetual" or "infinite" mode where if true the l…
Feb 16, 2024
86728d1
chore: way to much to summarize.
well-it-wasnt-me Feb 17, 2024
84b9bde
chore: way to much to summarize.
well-it-wasnt-me Feb 17, 2024
d7c4afb
chore: readthedocs should work now
Feb 17, 2024
a0958ac
chore: readme update to integrate readthedocs
well-it-wasnt-me Feb 17, 2024
9a7b504
Merge pull request #24 from zacharytomlinson/chore-chore-chore-i-hate…
zacharytomlinson Feb 17, 2024
ff004ad
Static CRC method in utilities
zacharytomlinson Feb 21, 2024
04937b4
Config adjust
zacharytomlinson Feb 21, 2024
d103c01
Added disable real time default back in
zacharytomlinson Feb 21, 2024
549fc85
Change Crc from class to utility file
zacharytomlinson Feb 21, 2024
65e9d1c
Change dynamic pyload type to static
zacharytomlinson Feb 21, 2024
95beabc
Fix calculation bit shift direction
zacharytomlinson Feb 21, 2024
79d048f
oops
zacharytomlinson Feb 21, 2024
0b88553
log
zacharytomlinson Feb 21, 2024
c86b1fc
returning crc as tuple of ints
zacharytomlinson Feb 22, 2024
47e676e
sas version call is not working
zacharytomlinson Feb 22, 2024
e43209a
Added endianness to crc return
zacharytomlinson Feb 22, 2024
98dc70f
Change printing of crc to bit shifted output
zacharytomlinson Feb 22, 2024
049072f
CHange old CRC calculation to not parse utf-8 and changed byte array …
zacharytomlinson Feb 22, 2024
7ad3066
Condence CRC calculation
zacharytomlinson Feb 22, 2024
4593c36
Adjust CRC calculation
zacharytomlinson Feb 22, 2024
cf15d6d
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
5523a27
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
b30feff
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
07c6444
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
f01614c
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
79ade1a
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
210ca76
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
93b63f5
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
4bf56e1
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
080b3d0
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
2a7ac6b
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
29f304b
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
72af8ba
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
89ad50b
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
a720ff7
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
a1275d6
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
e237f23
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
7b7bdc7
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
3ed7bed
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
633ff39
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
fed7391
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
13d7f89
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
89f6324
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
feecdf9
Adjust CRC calculation
zacharytomlinson Feb 23, 2024
d08de12
Comparing machine crc with my calculated crc for error checking
zacharytomlinson Feb 23, 2024
62a03ed
Comparing machine crc with my calculated crc for error checking
zacharytomlinson Feb 23, 2024
eee2f99
Comparing machine crc with my calculated crc for error checking
zacharytomlinson Feb 23, 2024
1364184
Comparing machine crc with my calculated crc for error checking
zacharytomlinson Feb 23, 2024
196de6e
Comparing machine crc with my calculated crc for error checking
zacharytomlinson Feb 23, 2024
4f2bb96
Comparing machine crc with my calculated crc for error checking
zacharytomlinson Feb 23, 2024
7135703
Comparing machine crc with my calculated crc for error checking
zacharytomlinson Feb 23, 2024
43e7ccd
Comparing machine crc with my calculated crc for error checking
zacharytomlinson Feb 23, 2024
82d282f
Comparing machine crc with my calculated crc for error checking
zacharytomlinson Feb 23, 2024
a6fd702
Comparing machine crc with my calculated crc for error checking
zacharytomlinson Feb 23, 2024
001171a
Finalizing CRC changes
zacharytomlinson Feb 23, 2024
6f2374d
Finalizing CRC changes
zacharytomlinson Feb 23, 2024
e0eef0c
Merge pull request #25 from zacharytomlinson/zacharytomlinson-crc-adhoc
well-it-wasnt-me Feb 23, 2024
cfd0202
chore: adding ci for semantic-release
well-it-wasnt-me Feb 25, 2024
8c540c8
docs: adding changelog
well-it-wasnt-me Feb 25, 2024
94f8b99
Merge pull request #26 from zacharytomlinson/gh-workflows-changelog
zacharytomlinson Feb 25, 2024
1668cff
Moved crc check to util class and added a deprecation annotation so w…
zacharytomlinson Mar 1, 2024
e551937
Merge pull request #27 from zacharytomlinson/zmt/crc-validate-utilfunc
well-it-wasnt-me Mar 1, 2024
6a4229a
0.0.0
invalid-email-address Mar 2, 2024
cf68fd7
check_last_transaction it must be modifiable. There are machines that…
dedalgr Mar 2, 2024
eac5177
fix: adding var and function renaming
well-it-wasnt-me Mar 2, 2024
c17eecf
0.0.1
invalid-email-address Mar 2, 2024
f2f8d9b
Update sas.py
dedalgr Mar 4, 2024
b88cfda
Update sas.py
dedalgr Mar 4, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .github/ISSUE_TEMPLATE/bug.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
name: Bug Report
about: Submit a bug report
labels: "bug"
title: '[BUG]'
---


**Bug Report**

(A clear and concise description of what the bug is.)

**To Reproduce**

```python
# Ideally, a small sample program that demonstrates the problem.
```

**Expected Behavior**

<!--
How did you expect saspy to behave? It’s fine if you’re not sure your understanding is correct.
Write down what you thought would happen.
-->

**Actual Behavior**

<!-- What went wrong? Some output would be nice. -->

**Your Environment**

<!-- Include as many relevant details about the environment you experienced the bug in -->

- SASPy version used:
- Python version used:
- O.S. running the code:
- VLT Vendor and Model:

**Connection Method (check one please)**
- [ ] Prolific USB Cable
- [ ] Raspberry miniUART
- [ ] RS-232 to TTL (Like MAX3323)
- [ ] Other: <!-- Write here -->
15 changes: 15 additions & 0 deletions .github/ISSUE_TEMPLATE/feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
name: Feature Proposal
about: This is a template for proposing a new feature to SASPy
title: '[FEATURE]'
---

**Author**:

### Summary of the feature being proposed
(write here)

### What value does this feature bring to SASPy ?
(write here)
### Are you willing to implement this feature yourself?
(write here)
24 changes: 24 additions & 0 deletions .github/workflows/versioning.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Semantic Release

on:
push:
branches:
- master

jobs:
release:
runs-on: ubuntu-latest
concurrency: release
permissions:
id-token: write
contents: write

steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Python Semantic Release
uses: python-semantic-release/python-semantic-release@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ MANIFEST
pip-log.txt
pip-delete-this-directory.txt

# Local testing
example.py

# Unit test / coverage reports
htmlcov/
.tox/
Expand Down Expand Up @@ -102,3 +105,8 @@ venv.bak/

# mypy
.mypy_cache/

# IDEs
.idea

.benchmark
32 changes: 32 additions & 0 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# .readthedocs.yaml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

# Required
version: 2

# Set the OS, Python version and other tools you might need
build:
os: ubuntu-22.04
tools:
python: "3.10"
# You can also specify other tool versions:
# nodejs: "19"
# rust: "1.64"
# golang: "1.19"

# Build documentation in the "docs/" directory with Sphinx
sphinx:
configuration: docs/conf.py

# Optionally build your docs in additional formats such as PDF and ePub
formats:
- pdf


# Optional but recommended, declare the Python requirements required
# to build your documentation
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: docs/requirements.txt
365 changes: 365 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2019 thomas-pythonas
Copyright (c) 2024 thomas-pythonas | zacharytomlinson | well-it-wasnt-me

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
37 changes: 29 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,34 @@
# saspy
Slots accounting system protocol based on Python for arm architecture
# SASPY
[![Documentation Status](https://readthedocs.org/projects/saspy/badge/?version=latest)](https://saspy.readthedocs.io/en/latest/?badge=latest)

The SAS library was made using python and can be used for linux-based single-board computers (Raspberry, Orange PI, Banana Pi).
The Library is used for connecting to EGM by RS-232 protocol and for receiving and processing some data of SAS-protocol.
<p align="center">
<img src="https://github.com/zacharytomlinson/saspy/assets/15037424/e8a8efc8-e83f-44f9-9ca1-7543a280e6b3" width="300" height="auto">
</p>
Slots Accounting System (SAS) Protocol is a standard when comes to Slot Machine and VLTs. And because we were bored and with not enough things to do we decided to build this library

SAS (Slot Accounting System) protocol is the de facto casino communications standards designed to automate slot machine meter reporting and event logging, player tracking, bonusing, ticketing and cashless gaming.
## Scope
This project, once reached a stable release, will be published on [PyPi](https://pypi.org/) as a Python package.

The EGM and SMIB communicate each other in SAS protocol standards, whereas communication between the SMIB and host is not standardized, which interoperability and standards issue is resolved by new standards, G2S (Game to System) protocol. SMIB also provides touch screen and card readers for AFT and player tracking service.
# Documentation
Since this library is still under heavy development (but at least is working !) comments are still not complete and there is a draft of documentation into `docs/` folder.

The System architecture of SAS Protocol: SAS protocol is used for communication between EGM and SMIB. SAS protocol consists of 3 layers of physical layer, link layer, and application layer. The physical layer leverages RS-232 at 9.2kbps of 1 start bit, 8 data bits, and 1wakeup bit and 1 stop bit. The wakeup bit is used for signaling the frame start byte and needs special care in implementation (described later). Master-slave polling mechanism is used for the medium access control similar to USB and traditional remote terminal system. Each EGM is assigned a link address of 1 to 127. ‘0’ is used for broadcasting. The polling rate ranges from 200ms to 5s but can be reduced to 40ms when EGM support RTE (real time event) mode. SMIB uses two different types of polls, GP (general poll) and LP (long poll). GP is one byte EGM address with wakeup bit set, and polls events generated in the receiving EGM system. The receiving EGM should respond with 1 byte event code, which is called ‘exception’ in the specification. The exceptions include non-priority exceptions such as no event, game start, game end, system tilt, and priority exceptions such as handpay condition, ticket out, ticket in, and fund-transfer request. LP is used for SMIB to send command to EGMs and classified into R(read)-type, S(set)-type, M(multi-game)-type, and G (global)-type. LP starts with 1 byte command value with wakeup bit set, and the lengths of LP are fixed or variable depending on the command. All LP except R-type contains CRC-16 (cyclic redundancy check) for bit error detection. The response frame uses the similar format but with wakeup bit off. SMIB use implied ACK mechanism for confirming the receipt.
All the latest documentation regarding this library can be found on [Read The Docs](https://saspy.readthedocs.io/)

SAS Protocol Application Functions: ROM signature request, Metric, Progressive broadcast, Tournament operation, RTE (real time event), Bonus Controller, Jackpot hand-pay, TITO(Ticket in/out), Multi-denomination, AFT, Component Authentication
In the meantime feel free to checkout the [WiKi of this project](https://github.com/zacharytomlinson/saspy/wiki) where you are gonna find response and solutions to common problems we faced during our journey

# Contribute
Not many rules. Fork the repo, write your code, create pull request. Remember to use black for formatting and give a shot to pylint.

## Issue & Implementation
Please, use the [Issues tab](https://github.com/zacharytomlinson/saspy/issues) to propose an eventual enhancement or to submit an issue.

# Authors
This project was initiated by [thomas-pythonas](https://github.com/thomas-pythonas) in 2018 and has no update since then.

Current author and mantainer are:

- [Zachary Tomlinson](https://github.com/zacharytomlinson)
- [Antonio D'Angelo](https://github.com/well-it-wasnt-me)

# Thanks to
* [Grigor Kolev](https://github.com/dedalgr) for his precious help
21 changes: 21 additions & 0 deletions config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
connection:
serial_port: /dev/ttyUSB0
timeout: 2
baudrate: 19200
infinite: False

events:
poll_timeout: 0.5
poll_address: 0x82 # Standard Poll Address - On most the machines | Try 0x80 if 82 dont work

debug:
level: DEBUG # CRITICAL | ERROR | WARNING | INFO | DEBUG | NOTSET

security:
key: 44

machine:
pos_id: "B374A402"
reg_key: "0000000000000000000000000000000000000000"
asset_number: "15cd5b07" # Asset Magic Number - Works on every machine !
denomination: 0.01
17 changes: 17 additions & 0 deletions config_handler.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import yaml


class ConfigHandler:
def __init__(self, file_path="config.yml"):
self.config_file_path = file_path
self.config = None

def read_config_file(self):
with open(self.config_file_path, "r") as yaml_file:
self.config = yaml.safe_load(yaml_file)

def get_config_value(self, section, key):
if self.config:
return self.config.get(section, {}).get(key)
else:
raise ValueError("Configuration not loaded. Call read_config_file first.")
20 changes: 20 additions & 0 deletions docs/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Minimal makefile for Sphinx documentation
#

# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = .
BUILDDIR = _build

# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

.PHONY: help Makefile

# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
58 changes: 58 additions & 0 deletions docs/conf.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html

# -- Path setup --------------------------------------------------------------

# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import os
import sys
sys.path.insert(0, os.path.abspath('..'))


# -- Project information -----------------------------------------------------

project = 'SASPy'
copyright = "2024, Zachary Tomlinson, Antonio D'Angelo"
author = "Zachary Tomlinson, Antonio D'Angelo"

# The full version, including alpha/beta/rc tags
release = '2.0.0'


# -- General configuration ---------------------------------------------------

# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.coverage',
'sphinx.ext.napoleon'
]

# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']

# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']


# -- Options for HTML output -------------------------------------------------

# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = 'sphinx_rtd_theme'

# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
27 changes: 27 additions & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
Welcome to SASPy's documentation!
===================================

.. image:: saspy-logo.jpeg
:align: center
:width: 300

|
| **SASPy** is a Python library for handling your beloved VLTs via SAS Protocol.

At moment is compatible with SAS v6.02+

Check out the :ref:`wiki-home`. section for more information about connections and common problems.

.. note::
This project is under active development.


.. toctree::
:maxdepth: 1
:caption: Table of Contents
:name: mastertoc
:glob:

Home <self>
Wiki <wiki/WikiHome>
The Library <sas-lib/main>
35 changes: 35 additions & 0 deletions docs/make.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
@ECHO OFF

pushd %~dp0

REM Command file for Sphinx documentation

if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=.
set BUILDDIR=_build

if "%1" == "" goto help

%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)

%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
goto end

:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%

:end
popd
3 changes: 3 additions & 0 deletions docs/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
sphinx
sphinx_rtd_theme
readthedocs-sphinx-search
7 changes: 7 additions & 0 deletions docs/sas-lib/error_handler.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Error Handling
=====================

.. automodule:: error_handler
:members:
:undoc-members:
:show-inheritance:
Loading