Full Code of kramble/FPGA-Litecoin-Miner for AI

master 5cbab90ba17a cached
256 files
2.3 MB
621.6k tokens
1265 symbols
1 requests
Download .txt
Showing preview only (2,483K chars total). Download the full file or copy to clipboard to get everything.
Repository: kramble/FPGA-Litecoin-Miner
Branch: master
Commit: 5cbab90ba17a
Files: 256
Total size: 2.3 MB

Directory structure:
gitextract_t5t89av7/

├── .gitattributes
├── .gitignore
├── BeMicro/
│   ├── README.txt
│   ├── ltcminer.qpf
│   ├── ltcminer.qsf
│   └── ltcminer.sdc
├── DE0-Nano/
│   ├── ltcminer.qpf
│   ├── ltcminer.qsf
│   └── ltcminer.sdc
├── DE2-115-Single/
│   ├── README.txt
│   ├── ltcminer.qpf
│   ├── ltcminer.qsf
│   └── ltcminer.sdc
├── ICARUS-LX150/
│   ├── MiningSoftware/
│   │   ├── README.txt
│   │   ├── ltcminer-testmode.py
│   │   ├── ltcminer.py
│   │   ├── pyserial-2.6/
│   │   │   ├── CHANGES.txt
│   │   │   ├── LICENSE.txt
│   │   │   ├── MANIFEST.in
│   │   │   ├── PKG-INFO
│   │   │   ├── README.txt
│   │   │   ├── documentation/
│   │   │   │   ├── Makefile
│   │   │   │   ├── appendix.rst
│   │   │   │   ├── conf.py
│   │   │   │   ├── examples.rst
│   │   │   │   ├── index.rst
│   │   │   │   ├── pyparallel.rst
│   │   │   │   ├── pyserial.rst
│   │   │   │   ├── pyserial_api.rst
│   │   │   │   └── shortintro.rst
│   │   │   ├── examples/
│   │   │   │   ├── enhancedserial.py
│   │   │   │   ├── port_publisher.py
│   │   │   │   ├── port_publisher.sh
│   │   │   │   ├── rfc2217_server.py
│   │   │   │   ├── scan.py
│   │   │   │   ├── scanlinux.py
│   │   │   │   ├── scanwin32.py
│   │   │   │   ├── setup-miniterm-py2exe.py
│   │   │   │   ├── setup-rfc2217_server-py2exe.py
│   │   │   │   ├── setup-wxTerminal-py2exe.py
│   │   │   │   ├── tcp_serial_redirect.py
│   │   │   │   ├── wxSerialConfigDialog.py
│   │   │   │   ├── wxSerialConfigDialog.wxg
│   │   │   │   ├── wxTerminal.py
│   │   │   │   └── wxTerminal.wxg
│   │   │   ├── serial/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── rfc2217.py
│   │   │   │   ├── serialcli.py
│   │   │   │   ├── serialjava.py
│   │   │   │   ├── serialposix.py
│   │   │   │   ├── serialutil.py
│   │   │   │   ├── serialwin32.py
│   │   │   │   ├── sermsdos.py
│   │   │   │   ├── tools/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── list_ports.py
│   │   │   │   │   ├── list_ports_posix.py
│   │   │   │   │   ├── list_ports_windows.py
│   │   │   │   │   └── miniterm.py
│   │   │   │   ├── urlhandler/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── protocol_hwgrep.py
│   │   │   │   │   ├── protocol_loop.py
│   │   │   │   │   ├── protocol_rfc2217.py
│   │   │   │   │   └── protocol_socket.py
│   │   │   │   └── win32.py
│   │   │   ├── setup.py
│   │   │   └── test/
│   │   │       ├── run_all_tests.py
│   │   │       ├── test.py
│   │   │       ├── test_advanced.py
│   │   │       ├── test_high_load.py
│   │   │       ├── test_iolib.py
│   │   │       ├── test_readline.py
│   │   │       └── test_url.py
│   │   └── python-jsonrpc/
│   │       ├── jsonrpc/
│   │       │   ├── __init__.py
│   │       │   ├── _tests/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── test_cgiwrapper.py
│   │       │   │   ├── test_json.py
│   │       │   │   ├── test_modpywrapper.py
│   │       │   │   ├── test_proxy.py
│   │       │   │   └── test_serviceHandler.py
│   │       │   ├── cgiwrapper.py
│   │       │   ├── json.py
│   │       │   ├── modpywrapper.py
│   │       │   ├── proxy.py
│   │       │   └── serviceHandler.py
│   │       ├── run-tests.py
│   │       └── setup.py
│   ├── README.txt
│   ├── dyn_pll_ctrl.v
│   ├── hub_core.v
│   ├── ltcminer_icarus.ucf
│   ├── ltcminer_icarus.v
│   ├── pbkdfengine.v
│   ├── pwm_fade.v
│   ├── salsa_slowsixteen.v
│   ├── salsaengine.v
│   ├── serial.v
│   ├── serial_hub.v
│   ├── test_icarus.v
│   ├── uart_receiver.v
│   ├── uart_transmitter.v
│   ├── xilinx_dyn_pll.v
│   ├── xilinx_pll.v
│   └── xilinx_ram.v
├── LICENSE.txt
├── README.txt
├── bitstreams.txt
├── experimental/
│   ├── CM1/
│   │   ├── README.txt
│   │   ├── dcm_controller.v
│   │   ├── flasher.v
│   │   ├── hashvoodoo.ucf
│   │   ├── hashvoodoo.v
│   │   ├── hashvoodoo_test.v
│   │   ├── hub_core.v
│   │   ├── main_dcm.v
│   │   ├── pbkdfengine.v
│   │   ├── pwm_fade.v
│   │   ├── salsa_slowsixteen.v
│   │   ├── salsaengine.v
│   │   ├── serial_core.v
│   │   ├── sha-256-functions.v
│   │   ├── sha256_transform.v
│   │   ├── uart.v
│   │   ├── uart_baudgenerator.v
│   │   ├── uart_rx.v
│   │   ├── uart_tx.v
│   │   └── xilinx_ram.v
│   ├── DE2-115-SLOWSIXTEEN/
│   │   ├── README.txt
│   │   ├── altera_pll.v
│   │   ├── altera_virtual_wire.v
│   │   ├── ltcminer.qpf
│   │   ├── ltcminer.qsf
│   │   ├── ltcminer.sdc
│   │   ├── ltcminer.v
│   │   ├── pbkdfengine.v
│   │   ├── salsa_slowsixteen.v
│   │   ├── salsaengine.v
│   │   ├── sha-256-functions.v
│   │   ├── sha256_transform.v
│   │   ├── sim_ram.v
│   │   └── test_ltcminer.v
│   ├── LX150-EIGHT-A/
│   │   ├── README.txt
│   │   ├── ltcminer_icarus.ucf
│   │   ├── ltcminer_icarus.v
│   │   ├── pbkdfengine.v
│   │   ├── salsa_piped.v
│   │   ├── salsaengine.v
│   │   ├── sgen.c
│   │   ├── sgen.inc
│   │   ├── test_icarus.v
│   │   └── xilinx_dpram.v
│   ├── LX150-EIGHT-B/
│   │   ├── README.txt
│   │   ├── dyn_pll_ctrl.v
│   │   ├── ltcminer-dynclock.py
│   │   ├── ltcminer-test-dynclock.py
│   │   ├── ltcminer_icarus.ucf
│   │   ├── ltcminer_icarus.v
│   │   ├── pbkdfengine.v
│   │   ├── salsa_piped.v
│   │   ├── salsaengine.v
│   │   ├── sgen.c
│   │   ├── sgen.inc
│   │   ├── test_icarus.v
│   │   ├── xilinx_dpram.v
│   │   └── xilinx_dyn_pll.v
│   ├── LX150-EIGHT-C/
│   │   ├── README.txt
│   │   ├── dyn_pll_ctrl.v
│   │   ├── ltcminer_icarus.ucf
│   │   ├── ltcminer_icarus.v
│   │   ├── pbkdfengine.v
│   │   ├── salsa_piped.v
│   │   ├── salsaengine.v
│   │   ├── sgen.c
│   │   ├── sgen.inc
│   │   ├── test_icarus.v
│   │   ├── xilinx_dpram.v
│   │   └── xilinx_dyn_pll.v
│   ├── LX150-SIXTYFOUR-A/
│   │   ├── dyn_pll_ctrl.v
│   │   ├── ltcminer_icarus.ucf
│   │   ├── ltcminer_icarus.v
│   │   ├── pbkdfengine.v
│   │   ├── salsa_piped.v
│   │   ├── salsaengine.v
│   │   ├── sgen.c
│   │   ├── sgen.inc
│   │   ├── test_icarus.v
│   │   ├── xilinx_dpram.v
│   │   └── xilinx_dyn_pll.v
│   ├── LX150-SLOWEIGHT-A/
│   │   ├── dyn_pll_ctrl.v
│   │   ├── ltcminer_icarus.ucf
│   │   ├── ltcminer_icarus.v
│   │   ├── pbkdfengine.v
│   │   ├── salsa_sloweight.v
│   │   ├── salsaengine.v
│   │   ├── test_icarus.v
│   │   ├── xilinx_dpram.v
│   │   └── xilinx_dyn_pll.v
│   ├── LX150-SLOWSIXTEEN-A/
│   │   ├── dyn_pll_ctrl.v
│   │   ├── ltcminer_icarus.ucf
│   │   ├── ltcminer_icarus.v
│   │   ├── pbkdfengine.v
│   │   ├── salsa_slowsixteen.v
│   │   ├── salsaengine.v
│   │   ├── test_icarus.v
│   │   ├── xilinx_dpram.v
│   │   └── xilinx_dyn_pll.v
│   ├── LX150-SPLIT/
│   │   ├── README.txt
│   │   ├── ltcminer_icarus.ucf
│   │   ├── ltcminer_icarus.v
│   │   ├── pbkdfengine.v
│   │   └── salsaengine.v
│   ├── README.txt
│   ├── ZTEX/
│   │   ├── README.txt
│   │   ├── ztex_ufm1_15.ucf
│   │   └── ztex_ufm1_15b1_litecoin.v
│   ├── Ztex-1-15y/
│   │   ├── README.txt
│   │   ├── cgminer-3.1.1/
│   │   │   ├── README.txt
│   │   │   ├── cgminer.c
│   │   │   ├── driver-icarus.c
│   │   │   ├── driver-ztex.c
│   │   │   ├── libztex.c
│   │   │   ├── libztex.h
│   │   │   └── miner.h
│   │   ├── pbkdfengine.v
│   │   ├── salsa_slowsixteen.v
│   │   ├── salsaengine.v
│   │   ├── sha-256-functions.v
│   │   ├── sha256_transform.v
│   │   ├── test_miner.v
│   │   ├── xilinx_ram.v
│   │   ├── ztex_ufm1_15y.ucf
│   │   └── ztex_ufm1_15y1.v
│   ├── hashvariant-A.v
│   ├── hashvariant-B.v
│   ├── hashvariant-C.v
│   └── salsa-B.v
├── scripts/
│   ├── config.example.tcl
│   ├── json_rpc.tcl
│   ├── jtag_comm.tcl
│   ├── mine.bat
│   ├── mine.sh
│   ├── mine.tcl
│   ├── program-fpga-board.bat
│   ├── program-fpga-board.tcl
│   ├── test_data.txt
│   ├── test_data_cut.txt
│   ├── test_data_full.txt
│   └── utils.tcl
└── source/
    ├── altera_pll.v
    ├── altera_ram.v
    ├── altera_virtual_wire.v
    ├── hashcore.v
    ├── ltcminer.v
    ├── salsa.v
    ├── sha-256-functions.v
    ├── sha256_transform.v
    └── test_ltcminer.v

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto

# Custom for Visual Studio
*.cs     diff=csharp
*.sln    merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union

# Standard to msysgit
*.doc	 diff=astextplain
*.DOC	 diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot  diff=astextplain
*.DOT  diff=astextplain
*.pdf  diff=astextplain
*.PDF	 diff=astextplain
*.rtf	 diff=astextplain
*.RTF	 diff=astextplain


================================================
FILE: .gitignore
================================================
#################
## Eclipse
#################

*.pydevproject
.project
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath

# External tool builders
.externalToolBuilders/

# Locally stored "Eclipse launch configurations"
*.launch

# CDT-specific
.cproject

# PDT-specific
.buildpath


#################
## Visual Studio
#################

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.sln.docstates

# Build results

[Dd]ebug/
[Rr]elease/
x64/
build/
[Bb]in/
[Oo]bj/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.log
*.scc

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile

# Visual Studio profiler
*.psess
*.vsp
*.vspx

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# NCrunch
*.ncrunch*
.*crunch*.local.xml

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.Publish.xml
*.pubxml

# NuGet Packages Directory
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
#packages/

# Windows Azure Build Output
csx
*.build.csdef

# Windows Store app package directory
AppPackages/

# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.[Pp]ublish.xml
*.pfx
*.publishsettings

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
App_Data/*.mdf
App_Data/*.ldf

#############
## Windows detritus
#############

# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Mac crap
.DS_Store


#############
## Python
#############

*.py[co]

# Packages
*.egg
*.egg-info
dist/
build/
eggs/
parts/
var/
sdist/
develop-eggs/
.installed.cfg

# Installer logs
pip-log.txt

# Unit test / coverage reports
.coverage
.tox

#Translations
*.mo

#Mr Developer
.mr.developer.cfg


================================================
FILE: BeMicro/README.txt
================================================
BeMicro port by litecoin forum member "Minor" https://forum.litecoin.net/index.php?action=profile;u=15431

+-------------------------------------------------------------------------------+
; Flow Summary                                                                  ;
+------------------------------------+------------------------------------------+
; Flow Status                        ; Successful - Wed Sep 18 13:46:51 2013    ;
; Quartus II Version                 ; 10.1 Build 153 11/29/2010 SJ Web Edition ;
; Revision Name                      ; ltcminer                                 ;
; Top-level Entity Name              ; ltcminer                                 ;
; Family                             ; Cyclone IV E                             ;
; Device                             ; EP4CE22F17C7                             ;
; Timing Models                      ; Final                                    ;
; Total logic elements               ; 18,713 / 22,320 ( 84 % )                 ;
;     Total combinational functions  ; 16,012 / 22,320 ( 72 % )                 ;
;     Dedicated logic registers      ; 10,483 / 22,320 ( 47 % )                 ;
; Total registers                    ; 10483                                    ;
; Total pins                         ; 9 / 154 ( 6 % )                          ;
; Total virtual pins                 ; 0                                        ;
; Total memory bits                  ; 524,288 / 608,256 ( 86 % )               ;
; Embedded Multiplier 9-bit elements ; 0 / 132 ( 0 % )                          ;
; Total PLLs                         ; 1 / 4 ( 25 % )                           ;
+------------------------------------+------------------------------------------+


================================================
FILE: BeMicro/ltcminer.qpf
================================================
# -------------------------------------------------------------------------- #
#
# Copyright (C) 1991-2010 Altera Corporation
# Your use of Altera Corporation's design tools, logic functions 
# and other software and tools, and its AMPP partner logic 
# functions, and any output files from any of the foregoing 
# (including device programming or simulation files), and any 
# associated documentation or information are expressly subject 
# to the terms and conditions of the Altera Program License 
# Subscription Agreement, Altera MegaCore Function License 
# Agreement, or other applicable license agreement, including, 
# without limitation, that your use is for the sole purpose of 
# programming logic devices manufactured by Altera and sold by 
# Altera or its authorized distributors.  Please refer to the 
# applicable agreement for further details.
#
# -------------------------------------------------------------------------- #
#
# Quartus II
# Version 10.0 Build 262 08/18/2010 Service Pack 1 SJ Web Edition
# Date created = 19:43:05  May 18, 2011
#
# -------------------------------------------------------------------------- #

QUARTUS_VERSION = "10.0"
DATE = "19:43:05  May 18, 2011"

# Revisions

PROJECT_REVISION = "ltcminer"



================================================
FILE: BeMicro/ltcminer.qsf
================================================
# -------------------------------------------------------------------------- #
#
# Copyright (C) 1991-2010 Altera Corporation
# Your use of Altera Corporation's design tools, logic functions
# and other software and tools, and its AMPP partner logic
# functions, and any output files from any of the foregoing
# (including device programming or simulation files), and any
# associated documentation or information are expressly subject
# to the terms and conditions of the Altera Program License
# Subscription Agreement, Altera MegaCore Function License
# Agreement, or other applicable license agreement, including,
# without limitation, that your use is for the sole purpose of
# programming logic devices manufactured by Altera and sold by
# Altera or its authorized distributors.  Please refer to the
# applicable agreement for further details.
#
# -------------------------------------------------------------------------- #
#
# Quartus II
# Version 10.0 Build 262 08/18/2010 Service Pack 1 SJ Web Edition
# Date created = 05:05:52  March 02, 2011
#
# -------------------------------------------------------------------------- #
#
# Notes:
#
# 1) The default values for assignments are stored in the file:
#    If this file doesn't exist, see file:
#		assignment_defaults.qdf
#
# 2) Altera recommends that you do not modify this file. This
#    file is updated automatically by the Quartus II software
#    and any changes you make may be lost or overwritten.
#
# -------------------------------------------------------------------------- #


set_global_assignment -name FAMILY "Cyclone IV E"
set_global_assignment -name DEVICE EP4CE22F17C7
set_global_assignment -name TOP_LEVEL_ENTITY ltcminer
set_global_assignment -name LAST_QUARTUS_VERSION 10.1
set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 1
set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "2.5 V"
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY quartus_output
set_global_assignment -name EDA_SIMULATION_TOOL "<None>"
set_global_assignment -name EDA_MAP_ILLEGAL_CHARACTERS OFF -section_id eda_simulation
set_global_assignment -name EDA_TIME_SCALE "1 ps" -section_id eda_simulation
set_global_assignment -name EDA_OUTPUT_DATA_FORMAT NONE -section_id eda_simulation
set_global_assignment -name EDA_ENABLE_GLITCH_FILTERING OFF -section_id eda_simulation
set_global_assignment -name EDA_WRITE_NODES_FOR_POWER_ESTIMATION OFF -section_id eda_simulation
set_global_assignment -name EDA_TEST_BENCH_DESIGN_INSTANCE_NAME moogerfoogin -section_id eda_simulation
set_global_assignment -name POWER_USE_PVA OFF
set_global_assignment -name POWER_DEFAULT_TOGGLE_RATE 65%
set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF
set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "NO HEAT SINK WITH STILL AIR"
set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)"
set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS ON
set_global_assignment -name ALLOW_ANY_RAM_SIZE_FOR_RECOGNITION ON
set_global_assignment -name ALLOW_ANY_ROM_SIZE_FOR_RECOGNITION ON
set_global_assignment -name ALLOW_ANY_SHIFT_REGISTER_SIZE_FOR_RECOGNITION ON
set_global_assignment -name ADD_PASS_THROUGH_LOGIC_TO_INFERRED_RAMS ON
set_global_assignment -name REMOVE_REDUNDANT_LOGIC_CELLS ON
set_global_assignment -name REMOVE_DUPLICATE_REGISTERS ON
set_location_assignment PIN_E1 -to osc_clk
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to osc_clk
set_location_assignment PIN_N15 -to LEDS_out[0]
set_location_assignment PIN_K5  -to LEDS_out[1]
set_location_assignment PIN_P9  -to LEDS_out[2]
set_location_assignment PIN_P15 -to LEDS_out[3]
set_location_assignment PIN_R10 -to LEDS_out[4]
set_location_assignment PIN_L13 -to LEDS_out[5]
set_location_assignment PIN_D1  -to LEDS_out[6]
set_location_assignment PIN_B1  -to LEDS_out[7]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[7]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[6]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[5]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[4]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[3]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[2]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[1]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[0]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[7]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[6]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[5]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[3]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[4]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[2]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[1]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[0]
set_global_assignment -name VERILOG_MACRO "HALFRAM=1"
#set_global_assignment -name QIP_FILE halfram.qip

set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top
set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top
set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top
set_global_assignment -name SMART_RECOMPILE ON
set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE SPEED
set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC ON
set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION ON
set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING ON
set_global_assignment -name ROUTER_LCELL_INSERTION_AND_LOGIC_DUPLICATION ON
set_global_assignment -name ROUTER_TIMING_OPTIMIZATION_LEVEL MAXIMUM
set_global_assignment -name AUTO_PACKED_REGISTERS_STRATIXII NORMAL
set_global_assignment -name FITTER_EFFORT "STANDARD FIT"
set_global_assignment -name ADV_NETLIST_OPT_SYNTH_WYSIWYG_REMAP ON
set_global_assignment -name ROUTER_CLOCKING_TOPOLOGY_ANALYSIS ON
set_global_assignment -name VERILOG_FILE ../source/ltcminer.v
set_global_assignment -name VERILOG_FILE ../source/hashcore.v
set_global_assignment -name VERILOG_FILE ../source/altera_ram.v
set_global_assignment -name VERILOG_FILE ../source/salsa.v
set_global_assignment -name VERILOG_FILE ../source/sha256_transform.v
set_global_assignment -name VERILOG_FILE "../source/sha-256-functions.v"
set_global_assignment -name VERILOG_FILE ../source/altera_pll.v
set_global_assignment -name VERILOG_FILE ../source/altera_virtual_wire.v
set_global_assignment -name SDC_FILE ltcminer.sdc
set_global_assignment -name VERILOG_MACRO "SPEED_MHZ=25"
set_global_assignment -name VERILOG_MACRO "INVERTLEDS=1"
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top

================================================
FILE: BeMicro/ltcminer.sdc
================================================
##
#
# Copyright (c) 2011 fpgaminer@bitcoin-mining.com
#
#
#
# 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 3 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, see <http://www.gnu.org/licenses/>.
# 
##

create_clock -period 20.000 -name osc_clk osc_clk

derive_pll_clocks
derive_clock_uncertainty



================================================
FILE: DE0-Nano/ltcminer.qpf
================================================
# -------------------------------------------------------------------------- #
#
# Copyright (C) 1991-2010 Altera Corporation
# Your use of Altera Corporation's design tools, logic functions 
# and other software and tools, and its AMPP partner logic 
# functions, and any output files from any of the foregoing 
# (including device programming or simulation files), and any 
# associated documentation or information are expressly subject 
# to the terms and conditions of the Altera Program License 
# Subscription Agreement, Altera MegaCore Function License 
# Agreement, or other applicable license agreement, including, 
# without limitation, that your use is for the sole purpose of 
# programming logic devices manufactured by Altera and sold by 
# Altera or its authorized distributors.  Please refer to the 
# applicable agreement for further details.
#
# -------------------------------------------------------------------------- #
#
# Quartus II
# Version 10.0 Build 262 08/18/2010 Service Pack 1 SJ Web Edition
# Date created = 19:43:05  May 18, 2011
#
# -------------------------------------------------------------------------- #

QUARTUS_VERSION = "10.0"
DATE = "19:43:05  May 18, 2011"

# Revisions

PROJECT_REVISION = "ltcminer"



================================================
FILE: DE0-Nano/ltcminer.qsf
================================================
# -------------------------------------------------------------------------- #
#
# Copyright (C) 1991-2010 Altera Corporation
# Your use of Altera Corporation's design tools, logic functions
# and other software and tools, and its AMPP partner logic
# functions, and any output files from any of the foregoing
# (including device programming or simulation files), and any
# associated documentation or information are expressly subject
# to the terms and conditions of the Altera Program License
# Subscription Agreement, Altera MegaCore Function License
# Agreement, or other applicable license agreement, including,
# without limitation, that your use is for the sole purpose of
# programming logic devices manufactured by Altera and sold by
# Altera or its authorized distributors.  Please refer to the
# applicable agreement for further details.
#
# -------------------------------------------------------------------------- #
#
# Quartus II
# Version 10.0 Build 262 08/18/2010 Service Pack 1 SJ Web Edition
# Date created = 05:05:52  March 02, 2011
#
# -------------------------------------------------------------------------- #
#
# Notes:
#
# 1) The default values for assignments are stored in the file:
#    If this file doesn't exist, see file:
#		assignment_defaults.qdf
#
# 2) Altera recommends that you do not modify this file. This
#    file is updated automatically by the Quartus II software
#    and any changes you make may be lost or overwritten.
#
# -------------------------------------------------------------------------- #


set_global_assignment -name FAMILY "Cyclone IV E"
set_global_assignment -name DEVICE EP4CE22F17C6
set_global_assignment -name TOP_LEVEL_ENTITY ltcminer
set_global_assignment -name ORIGINAL_QUARTUS_VERSION "10.0 SP1"
set_global_assignment -name PROJECT_CREATION_TIME_DATE "17:52:09  MAY 05, 2011"
set_global_assignment -name LAST_QUARTUS_VERSION 10.1
set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 1
set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "2.5 V"
set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top
set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top
set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top
set_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region"
set_global_assignment -name LL_MEMBER_STATE LOCKED -section_id "Root Region"
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY quartus_output
set_global_assignment -name EDA_SIMULATION_TOOL "<None>"
set_global_assignment -name EDA_MAP_ILLEGAL_CHARACTERS OFF -section_id eda_simulation
set_global_assignment -name EDA_TIME_SCALE "1 ps" -section_id eda_simulation
set_global_assignment -name EDA_OUTPUT_DATA_FORMAT NONE -section_id eda_simulation
set_global_assignment -name EDA_ENABLE_GLITCH_FILTERING OFF -section_id eda_simulation
set_global_assignment -name EDA_WRITE_NODES_FOR_POWER_ESTIMATION OFF -section_id eda_simulation
set_global_assignment -name EDA_TEST_BENCH_DESIGN_INSTANCE_NAME moogerfoogin -section_id eda_simulation
set_global_assignment -name POWER_USE_PVA OFF
set_global_assignment -name POWER_DEFAULT_TOGGLE_RATE 65%
set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF
set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "NO HEAT SINK WITH STILL AIR"
set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)"
set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS ON
set_global_assignment -name ALLOW_ANY_RAM_SIZE_FOR_RECOGNITION ON
set_global_assignment -name ALLOW_ANY_ROM_SIZE_FOR_RECOGNITION ON
set_global_assignment -name ALLOW_ANY_SHIFT_REGISTER_SIZE_FOR_RECOGNITION ON
set_global_assignment -name ADD_PASS_THROUGH_LOGIC_TO_INFERRED_RAMS ON
set_global_assignment -name REMOVE_REDUNDANT_LOGIC_CELLS ON
set_global_assignment -name REMOVE_DUPLICATE_REGISTERS ON
set_location_assignment PIN_R8 -to osc_clk
set_location_assignment PIN_A15 -to LEDS_out[0]
set_location_assignment PIN_A11 -to LEDS_out[3]
set_location_assignment PIN_A13 -to LEDS_out[1]
set_location_assignment PIN_B13 -to LEDS_out[2]
set_location_assignment PIN_D1 -to LEDS_out[4]
set_location_assignment PIN_F3 -to LEDS_out[5]
set_location_assignment PIN_B1 -to LEDS_out[6]
set_location_assignment PIN_L3 -to LEDS_out[7]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[7]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[6]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[5]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[4]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[3]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[2]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[1]
set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LEDS_out[0]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[7]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[6]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[5]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[3]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[4]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[2]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[0]
set_instance_assignment -name SLEW_RATE 0 -to LEDS_out[1]
set_global_assignment -name VERILOG_FILE "../source/ltcminer.v"
set_global_assignment -name VERILOG_FILE "../source/hashcore.v"
set_global_assignment -name VERILOG_FILE "../source/altera_ram.v"
set_global_assignment -name VERILOG_FILE "../source/salsa.v"
set_global_assignment -name VERILOG_FILE "../source/sha256_transform.v"
set_global_assignment -name VERILOG_FILE "../source/sha-256-functions.v"
set_global_assignment -name VERILOG_FILE "../source/altera_pll.v"
set_global_assignment -name VERILOG_FILE "../source/altera_virtual_wire.v"
set_global_assignment -name VERILOG_MACRO "HALFRAM=1"
#set_global_assignment -name QIP_FILE halfram.qip
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top

================================================
FILE: DE0-Nano/ltcminer.sdc
================================================
##
#
# Copyright (c) 2011 fpgaminer@bitcoin-mining.com
#
#
#
# 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 3 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, see <http://www.gnu.org/licenses/>.
# 
##

create_clock -period 20.000 -name osc_clk osc_clk

derive_pll_clocks
derive_clock_uncertainty



================================================
FILE: DE2-115-Single/README.txt
================================================
Single core version for DE2-115 using full sized scratchpad (UNTESTED)

For multipe cores simply replicate hashcore with different nonce_msb values and implement
a golden_nonce queue for results (a simple multiplexer latching on golden_nonce_match
will suffice). An dual core example is provided as a comment in ltcminer.v
Its a little inefficient as the sha256 engine is replicated, but this will be rather
complicated to fix.

It probably best to use half-sized scratchpads for the multicore version as
this doubles the number of cores that can be fitted for a 60% improvement in
throughput (the half cores being 80% as fast as a full scratchpad)
    set_global_assignment -name VERILOG_MACRO "HALFRAM=1"

This note from the previous version of the README is obsolete as multicore is now
enabled by default ...
   For multicore, set the following in ltcminer.qsf ...
       set_global_assignment -name VERILOG_MACRO "MULTICORE=1"
   (Or use the assignments/settings menu in quartus to set it)
Use the NOMULTICORE macro to revert to previous behaviour.



================================================
FILE: DE2-115-Single/ltcminer.qpf
================================================
# -------------------------------------------------------------------------- #
#
# Copyright (C) 1991-2010 Altera Corporation
# Your use of Altera Corporation's design tools, logic functions 
# and other software and tools, and its AMPP partner logic 
# functions, and any output files from any of the foregoing 
# (including device programming or simulation files), and any 
# associated documentation or information are expressly subject 
# to the terms and conditions of the Altera Program License 
# Subscription Agreement, Altera MegaCore Function License 
# Agreement, or other applicable license agreement, including, 
# without limitation, that your use is for the sole purpose of 
# programming logic devices manufactured by Altera and sold by 
# Altera or its authorized distributors.  Please refer to the 
# applicable agreement for further details.
#
# -------------------------------------------------------------------------- #
#
# Quartus II
# Version 10.1 Build 153 11/29/2010 SJ Web Edition
# Date created = 19:35:13  July 19, 2013
#
# -------------------------------------------------------------------------- #

QUARTUS_VERSION = "10.1"
DATE = "19:35:13  July 19, 2013"

# Revisions

PROJECT_REVISION = "ltcminer"
PROJECT_REVISION = "ltcaminer"


================================================
FILE: DE2-115-Single/ltcminer.qsf
================================================
# -------------------------------------------------------------------------- #
#
# Copyright (C) 1991-2010 Altera Corporation
# Your use of Altera Corporation's design tools, logic functions
# and other software and tools, and its AMPP partner logic
# functions, and any output files from any of the foregoing
# (including device programming or simulation files), and any
# associated documentation or information are expressly subject
# to the terms and conditions of the Altera Program License
# Subscription Agreement, Altera MegaCore Function License
# Agreement, or other applicable license agreement, including,
# without limitation, that your use is for the sole purpose of
# programming logic devices manufactured by Altera and sold by
# Altera or its authorized distributors.  Please refer to the
# applicable agreement for further details.
#
# -------------------------------------------------------------------------- #
#
# Quartus II
# Version 10.0 Build 262 08/18/2010 Service Pack 1 SJ Web Edition
# Date created = 05:05:52  March 02, 2011
#
# -------------------------------------------------------------------------- #
#
# Notes:
#
# 1) The default values for assignments are stored in the file:
#    If this file doesn't exist, see file:
#		assignment_defaults.qdf
#
# 2) Altera recommends that you do not modify this file. This
#    file is updated automatically by the Quartus II software
#    and any changes you make may be lost or overwritten.
#
# -------------------------------------------------------------------------- #


set_global_assignment -name FAMILY "Cyclone IV E"
set_global_assignment -name DEVICE EP4CE115F29C7
set_global_assignment -name TOP_LEVEL_ENTITY ltcminer
set_global_assignment -name ORIGINAL_QUARTUS_VERSION "10.0 SP1"
set_global_assignment -name PROJECT_CREATION_TIME_DATE "17:52:09  MAY 05, 2011"
set_global_assignment -name LAST_QUARTUS_VERSION 10.1
set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 7
set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 1
set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "2.5 V"
set_location_assignment PIN_Y2 -to osc_clk
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to osc_clk
set_global_assignment -name ENABLE_SIGNALTAP OFF
set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW"
set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)"
set_global_assignment -name ALLOW_ANY_RAM_SIZE_FOR_RECOGNITION ON
set_global_assignment -name ALLOW_ANY_SHIFT_REGISTER_SIZE_FOR_RECOGNITION ON
set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top
set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top
set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top
set_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region"
set_global_assignment -name LL_MEMBER_STATE LOCKED -section_id "Root Region"
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY quartus_output
set_global_assignment -name REMOVE_REDUNDANT_LOGIC_CELLS ON
set_global_assignment -name ALLOW_ANY_ROM_SIZE_FOR_RECOGNITION ON
set_global_assignment -name EDA_SIMULATION_TOOL "<None>"
set_global_assignment -name EDA_MAP_ILLEGAL_CHARACTERS OFF -section_id eda_simulation
set_global_assignment -name EDA_TIME_SCALE "1 ps" -section_id eda_simulation
set_global_assignment -name EDA_OUTPUT_DATA_FORMAT NONE -section_id eda_simulation
set_global_assignment -name EDA_ENABLE_GLITCH_FILTERING OFF -section_id eda_simulation
set_global_assignment -name EDA_WRITE_NODES_FOR_POWER_ESTIMATION OFF -section_id eda_simulation
set_global_assignment -name EDA_TEST_BENCH_DESIGN_INSTANCE_NAME moogerfoogin -section_id eda_simulation
set_global_assignment -name POWER_USE_PVA OFF
set_global_assignment -name POWER_DEFAULT_TOGGLE_RATE 65%
set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF
set_global_assignment -name VERILOG_FILE "../source/ltcminer.v"
set_global_assignment -name VERILOG_FILE "../source/hashcore.v"
set_global_assignment -name VERILOG_FILE "../source/altera_ram.v"
set_global_assignment -name VERILOG_FILE "../source/salsa.v"
set_global_assignment -name VERILOG_FILE "../source/sha256_transform.v"
set_global_assignment -name VERILOG_FILE "../source/sha-256-functions.v"
set_global_assignment -name VERILOG_FILE "../source/altera_pll.v"
set_global_assignment -name VERILOG_FILE "../source/altera_virtual_wire.v"
set_global_assignment -name VERILOG_MACRO "NOLEDS=1"
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top

================================================
FILE: DE2-115-Single/ltcminer.sdc
================================================
##
#
# Copyright (c) 2011 fpgaminer@bitcoin-mining.com
#
#
#
# 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 3 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, see <http://www.gnu.org/licenses/>.
# 
##

create_clock -period 20.000 -name osc_clk osc_clk

derive_pll_clocks
derive_clock_uncertainty



================================================
FILE: ICARUS-LX150/MiningSoftware/README.txt
================================================
Mining software for ltcminer.

You will need to install python 2.7, then ...

From the fpgaminer/project/Verilog_Xilinx_Port/README.txt I quote ...
  It requires a few non-standard libraries, pyserial and json-rpc.
  http://pyserial.sourceforge.net/
  (also generally available in Linux distributions)
  http://json-rpc.org/wiki/python-json-rpc

Since these are open source, I have included them in the MiningSoftware folder, vis

pyserial-2.6 from http://pyserial.sourceforge.net
python-json-rpc from http://json-rpc.org/browser/trunk/python-jsonrpc/jsonrpc

To install them run "python setup.py install" in each folder (sudo if on linux)

Edit ltcminer.py and set the serial port to match your system (eg COM2) plus
your pool url, worker name and worker password. You can also change the baudrate
but this must match the value hard-coded into ltcminer_icarus.v

There is a test getwork that you can enable, just uncomment the two lines for
test_payload. This still requires a working pool, which will REJECT the share, but
its a useful quick test that everything is working. This is now obsolete as I have
provided ltcminer-testmode.py which runs 10 test hashes (a full 910 test hash set is
also available in ../../scripts/test_data_cut.txt).

The scripts take a single (optional) parameter, the clock speed (in MHz) for use with
the dynamic clock PLL. The value is checked for validity in the FPGA, so not all values
will work (see SPEED_LIMIT and SPEED_MIN parameters in ltcminer_icarus.v). Use the
FLASHCLOCK feature (blinks the TxD led in time to the clock) to verify the clock speed
has been accepted.

Be careful of spaces/tabs in python as these are part of the syntax! If you run
into problems making changes, just copy a previous line EXACTLY, then modify the part
after the initial spaces/tabs. ADDENDUM. I have now tabbified the script with tabstop=4
(using Notepad++) which should make it much easier to edit.

When using a stratum proxy server, follow the instructions at ...
https://www.litecoinpool.org/help

Specifically you must use the version from ...
https://github.com/CryptoManiac/stratum-mining-proxy

Start it as follows (on linux) ...
./mining_proxy.py -nm -pa scrypt -o litecoinpool.org -p 3333

Or in background with ...
nohup ./mining_proxy.py -nm -pa scrypt -o litecoinpool.org -p 3333 >/tmp/stratum_ltc.log 2>&1&


================================================
FILE: ICARUS-LX150/MiningSoftware/ltcminer-testmode.py
================================================
#!/usr/bin/env python

# by teknohog

# Python wrapper for Xilinx Serial Miner

# Host/user configuration is NOT USED in ltcminer-testmode.py

# CONFIGURATION - CHANGE THIS (eg try COM1, COM2, COM3, COM4 etc)
serial_port = "COM4"
# serial_port = "/dev/ttyUSB0"	# raspberry pi

# CONFIGURATION - how often to refresh work - reduced for testing
askrate = 2

###############################################################################

from jsonrpc import ServiceProxy
from time import ctime, sleep, time
from serial import Serial
from threading import Thread, Event
from Queue import Queue
import sys

dynclock = 0
dynclock_hex = "0000"

def stats(count, starttime):
	khshare = 65.536 * writer.diff

	s = sum(count)
	tdelta = time() - starttime
	rate = s * khshare / tdelta

	# This is only a rough estimate of the true hash rate,
	# particularly when the number of events is low. However, since
	# the events follow a Poisson distribution, we can estimate the
	# standard deviation (sqrt(n) for n events). Thus we get some idea
	# on how rough an estimate this is.

	# s should always be positive when this function is called, but
	# checking for robustness anyway
	if s > 0:
		stddev = rate / s**0.5
	else:
		stddev = 0

	return "[%i accepted, %i failed, %.2f +/- %.2f khash/s]" % (count[0], count[1], rate, stddev)

class Reader(Thread):
	def __init__(self):
		Thread.__init__(self)

		self.daemon = True

		# flush the input buffer
		ser.read(1000)

	def run(self):
		while True:
			nonce = ser.read(4)

			if len(nonce) == 4:
				# Keep this order, because writer.block will be
				# updated due to the golden event.
				submitter = Submitter(writer.block, nonce)
				submitter.start()
				golden.set()


class Writer(Thread):
	def __init__(self,dynclock_hex):
		Thread.__init__(self)

		# Keep something sensible available while waiting for the
		# first getwork
		self.block = "0" * 256
		self.target = "f" * 56 + "ff070000"		# diff=32 for testmode
		self.diff = 32	# testmode
		self.dynclock_hex = dynclock_hex

		self.daemon = True
		self.go = True
		# Alternatively use test_data_cut.txt for full 910 hash test suite
		self.infile = open("../../scripts/test_data.txt","r")
		self.nonce = 0
		self.nonce_tested = 0
		self.nonce_ok = 0
		self.nonce_fail = 0

	def run(self):
		while self.go:
			try:
				# work = bitcoin.getwork()
				# self.block = work['data']
				# self.target = work['target']
				print "Tested", self.nonce_tested, " passed", self.nonce_ok, " fail", self.nonce_fail, " unmatched", self.nonce_tested - self.nonce_ok - self.nonce_fail
				self.line = self.infile.readline()
				if (len(self.line) != 257):
					print "EOF on test data"	# Or its an error, but let's not be worrysome

					# quit()		# Except it doesn't ...
					self.go = False	# Terminating threads is a bit tricksy
					break
				self.nonce_tested = self.nonce_tested + 1
				self.block = self.line.rstrip()
				
				# Hard-code a diff=32 target for test work
				# Replace MSB 16 bits of target with clock (NB its reversed)
				self.target = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff07" + self.dynclock_hex
				self.dynclock_hex = "0000"	# Once only
				
				# print("block old " + self.block)
				# We need to subtract a few from the nonces in order to match (why?)
				nonce_bin = self.block.decode('hex')[79:75:-1]
				self.nonce = int(nonce_bin.encode('hex'), 16)
				# print "nonce old =", self.nonce
				nonce_new = self.nonce - 50
				if (nonce_new < 0):
					nonce_new = 0
				# print "nonce new =", nonce_new
				nonce_hex = "{0:08x}".format(nonce_new)
				# print "encoded = ", nonce_hex
				nonce_hex_rev = nonce_hex[6:8]+nonce_hex[4:6]+nonce_hex[2:4]+nonce_hex[0:2]
				# print "reversed = ", nonce_hex_rev
				self.block = self.block[0:152]+nonce_hex_rev+self.block[160:]
				# print("block new " + self.block)
			except:
				print("RPC getwork error")
				# In this case, keep crunching with the old data. It will get 
				# stale at some point, but it's better than doing nothing.

			# print("block " + self.block + " target " + self.target)	# DEBUG

			sdiff = self.target.decode('hex')[31:27:-1]
			intTarget = int(sdiff.encode('hex'), 16)
			if (intTarget < 1):
				print "WARNING zero target", intTarget
				print "target", self.target
				print("sdiff", sdiff)	# NB Need brackets here else prints binary
				self.target = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000"
			else:
				newdiff = 65536.0 / (intTarget+1)
				if (self.diff != newdiff):
					print "New target diff =", newdiff
				self.diff = newdiff

			# print("Sending data to FPGA")	# DEBUG

			# for litecoin send 80 bytes of the 128 byte data plus 4 bytes of 32 byte target
			payload = self.target.decode('hex')[31:27:-1] + self.block.decode('hex')[79::-1]
			
			# TEST HASH, this should match on nonce 0000318f
			# NB The pool will REJECT this share as it did not send the data...
			# UNCOMMENT the following two lines for testing...
			# test_payload ="000000014eb4577c82473a069ca0e95703254da62e94d1902ab6f0eae8b1e718565775af20c9ba6ced48fc9915ef01c54da2200090801b2d2afc406264d491c7dfc7b0b251e91f141b44717e00310000ff070000"
			# payload = test_payload.decode('hex')[::-1]

			# This is probably best commented out unless debugging ...
			print("Test " + payload.encode('hex_codec'))	# DEBUG
			
			ser.write(payload)
			
			result = golden.wait(askrate)

			if result:
				golden.clear()

class Submitter(Thread):
	def __init__(self, block, nonce):
		Thread.__init__(self)

		self.block = block
		self.nonce = nonce

	def run(self):
		# This thread will be created upon every submit, as they may
		# come in sooner than the submits finish.

		# print("Block found on " + ctime())
		print("Share found on " + ctime() + " nonce " + self.nonce.encode('hex_codec'))
		if (int(self.nonce.encode('hex_codec'),16) != writer.nonce):
			print "... ERROR expected nonce", hex(writer.nonce)
			writer.nonce_fail = writer.nonce_fail + 1
		else:
			print "... CORRECT"
			writer.nonce_ok = writer.nonce_ok + 1
		
		hrnonce = self.nonce[::-1].encode('hex')

		data = self.block[:152] + hrnonce + self.block[160:]

		try:
			# result = bitcoin.getwork(data)
			result = False
			# print("Upstream result: " + str(result))	# Pointless in test mode
		except:
			print("RPC send error")
			# a sensible boolean for stats
			result = False

		results_queue.put(result)

class Display_stats(Thread):
	def __init__(self):
		Thread.__init__(self)

		self.count = [0, 0]
		self.starttime = time()
		self.daemon = True

		print("Miner started on " + ctime())

	def run(self):
		while True:
			result = results_queue.get()
			
			if result:
				self.count[0] += 1
			else:
				self.count[1] += 1
				
			# print(stats(self.count, self.starttime)) 	# Pointless in test mode
				
			results_queue.task_done()

# ======= main =======

# Process command line

if (len(sys.argv) > 2):
	print "ERROR too many command line arguments"
	print "usage:", sys.argv[0], "clockfreq"
	quit()

if (len(sys.argv) == 1):
	print "WARNING no clockfreq supplied, not setting freq"
else:
	# TODO ought to check the value is a valid integer
	try:
		dynclock = int(sys.argv[1])
	except:
		print "ERROR parsing clock frequency on command line, needs to be an integer"
		print "usage:", sys.argv[0], "clockfreq"
		quit()
	if (dynclock==0):
		print "ERROR parsing clock frequency on command line, cannot be zero"
		print "usage:", sys.argv[0], "clockfreq"
		quit()
	if (dynclock>254):	# Its 254 since onescomplement(255) is zero, which is not allowed
		print "ERROR parsing clock frequency on command line, max 254"
		print "usage:", sys.argv[0], "clockfreq"
		quit()
	if (dynclock<25):
		print "ERROR use at least 25 for clock (the DCM can lock up for low values)"
		print "usage:", sys.argv[0], "clockfreq"
		quit()
	dynclock_hex = "{0:04x}".format((255-dynclock)*256+dynclock)	# both value and ones-complement
	print "INFO will set clock to", dynclock, "MHz hex", dynclock_hex

golden = Event()

# url = 'http://' + user + ':' + password + '@' + host + ':' + http_port

# bitcoin = ServiceProxy(url)

results_queue = Queue()

# default is 8 bit no parity which is fine ...
# http://pyserial.sourceforge.net/shortintro.html#opening-serial-ports

ser = Serial(serial_port, 115200, timeout=askrate)

reader = Reader()
writer = Writer(dynclock_hex)
disp = Display_stats()

reader.start()
writer.start()
disp.start()

try:
	while writer.go:
		# Threads are generally hard to interrupt. So they are left
		# running as daemons, and we do something simple here that can
		# be easily terminated to bring down the entire script.
		sleep(1)
except KeyboardInterrupt:
	print("Terminated")


================================================
FILE: ICARUS-LX150/MiningSoftware/ltcminer.py
================================================
#!/usr/bin/env python

# by teknohog

# Python wrapper for Xilinx Serial Miner

# CONFIGURATION - CHANGE THIS TO YOUR ACCOUNT DETAILS ...
# Optionally install a Stratum Proxy Server

host = "mining-foreman.org"			# Getwork pools
# host = "http://litecoinpool.org"
# host = "localhost"	# Stratum Proxy on localhost
# host = "tvpi.lan"		# Stratum Proxy (raspberry pi)

http_port = "10341"		# Getwork port (mining-foreman)
# http_port = "9332"	# Getwork port (litcoinpool)
# http_port = "8332"	# Getwork port (stratum)

user = "username.1"		# Your worker goes here
password = "password"	# Worker password, NOT your account password

# CONFIGURATION - CHANGE THIS (eg try COM1, COM2, COM3, COM4 etc)
serial_port = "COM4"
# serial_port = "/dev/ttyUSB0"	# raspberry pi

# CONFIGURATION - how often to refresh work. 20 seconds is fine, but work is
# not initially fetched until this timeout expires. Reduce it for debugging
# and for stratum (2 works fine).
askrate = 20	# Getwork
# askrate = 2	# Stratum

###############################################################################

from jsonrpc import ServiceProxy
from time import ctime, sleep, time
from serial import Serial
from threading import Thread, Event
from Queue import Queue
import sys

dynclock = 0
dynclock_hex = "0000"

def stats(count, starttime):
	khshare = 65.536 * writer.diff

	s = sum(count)
	tdelta = time() - starttime
	rate = s * khshare / tdelta

	# This is only a rough estimate of the true hash rate,
	# particularly when the number of events is low. However, since
	# the events follow a Poisson distribution, we can estimate the
	# standard deviation (sqrt(n) for n events). Thus we get some idea
	# on how rough an estimate this is.

	# s should always be positive when this function is called, but
	# checking for robustness anyway
	if s > 0:
		stddev = rate / s**0.5
	else:
		stddev = 0

	return "[%i accepted, %i failed, %.2f +/- %.2f khash/s]" % (count[0], count[1], rate, stddev)

class Reader(Thread):
	def __init__(self):
		Thread.__init__(self)

		self.daemon = True

		# flush the input buffer
		ser.read(1000)

	def run(self):
		while True:
			nonce = ser.read(4)

			if len(nonce) == 4:
				# Keep this order, because writer.block will be
				# updated due to the golden event.
				submitter = Submitter(writer.block, nonce)
				submitter.start()
				golden.set()


class Writer(Thread):
	def __init__(self,dynclock_hex):
		Thread.__init__(self)

		# Keep something sensible available while waiting for the
		# first getwork
		self.block = "0" * 256
		# self.target = "f" * 56 + "ff070000"		# diff=32
		self.target = "f" * 56 + "ff7f0000"			# diff=2
		self.diff = 2.0	# NB This is updated from target (default 2 is safer than 32 to avoid losing shares)
		self.dynclock_hex = dynclock_hex

		self.daemon = True

	def run(self):
		while True:
			try:
				work = bitcoin.getwork()
				self.block = work['data']
				self.target = work['target']
			except:
				print("RPC getwork error")
				# In this case, keep crunching with the old data. It will get 
				# stale at some point, but it's better than doing nothing.

			# print("block " + self.block + " target " + self.target)	# DEBUG

			sdiff = self.target.decode('hex')[31:27:-1]
			intTarget = int(sdiff.encode('hex'), 16)
			if (intTarget < 1):
				print "WARNING zero target, defaulting to diff=2", intTarget
				print "target", self.target
				print("sdiff", sdiff)	# NB Need brackets here else prints binary
				self.target = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000"
			else:
				newdiff = 65536.0 / (intTarget+1)
				if (self.diff != newdiff):
					print "New target diff =", newdiff
				self.diff = newdiff

			# Replace MSB 16 bits of target with clock (NB its reversed)
			self.target = self.target[0:60] + self.dynclock_hex
			self.dynclock_hex = "0000"	# Once only
			
			print("Sending data to FPGA")	# DEBUG

			# for litecoin send 80 bytes of the 128 byte data plus 4 bytes of 32 byte target
			payload = self.target.decode('hex')[31:27:-1] + self.block.decode('hex')[79::-1]
			
			# TEST HASH, this should match on nonce 0000318f
			# NB The pool will REJECT this share as it did not send the data...
			# UNCOMMENT the following two lines for testing...
			# test_payload ="000000014eb4577c82473a069ca0e95703254da62e94d1902ab6f0eae8b1e718565775af20c9ba6ced48fc9915ef01c54da2200090801b2d2afc406264d491c7dfc7b0b251e91f141b44717e00310000ff070000"
			# payload = test_payload.decode('hex')[::-1]

			print("Payload " + payload.encode('hex_codec'))	# DEBUG
			
			ser.write(payload)
			
			result = golden.wait(askrate)

			if result:
				golden.clear()

class Submitter(Thread):
	def __init__(self, block, nonce):
		Thread.__init__(self)

		self.block = block
		self.nonce = nonce

	def run(self):
		# This thread will be created upon every submit, as they may
		# come in sooner than the submits finish.

		# print("Block found on " + ctime())
		print("Share found on " + ctime() + " nonce " + self.nonce.encode('hex_codec'))
		
		hrnonce = self.nonce[::-1].encode('hex')

		data = self.block[:152] + hrnonce + self.block[160:]

		try:
			result = bitcoin.getwork(data)
			print("Upstream result: " + str(result))
		except:
			print("RPC send error")
			# a sensible boolean for stats
			result = False

		results_queue.put(result)

class Display_stats(Thread):
	def __init__(self):
		Thread.__init__(self)

		self.count = [0, 0]
		self.starttime = time()
		self.daemon = True

		print("Miner started on " + ctime())

	def run(self):
		while True:
			result = results_queue.get()
			
			if result:
				self.count[0] += 1
			else:
				self.count[1] += 1
				
			print(stats(self.count, self.starttime))
				
			results_queue.task_done()

# ======= main =======

# Process command line

if (len(sys.argv) > 2):
	print "ERROR too many command line arguments"
	print "usage:", sys.argv[0], "clockfreq"
	quit()

if (len(sys.argv) == 1):
	print "WARNING no clockfreq supplied, not setting freq"
else:
	# TODO ought to check the value is a valid integer
	try:
		dynclock = int(sys.argv[1])
	except:
		print "ERROR parsing clock frequency on command line, needs to be an integer"
		print "usage:", sys.argv[0], "clockfreq"
		quit()
	if (dynclock==0):
		print "ERROR parsing clock frequency on command line, cannot be zero"
		print "usage:", sys.argv[0], "clockfreq"
		quit()
	if (dynclock>254):	# Its 254 since onescomplement(255) is zero, which is not allowed
		print "ERROR parsing clock frequency on command line, max 254"
		print "usage:", sys.argv[0], "clockfreq"
		quit()
	if (dynclock<25):
		print "ERROR use at least 25 for clock (the DCM can lock up for low values)"
		print "usage:", sys.argv[0], "clockfreq"
		quit()
	dynclock_hex = "{0:04x}".format((255-dynclock)*256+dynclock)	# both value and ones-complement
	print "INFO will set clock to", dynclock, "MHz hex", dynclock_hex

golden = Event()

url = 'http://' + user + ':' + password + '@' + host + ':' + http_port

bitcoin = ServiceProxy(url)

results_queue = Queue()

# default is 8 bit no parity which is fine ...
# http://pyserial.sourceforge.net/shortintro.html#opening-serial-ports

ser = Serial(serial_port, 115200, timeout=askrate)

reader = Reader()
writer = Writer(dynclock_hex)
disp = Display_stats()

reader.start()
writer.start()
disp.start()

try:
	while True:
		# Threads are generally hard to interrupt. So they are left
		# running as daemons, and we do something simple here that can
		# be easily terminated to bring down the entire script.
		sleep(10000)
except KeyboardInterrupt:
	print("Terminated")



================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/CHANGES.txt
================================================
========================
 pySerial Release Notes
========================

Version 1.0     13 Feb 2002
---------------------------
- First public release.
- Split from the pybsl application (see http://mspgcc.sourceforge.net)

New Features:

- Added Jython support


Version 1.1     14 Feb 2002
---------------------------
Bugfixes:

- Win32, when not specifying a timeout
- Typos in the Docs

New Features:

- added ``serialutil`` which provides a base class for the ``Serial``
  objects.

- ``readline``, ``readlines``, ``writelines`` and ``flush`` are now supported
  see README.txt for deatils.


Version 1.11    14 Feb 2002
---------------------------
Same as 1.1 but added missing files.


Version 1.12    18 Feb 2002
---------------------------
Removed unneded constants to fix RH7.x problems.


Version 1.13    09 Apr 2002
---------------------------
Added alternate way for enabling rtscts (CNEW_RTSCTS is tried too)
If port opening fails, a ``SerialException`` is raised on all platforms


Version 1.14    29 May 2002
---------------------------
Added examples to archive
Added non-blocking mode for ``timeout=0`` (tnx Mat Martineau)

Bugfixes:

- win32 does now return the remaining characters on timeout


Version 1.15    04 Jun 2002
---------------------------
Bugfixes (win32):

- removed debug messages
- compatibility to win9x improved


Version 1.16    02 Jul 2002
---------------------------
Added implementation of RI and corrected RTS/CTS on Win32


Version 1.17    03 Jul 2002
---------------------------
Silly mix of two versions in win32 code corrected


Version 1.18    06 Dec 2002
---------------------------
Bugfixes (general):

- remove the mapping of flush to the destructive flushOutput as
  this is not the expected behaviour.
- readline: EOL character for lines can be chosen idea by 
  John Florian.

Bugfixes (posix):

- cygwin port numbering fixed
- test each and every constant for it's existence in termios module,
  use default if not existent (fix for Bug item #640214)
- wrong exception on nonexistent ports with /dev file. bug report
  by Louis Cordier

Bugfixes (win32):

- RTS/CTS handling as suggested in Bug #635072
- bugfix of timeouts brought up by Markus Hoffrogge


Version 1.19    19 Mar 2003
---------------------------
Bugfixes (posix):

- removed ``dgux`` entry which actually had a wrong comment and is
  probably not in use anywhere.

Bugfixes (win32):

- added ``int()`` conversion, [Bug 702120]
- remove code to set control lines in close method of win32
  version. [Bug 669625]


Version 1.20    28 Aug 2003
---------------------------
- Added ``serial.device()`` for all platforms

Bugfixes (win32):

- don't recreate overlapped structures and events on each
  read/write.
- don't set unneeded event masks.
- dont use DOS device names for ports > 9.
- remove send timeout (its not used in the linux impl. anyway).


Version 1.21    30 Sep 2003
---------------------------
Bugfixes (win32):

- name for COM10 was not built correctly, found by Norm Davis.

Bugfixes (examples):

- small change in ``miniterm.py`` that should mage it run on cygwin,
  [Bug 809904] submitted by Rolf Campbell.


Version 2.0b1    1 Oct 2003
---------------------------
Transition to the Python 2.0 series:

- New implementation only supports Python 2.2+, backwards compatibility
  should be maintained almost everywhere.
  The OS handles (like the ``hComPort`` or ``fd`` attribute) were prefixed
  with an underscore. The different names stay, as anyone that uses one of
  these has to write platform specific code anyway.
- Common base class ``serialutil.SerialBase`` for all implementations.
- ``PARITY_NONE``, ``PARITY_EVEN``, ``PARITY_ODD`` constants changed and all
  these constants moved to ``serialutil.py`` (still available as
  ``serial.PARITY_NONE`` etc. and they should be used that way)
- Added ``serial.PARITY_NAMES`` (implemented in ``serialutil.PARITY_NAMES``).
  This dictionary can be used to convert parity constants to meaningful
  strings.
- Each Serial class and instance has a list of supported values:
  ``BAUDRATES``, ``BYTESIZES``, ``PARITIES``, ``STOPBITS``Ggg
  (i.e. ``serial.Serial.BAUDRATES or s = serial.Serial; s.BAUDRATES``)
  these values can be used to fill in value sin GUI dialogs etc.
- Creating a ``Serial()`` object without port spec returns an unconfigured,
  closed port. Useful if a GUI dialog should take a port and configure
  it.
- New methods for ``serial.Serial`` instances: ``open()``, ``isOpen()``
- A port can be opened and closed as many times as desired.
- Instances of ``serial.Serial`` have ``baudrate``, ``bytesize``, ``timeout``
  etc. attributes implemented as properties, all can be set while the port is
  opened. It will then be reconfigured.
- Improved ``__doc__``'s.
- New ``test_advanced.py`` for the property setting/getting testing.
- Small bugfix on posix with get* methods (return value should be true a
  boolean).
- added a ``__repr__`` that returns a meaningful string will all the serial
  setting, easy for debugging.
- The serialposix module does not throw an exception on unsupported
  platforms, the message is still printed. The idea that it may still
  work even if the platform itself s not known, it simply tries to do
  the posix stuff anyway (It's likely that opening ports by number
  fails, but by name it should work).


Version 2.0b2    4 Oct 2003
---------------------------
- Added serial port configuration dialog for wxPython to the examples.
- Added terminal application for wxPython with wxGlade design file
  to the examples.
- Jython support is currently broken as Jython does not have a Python 2.2
  compatible release out yet


Version 2.0      6 Nov 2003
---------------------------
- Fixes ``setup.py`` for older distutils


Version 2.1     28 Jul 2004
---------------------------
Bugfixes:

- Fix XON/XOFF values [Bug 975250]

Bugfixes (posix):

- ``fd == 0`` fix from Vsevolod Lobko
- netbsd fixes from Erik Lindgren
- Dynamicaly lookup baudrates and some cleanups

Bugfixes (examples):

- CRLF handling of ``miniterm.py`` should be more consistent on Win32
  and others. Added LF only command line option
- Multithreading fixes to ``wxTerminal.py`` (helps with wxGTK)
- Small change for wxPython 2.5 in ``wxSerialConfigDialog.py`` [Bug 994856]

New Features:

- Implement write timeouts (``writeTimeout`` parameter)


Version 2.2     31 Jul 2005
---------------------------
Bugfixes:

- [Bug 1014227]: property <del> broken
- [Bug 1105687]: ``serial_tcp_example.py``: ``--localport`` option
- [Bug 1106313]: device (port) strings cannot be unicode

Bugfixes (posix):

- [Patch 1043436] Fix for [Bug 1043420] (OSError: EAGAIN)
- [Patch 1102700] ``fileno()`` added
- ensure disabled PARMRK

Bugfixes (win32):

- [Patch 983106]: keep RTS/CTS state on port setting changes

New Features:

- ``dsrdtr`` setting to enable/disable DSR/DTR flow control independently
  from the ``rtscts`` setting. (Currenly Win32 only, ignored on other
  platforms)


Version 2.3     19 Jun 2008
---------------------------
New Features:

- iterator interface. ``for line in Serial(...): ...`` is now possible
  Suggested by Bernhard Bender
- ``sendBreak()`` accepts a ``duration`` argument. Default duration increased.
- win32 handles \\.\COMx format automatically for com ports of higher number
  (COM10 is internally translated to \\.\COM10 etc.)
- miniterm.py has a new feature to send a file (upload) and configurable
  special characters for exit and upload. Refactored internals to class based
  structure (upload and class refactoring by Colin D Bennett)

Bugfixes:

- [Bug 1451535] TCP/serial redirect example "--help"
- update VERSION variable
- update wxSerialConfigDialog.py and wxTerminal.py compatibility with
  wxPython 2.8 (Peleg)
- Check for string in write function. Using unicode causes errors, this
  helps catching errors early (Tom Lynn)

Bugfixes (posix):

- [Bug 1554183] setRTS/setDTR reference to non existing local "on"
- [Bug 1513653] file descriptor not closed when exception is thrown
- FreeBSD now uses cuadX instead of cuaaX (Patrick Phalen)

Bugfixes (win32):

- [Bug 1520357] Handle leak
- [Bug 1679013] Ignore exception raised by SetCommTimeout() in close().
- [Bug 1938118] process hang forever under XP


Version 2.4      6 Jul 2008
---------------------------
New Features:

- [Patch 1616790] pyserial: Add inter-character timeout feature
- [Patch 1924805] add a setBreak function
- Add mark/space parity
- Add .NET/Mono backend (IronPython)

Bugfixes (posix):

- [Bug 1783159] Arbitrary baud rates (Linux/Posix)

Bugfixes (win32):

- [Patch 1561423] Add mark/space parity, Win32
- [Bug 2000771] serial port CANNOT be specified by number on windows
- examples/scanwin32.py does no longer return \\.\ names
- fix \\.\ handling for some cases

Bugfixes (jython):

 - The Jython backend tries javax.comm and gnu.io (Seo Sanghyeon)


Version 2.5-rc1  2009-07-30
---------------------------
New Features:

- Python 3.x support (through 2to3)
- compatible with Python io library (Python 2.6+)
- Support for Win32 is now written on the top of ctypes (bundled with
  Python 2.5+) instead of pywin32 (patch by Giovanni Bajo).
- 1.5 stop bits (STOPBITS_ONE_POINT_FIVE, implemented on all platforms)
- miniterm application extended (CTRL+T -> menu)
- miniterm.py is now installed as "script"
- add scanlinux.py example
- add port_publisher example
- experimental RFC-2217 server support (examples/rfc2217_server.py)
- add ``getSettingsDict`` and ``applySettingsDict`` serial object methods
- use a ``poll`` based implementation on Posix, instead of a ``select`` based,
  provides better error handling [removed again in later releases].

Bugfixes:

- Improve and fix tcp_serial_redirector example.
- [Bug 2603052] 5-bit mode (needs 1.5 stop bits in some cases)

Bugfixes (posix):

- [Bug 2810169] Propagate exceptions raised in serialposix _reconfigure
- [Bug 2562610] setting non standard baud rates on Darwin (Emmanuel Blot)

Bugfixes (win32):

- [Bug 2469098] parity PARITY_MARK, PARITY_SPACE isn't supported on win32
- [SF  2446218] outWaiting implemented
- [Bug 2392892] scanwin32.py better exception handling
- [Bug 2505422] scanwin32.py Vista 64bit compatibility


Version 2.5-rc2  2010-01-02
---------------------------
New Features:

- Documentation update, now written with Sphinx/ReST
- Updated miniterm.py example
- experimental RFC-2217 client support (serial.rfc2217.Serial, see docs)
- add ``loop://`` device for testing.
- add ``serial.serial_for_url`` factory function (support for native ports and
  ``rfc2217``, ``socket`` and ``loop`` URLs)
- add new example: ``rfc2217_server.py``
- tests live in their own directory now (no longer in examples)

Bugfixes:

- [Bug 2915810] Fix for suboption parsing in rfc2217
- Packaging bug (missed some files)

Bugfixes (posix):

- improve write timeout behavior
- [Bug 2836297] move Linux specific constants to not break other platforms
- ``poll`` based implementation for ``read`` is in a separate class
  ``PosixPollSerial``, as it is not supported well on all platforms (the
  default ``Serial`` class uses select).
- changed error handling in ``read`` so that disconnected devices are
  detected.


Bugfixes (win32):

- [Bug 2886763] hComPort doesn't get initialized for Serial(port=None)


Version 2.5      2010-07-22
---------------------------
New Features:

- [Bug 2976262] dsrdtr should default to False
  ``dsrdtr`` parameter default value changed from ``None`` (follow ``rtscts``
  setting) to ``False``. This means ``rtscts=True`` enables hardware flow
  control on RTS/CTS but no longer also on DTR/DSR. This change mostly
  affects Win32 as on other platforms, that setting was ignored anyway.
- Improved xreadlines, it is now a generator function that yields lines as they
  are received (previously it called readlines which would only return all
  lines read after a read-timeout). However xreadlines is deprecated an not
  available when the io module is used. Use ``for line in Serial(...):``
  instead.

Bugfixes:

- [Bug 2925854] test.py produces exception with python 3.1
- [Bug 3029812] 2.5rc2 readline(s) doesn't work

Bugfixes (posix):

- [BUG 3006606] Nonblocking error - Unix platform

Bugfixes (win32):

- [Bug 2998169] Memory corruption at faster transmission speeds.
  (bug introduced in 2.5-rc1)


Version 2.6      2011-11-02
---------------------------
New Features:

- Moved some of the examples to serial.tools so that they can be used
  with ``python -m``
- serial port enumeration now included as ``serial.tools.list_ports``
- URL handers for ``serial_for_url`` are now imported dynamically. This allows
  to add protocols w/o editing files. The list
  ``serial.protocol_handler_packages`` can be used to add or remove user
  packages with protocol handlers (see docs for details).
- new URL type: hwgrep://<regexp> uses list_ports module to search for ports
  by their description
- serveral internal changes to improve Python 3.x compatibility (setup.py,
  use of absolute imports and more)

Bugfixes:

- [Bug 3093882] calling open() on an already open port now raises an exception
- [Bug 3245627] connection-lost let rfc2217 hangs in closed loop
- [Patch 3147043] readlines() to support multi-character eol

Bugfixes (posix):

- [Patch 3316943] Avoid unneeded termios.tcsetattr calls in serialposix.py
- [Patch 2912349] Serial Scan as a Module with Mac Support

Bugfixes (win32):

- [Bug 3057499] writeTimeoutError when write Timeout is 0
- [Bug 3414327] Character out of range in list_ports_windows
- [Patch 3036175] Windows 98 Support fix
- [Patch 3054352] RTS automatic toggle, for RS485 functionality.
- Fix type definitions for 64 bit Windows compatibility


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/LICENSE.txt
================================================
Copyright (c) 2001-2011 Chris Liechti <cliechti@gmx.net>;
All Rights Reserved.

This is the Python license. In short, you can use this product in
commercial and non-commercial applications, modify it, redistribute it.
A notification to the author when you use and/or modify it is welcome.


TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING THIS SOFTWARE
===================================================================

LICENSE AGREEMENT
-----------------

1. This LICENSE AGREEMENT is between the copyright holder of this
product, and the Individual or Organization ("Licensee") accessing
and otherwise using this product in source or binary form and its
associated documentation.

2. Subject to the terms and conditions of this License Agreement,
the copyright holder hereby grants Licensee a nonexclusive,
royalty-free, world-wide license to reproduce, analyze, test,
perform and/or display publicly, prepare derivative works, distribute,
and otherwise use this product alone or in any derivative version,
provided, however, that copyright holders License Agreement and
copyright holders notice of copyright are retained in this product
alone or in any derivative version prepared by Licensee.

3. In the event Licensee prepares a derivative work that is based on
or incorporates this product or any part thereof, and wants to make
the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of
the changes made to this product.

4. The copyright holder is making this product available to Licensee on
an "AS IS" basis. THE COPYRIGHT HOLDER MAKES NO REPRESENTATIONS OR
WARRANTIES, EXPRESS OR IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION,
THE COPYRIGHT HOLDER MAKES NO AND DISCLAIMS ANY REPRESENTATION OR
WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR
THAT THE USE OF THIS PRODUCT WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.

5. THE COPYRIGHT HOLDER SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER
USERS OF THIS PRODUCT FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL
DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE
USING THIS PRODUCT, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE
POSSIBILITY THEREOF.

6. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.

7. Nothing in this License Agreement shall be deemed to create any
relationship of agency, partnership, or joint venture between the
copyright holder and Licensee. This License Agreement does not grant
permission to use trademarks or trade names from the copyright holder
in a trademark sense to endorse or promote products or services of
Licensee, or any third party.

8. By copying, installing or otherwise using this product, Licensee
agrees to be bound by the terms and conditions of this License
Agreement.



================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/MANIFEST.in
================================================
include README.txt
include LICENSE.txt
include CHANGES.txt
include MANIFEST.in
include setup.py

include examples/enhancedserial.py
include examples/miniterm.py
include examples/port_publisher.py
include examples/port_publisher.sh
include examples/rfc2217_server.py
include examples/scan.py
include examples/scanlinux.py
include examples/scanwin32.py
include examples/setup-miniterm-py2exe.py
include examples/setup-rfc2217_server-py2exe.py
include examples/setup-wxTerminal-py2exe.py
include examples/tcp_serial_redirect.py
include examples/wxSerialConfigDialog.py
include examples/wxSerialConfigDialog.wxg
include examples/wxTerminal.py
include examples/wxTerminal.wxg

include test/run_all_tests.py
include test/test.py
include test/test_advanced.py
include test/test_high_load.py
include test/test_io_lib.py
include test/test_readline.py

include documentation/*.rst
include documentation/pyserial.png
include documentation/conf.py
include documentation/Makefile



================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/PKG-INFO
================================================
Metadata-Version: 1.0
Name: pyserial
Version: 2.6
Summary: Python Serial Port Extension
Home-page: http://pyserial.sourceforge.net/
Author: Chris Liechti
Author-email: cliechti@gmx.net
License: Python
Description: Python Serial Port Extension for Win32, Linux, BSD, Jython, IronPython
Platform: any
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: Python Software Foundation License
Classifier: Natural Language :: English
Classifier: Operating System :: POSIX
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.3
Classifier: Programming Language :: Python :: 2.4
Classifier: Programming Language :: Python :: 2.5
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.0
Classifier: Programming Language :: Python :: 3.1
Classifier: Programming Language :: Python :: 3.2
Classifier: Topic :: Communications
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Terminals :: Serial


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/README.txt
================================================
==========
 pySerial
==========

Overview
========
This module encapsulates the access for the serial port. It provides backends
for Python running on Windows, Linux, BSD (possibly any POSIX compliant
system), Jython and IronPython (.NET and Mono). The module named "serial"
automatically selects the appropriate backend.

- Project Homepage: http://pyserial.sourceforge.net
- Project page on SourceForge: http://sourceforge.net/projects/pyserial/
- SVN repository: http://sourceforge.net/svn/?group_id=46487
- Download Page: http://sourceforge.net/project/showfiles.php?group_id=46487

BSD license, (C) 2001-2011 Chris Liechti <cliechti@gmx.net>


Documentation
=============
For API documentation, usage and examples see files in the "documentation"
directory.  The ".rst" files can be read in any text editor or being converted to
HTML or PDF using Sphinx. An online HTML version is at
http://pyserial.sourceforge.net.


Examples
========
Examples and unit tests are in the directory "examples".


Installation
============
Detailed information can be found in "documentation/pyserial.rst".

The usual setup.py for Python libraries is used for the source distribution.
Windows installers are also available (see download link above).


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/Makefile
================================================
# Makefile for Sphinx documentation
#

# You can set these variables from the command line.
SPHINXOPTS    =
SPHINXBUILD   = sphinx-build
PAPER         =

# Internal variables.
PAPEROPT_a4     = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS   = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .

.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest

help:
	@echo "Please use \`make <target>' where <target> is one of"
	@echo "  html      to make standalone HTML files"
	@echo "  dirhtml   to make HTML files named index.html in directories"
	@echo "  pickle    to make pickle files"
	@echo "  json      to make JSON files"
	@echo "  htmlhelp  to make HTML files and a HTML help project"
	@echo "  qthelp    to make HTML files and a qthelp project"
	@echo "  latex     to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
	@echo "  changes   to make an overview of all changed/added/deprecated items"
	@echo "  linkcheck to check all external links for integrity"
	@echo "  doctest   to run all doctests embedded in the documentation (if enabled)"

clean:
	-rm -rf _build/*

html:
	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html
	@echo
	@echo "Build finished. The HTML pages are in _build/html."

dirhtml:
	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml
	@echo
	@echo "Build finished. The HTML pages are in _build/dirhtml."

pickle:
	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle
	@echo
	@echo "Build finished; now you can process the pickle files."

json:
	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json
	@echo
	@echo "Build finished; now you can process the JSON files."

htmlhelp:
	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp
	@echo
	@echo "Build finished; now you can run HTML Help Workshop with the" \
	      ".hhp project file in _build/htmlhelp."

qthelp:
	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp
	@echo
	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
	      ".qhcp project file in _build/qthelp, like this:"
	@echo "# qcollectiongenerator _build/qthelp/pySerial.qhcp"
	@echo "To view the help file:"
	@echo "# assistant -collectionFile _build/qthelp/pySerial.qhc"

latex:
	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex
	@echo
	@echo "Build finished; the LaTeX files are in _build/latex."
	@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
	      "run these through (pdf)latex."

changes:
	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes
	@echo
	@echo "The overview file is in _build/changes."

linkcheck:
	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck
	@echo
	@echo "Link check complete; look for any errors in the above output " \
	      "or in _build/linkcheck/output.txt."

doctest:
	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest
	@echo "Testing of doctests in the sources finished, look at the " \
	      "results in _build/doctest/output.txt."


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/appendix.rst
================================================
==========
 Appendix
==========

How To
======

Enable :rfc:`2217` in programs using pySerial.
    Patch the code where the :class:`serial.Serial` is instantiated. Replace
    it with::

        try:
            s = serial.serial_for_url(...)
        except AttributeError:
            s = serial.Serial(...)

    Assuming the application already stores port names as strings that's all
    that is required. The user just needs a way to change the port setting of
    your application to an ``rfc2217://`` :ref:`URL <URLs>` (e.g. by editing a
    configuration file, GUI dialog etc.).

    Please note that this enables all :ref:`URL <URLs>` types supported by
    pySerial and that those involving the network are unencrypted and not
    protected against eavesdropping.

Test your setup.
    Is the device not working as expected? Maybe it's time to check the
    connection before proceeding. :ref:`miniterm` from the :ref:`examples`
    can be used to open the serial port and do some basic tests.

    To test cables, connecting RX to TX (loop back) and typing some characters
    in :ref:`miniterm` is a simple test. When the characters are displayed
    on the screen, then at least RX and TX work (they still could be swapped
    though).


FAQ
===
Example works in :ref:`miniterm` but not in script.
    The RTS and DTR lines are switched when the port is opened. This may cause
    some processing or reset on the connected device. In such a cases an
    immediately following call to :meth:`write` may not be received by the
    device.

    A delay after opening the port, before the first :meth:`write`, is
    recommended in this situation. E.g. a ``time.sleep(1)``


Application works when .py file is run, but fails when packaged (py2exe etc.)
    py2exe and similar packaging programs scan the sources for import
    statements and create a list of modules that they package. pySerial may
    create two issues with that:

    - implementations for other modules are found. On Windows, it's safe to
      exclude 'serialposix', 'serialjava' and 'serialcli' as these are not
      used.

    - :func:`serial.serial_for_url` does a dynamic lookup of protocol handlers
      at runtime.  If this function is used, the desired handlers have to be
      included manually (e.g. 'serial.urlhandler.protocol_socket',
      'serial.urlhandler.protocol_rfc2217', etc.). This can be done either with
      the "includes" option in ``setup.py`` or by a dummy import in one of the
      packaged modules.

User supplied URL handlers
    :func:`serial.serial_for_url` can be used to access "virtual" serial ports
    identified by an :ref:`URL <URLs>` scheme. E.g. for the :rfc:`2217`:
    ``rfc2217:://``.

    Custom :ref:`URL <URLs>` handlers can be added by extending the module
    search path in :data:`serial.protocol_handler_packages`. This is possible
    starting from pySerial V2.6.


Related software
================

com0com - http://com0com.sourceforge.net/
    Provides virtual serial ports for Windows.


License
=======

Copyright (C) 2001-2011 Chris Liechti <cliechti(at)gmx.net>;
All Rights Reserved.

This is the Python license. In short, you can use this product in commercial
and non-commercial applications, modify it, redistribute it.  A notification to
the author when you use and/or modify it is welcome.


**TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING THIS SOFTWARE**

*LICENSE AGREEMENT*

1. This LICENSE AGREEMENT is between the copyright holder of this product, and
   the Individual or Organization ("Licensee") accessing and otherwise using
   this product in source or binary form and its associated documentation.

2. Subject to the terms and conditions of this License Agreement, the copyright
   holder hereby grants Licensee a nonexclusive, royalty-free, world-wide
   license to reproduce, analyze, test, perform and/or display publicly,
   prepare derivative works, distribute, and otherwise use this product alone
   or in any derivative version, provided, however, that copyright holders
   License Agreement and copyright holders notice of copyright are retained in
   this product alone or in any derivative version prepared by Licensee.

3. In the event Licensee prepares a derivative work that is based on or
   incorporates this product or any part thereof, and wants to make the
   derivative work available to others as provided herein, then Licensee hereby
   agrees to include in any such work a brief summary of the changes made to
   this product.

4. The copyright holder is making this product available to Licensee on an "AS
   IS" basis. THE COPYRIGHT HOLDER MAKES NO REPRESENTATIONS OR WARRANTIES,
   EXPRESS OR IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, THE COPYRIGHT
   HOLDER MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF
   MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF
   THIS PRODUCT WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.

5. THE COPYRIGHT HOLDER SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF
   THIS PRODUCT FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
   AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING THIS PRODUCT, OR
   ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.

6. This License Agreement will automatically terminate upon a material breach
   of its terms and conditions.

7. Nothing in this License Agreement shall be deemed to create any relationship
   of agency, partnership, or joint venture between the copyright holder and
   Licensee. This License Agreement does not grant permission to use trademarks
   or trade names from the copyright holder in a trademark sense to endorse or
   promote products or services of Licensee, or any third party.

8. By copying, installing or otherwise using this product, Licensee agrees to
   be bound by the terms and conditions of this License Agreement.



================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/conf.py
================================================
# -*- coding: utf-8 -*-
#
# pySerial documentation build configuration file, created by
# sphinx-quickstart on Tue Jul 21 00:27:45 2009.
#
# This file is execfile()d with the current directory set to its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.

import sys, os

# 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.
#sys.path.append(os.path.abspath('.'))

# -- 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.intersphinx']

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

# The suffix of source filenames.
source_suffix = '.rst'

# The encoding of source files.
#source_encoding = 'utf-8'

# The master toctree document.
master_doc = 'index'

# General information about the project.
project = u'pySerial'
copyright = u'2001-2010, Chris Liechti'

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '2.6'
# The full version, including alpha/beta/rc tags.
release = '2.6'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None

# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'

# List of documents that shouldn't be included in the build.
#unused_docs = []

# List of directories, relative to source directory, that shouldn't be searched
# for source files.
exclude_trees = ['_build']

# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None

# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True

# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True

# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False

# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'

# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []


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

# The theme to use for HTML and HTML Help pages.  Major themes that come with
# Sphinx are currently 'default' and 'sphinxdoc'.
html_theme = 'default'

# Theme options are theme-specific and customize the look and feel of a theme
# further.  For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}

# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []

# The name for this set of Sphinx documents.  If None, it defaults to
# "<project> v<release> documentation".
#html_title = None

# A shorter title for the navigation bar.  Default is the same as html_title.
#html_short_title = None

# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
html_logo = 'pyserial.png'

# The name of an image file (within the static path) to use as favicon of the
# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None

# 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']

# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'

# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True

# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}

# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}

# If false, no module index is generated.
#html_use_modindex = True

# If false, no index is generated.
#html_use_index = True

# If true, the index is split into individual pages for each letter.
#html_split_index = False

# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True

# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it.  The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''

# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = ''

# Output file base name for HTML help builder.
htmlhelp_basename = 'pySerialdoc'


# -- Options for LaTeX output --------------------------------------------------

# The paper size ('letter' or 'a4').
#latex_paper_size = 'letter'

# The font size ('10pt', '11pt' or '12pt').
#latex_font_size = '10pt'

# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
  ('index', 'pySerial.tex', u'pySerial Documentation',
   u'Chris Liechti', 'manual'),
]

# The name of an image file (relative to this directory) to place at the top of
# the title page.
latex_logo = 'pyserial.png'

# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False

# Additional stuff for the LaTeX preamble.
#latex_preamble = ''

# Documents to append as an appendix to all manuals.
#latex_appendices = []

# If false, no module index is generated.
#latex_use_modindex = True

# for external links to standard library
intersphinx_mapping = {
        #~ 'python': ('http://docs.python.org', None),
        'py': ('http://docs.python.org', None),
        }


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/examples.rst
================================================
.. _examples:

==========
 Examples
==========

.. _miniterm:

Miniterm
========
This is a console application that provides a small terminal application.
Miniterm itself does not implement any terminal features such as VT102
compatibility. However it inherits these features from the terminal it is run.
For example on GNU/Linux running from an xterm it will support the escape
sequences of the xterm. On Windows the typical console window is dumb and does
not support any escapes. When ANSI.sys is loaded it supports some escapes.

Miniterm::

    --- Miniterm on /dev/ttyS0: 9600,8,N,1 ---
    --- Quit: Ctrl+]  |  Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---

Command line options can be given so that binary data including escapes for
terminals are escaped or output as hex.

Miniterm supports :rfc:`2217` remote serial ports and raw sockets using :ref:`URLs`
such as ``rfc2217:://<host>:<port>`` respectively ``socket://<host>:<port>`` as
*port* argument when invoking.

Command line options ``python -m serial.tools.miniterm -h``::

    Usage: miniterm.py [options] [port [baudrate]]

    Miniterm - A simple terminal program for the serial port.

    Options:
      -h, --help            show this help message and exit
      -p PORT, --port=PORT  port, a number (default 0) or a device name
                            (deprecated option)
      -b BAUDRATE, --baud=BAUDRATE
                            set baud rate, default 9600
      --parity=PARITY       set parity, one of [N, E, O, S, M], default=N
      -e, --echo            enable local echo (default off)
      --rtscts              enable RTS/CTS flow control (default off)
      --xonxoff             enable software flow control (default off)
      --cr                  do not send CR+LF, send CR only
      --lf                  do not send CR+LF, send LF only
      -D, --debug           debug received data (escape non-printable chars)
                            --debug can be given multiple times: 0: just print
                            what is received 1: escape non-printable characters,
                            do newlines as unusual 2: escape non-printable
                            characters, newlines too 3: hex dump everything
      --rts=RTS_STATE       set initial RTS line state (possible values: 0, 1)
      --dtr=DTR_STATE       set initial DTR line state (possible values: 0, 1)
      -q, --quiet           suppress non error messages
      --exit-char=EXIT_CHAR
                            ASCII code of special character that is used to exit
                            the application
      --menu-char=MENU_CHAR
                            ASCII code of special character that is used to
                            control miniterm (menu)


Miniterm supports some control functions. Typing :kbd:`Ctrl+T Ctrl+H` when it is
running shows the help text::

    --- pySerial - miniterm - help
    ---
    --- Ctrl+]   Exit program
    --- Ctrl+T   Menu escape key, followed by:
    --- Menu keys:
    ---       Ctrl+T  Send the menu character itself to remote
    ---       Ctrl+]  Send the exit character to remote
    ---       Ctrl+I  Show info
    ---       Ctrl+U  Upload file (prompt will be shown)
    --- Toggles:
    ---       Ctrl+R  RTS          Ctrl+E  local echo
    ---       Ctrl+D  DTR          Ctrl+B  BREAK
    ---       Ctrl+L  line feed    Ctrl+A  Cycle repr mode
    ---
    --- Port settings (Ctrl+T followed by the following):
    --- p             change port
    --- 7 8           set data bits
    --- n e o s m     change parity (None, Even, Odd, Space, Mark)
    --- 1 2 3         set stop bits (1, 2, 1.5)
    --- b             change baud rate
    --- x X           disable/enable software flow control
    --- r R           disable/enable hardware flow control

.. versionchanged:: 2.5
    Added :kbd:`Ctrl+T` menu and added support for opening URLs.
.. versionchanged:: 2.6
    File moved from the examples to :mod:`serial.tools.miniterm`.

miniterm.py_
    The miniterm program.

setup-miniterm-py2exe.py_
    This is a py2exe setup script for Windows. It can be used to create a
    standalone ``miniterm.exe``.

.. _miniterm.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/serial/tools/miniterm.py
.. _setup-miniterm-py2exe.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/examples/setup-miniterm-py2exe.py


TCP/IP - serial bridge
======================
This program opens a TCP/IP port. When a connection is made to that port (e.g.
with telnet) it forwards all data to the serial port and vice versa.

This example only exports a raw socket connection. The next example
below gives the client much more control over the remote serial port.

- The serial port settings are set on the command line when starting the
  program.
- There is no possibility to change settings from remote.
- All data is passed through as-is.

::

    Usage: tcp_serial_redirect.py [options] [port [baudrate]]

    Simple Serial to Network (TCP/IP) redirector.

    Options:
      -h, --help            show this help message and exit
      -q, --quiet           suppress non error messages
      --spy                 peek at the communication and print all data to the
                            console

      Serial Port:
        Serial port settings

        -p PORT, --port=PORT
                            port, a number (default 0) or a device name
        -b BAUDRATE, --baud=BAUDRATE
                            set baud rate, default: 9600
        --parity=PARITY     set parity, one of [N, E, O], default=N
        --rtscts            enable RTS/CTS flow control (default off)
        --xonxoff           enable software flow control (default off)
        --rts=RTS_STATE     set initial RTS line state (possible values: 0, 1)
        --dtr=DTR_STATE     set initial DTR line state (possible values: 0, 1)

      Network settings:
        Network configuration.

        -P LOCAL_PORT, --localport=LOCAL_PORT
                            local TCP port
        --rfc2217           allow control commands with Telnet extension RFC-2217

      Newline Settings:
        Convert newlines between network and serial port. Conversion is
        normally disabled and can be enabled by --convert.

        -c, --convert       enable newline conversion (default off)
        --net-nl=NET_NEWLINE
                            type of newlines that are expected on the network
                            (default: LF)
        --ser-nl=SER_NEWLINE
                            type of newlines that are expected on the serial port
                            (default: CR+LF)

    NOTE: no security measures are implemented. Anyone can remotely connect to
    this service over the network.  Only one connection at once is supported. When
    the connection is terminated it waits for the next connect.


tcp_serial_redirect.py_
    Main program.

.. _tcp_serial_redirect.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/examples/tcp_serial_redirect.py

Single-port TCP/IP - serial bridge (RFC 2217)
=============================================
Simple cross platform :rfc:`2217` serial port server. It uses threads and is
portable (runs on POSIX, Windows, etc).

- The port settings and control lines (RTS/DTR) can be changed at any time
  using :rfc:`2217` requests. The status lines (DSR/CTS/RI/CD) are polled every
  second and notifications are sent to the client.
- Telnet character IAC (0xff) needs to be doubled in data stream. IAC followed
  by an other value is interpreted as Telnet command sequence.
- Telnet negotiation commands are sent when connecting to the server.
- RTS/DTR are activated on client connect and deactivated on disconnect.
- Default port settings are set again when client disconnects.

::

    Usage: rfc2217_server.py [options] port

    RFC 2217 Serial to Network (TCP/IP) redirector.

    Options:
      -h, --help            show this help message and exit
      -p LOCAL_PORT, --localport=LOCAL_PORT
                            local TCP port

    NOTE: no security measures are implemented. Anyone can remotely connect to
    this service over the network.  Only one connection at once is supported. When
    the connection is terminated it waits for the next connect.

.. versionadded:: 2.5

rfc2217_server.py_
    Main program.

setup-rfc2217_server-py2exe.py_
    This is a py2exe setup script for Windows. It can be used to create a
    standalone ``rfc2217_server.exe``.

.. _rfc2217_server.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/examples/rfc2217_server.py
.. _setup-rfc2217_server-py2exe.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/examples/setup-rfc2217_server-py2exe.py


Multi-port TCP/IP - serial bridge (RFC 2217)
============================================
This example implements a TCP/IP to serial port service that works with
multiple ports at once. It uses select, no threads, for the serial ports and
the network sockets and therefore runs on POSIX systems only.

- Full control over the serial port with :rfc:`2217`.
- Check existence of ``/tty/USB0...8``. This is done every 5 seconds using
  ``os.path.exists``.
- Send zeroconf announcements when port appears or disappears (uses
  python-avahi and dbus). Service name: ``_serial_port._tcp``.
- Each serial port becomes available as one TCP/IP server. e.g.
  ``/dev/ttyUSB0`` is reachable at ``<host>:7000``.
- Single process for all ports and sockets (not per port).
- The script can be started as daemon.
- Logging to stdout or when run as daemon to syslog.
- Default port settings are set again when client disconnects.
- modem status lines (CTS/DSR/RI/CD) are not polled periodically and the server
  therefore does not send NOTIFY_MODEMSTATE on its own. However it responds to
  request from the client (i.e. use the ``poll_modem`` option in the URL when
  using a pySerial client.)

Requirements:

- Python (>= 2.4)
- python-avahi
- python-dbus
- python-serial (>= 2.5)

Installation as daemon:

- Copy the script ``port_publisher.py`` to ``/usr/local/bin``.
- Copy the script ``port_publisher.sh`` to ``/etc/init.d``.
- Add links to the runlevels using ``update-rc.d port_publisher.sh defaults 99``
- Thats it :-) the service will be started on next reboot. Alternatively run
  ``invoke-rc.d port_publisher.sh start`` as root.

.. versionadded:: 2.5 new example

port_publisher.py_
    Multi-port TCP/IP-serial converter (RFC 2217) for POSIX environments.

port_publisher.sh_
    Example init.d script.

.. _port_publisher.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/examples/port_publisher.py
.. _port_publisher.sh: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/examples/port_publisher.sh


wxPython examples
=================
A simple terminal application for wxPython and a flexible serial port
configuration dialog are shown here.

wxTerminal.py_
    A simple terminal application. Note that the length of the buffer is
    limited by wx and it may suddenly stop displaying new input.

wxTerminal.wxg_
    A wxGlade design file for the terminal application.

wxSerialConfigDialog.py_
    A flexible serial port configuration dialog.

wxSerialConfigDialog.wxg_
    The wxGlade design file for the configuration dialog.

setup-wxTerminal-py2exe.py_
    A py2exe setup script to package the terminal application.

.. _wxTerminal.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/examples/wxTerminal.py
.. _wxTerminal.wxg: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/examples/wxTerminal.wxg
.. _wxSerialConfigDialog.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/examples/wxSerialConfigDialog.py
.. _wxSerialConfigDialog.wxg: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/examples/wxSerialConfigDialog.wxg
.. _setup-wxTerminal-py2exe.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/examples/setup-wxTerminal-py2exe.py


Wrapper class
=============
This example provides a subclass based on ``Serial`` that has an alternative
implementation of ``readline()``

enhancedserial.py_
    A class with alternative ``readline()`` implementation.

.. _enhancedserial.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/examples/enhancedserial.py


Unit tests
==========
The project uses a number of unit test to verify the functionality. They all
need a loop back connector. The scripts itself contain more information. All
test scripts are contained in the directory ``test``.

The unit tests are performed on port ``0`` unless a different device name or
``rfc2217://`` URL is given on the command line (argv[1]).

run_all_tests.py_
    Collect all tests from all ``test*`` files and run them. By default, the
    ``loop://`` device is used.

test.py_
    Basic tests (binary capabilities, timeout, control lines).

test_advanced.py_
    Test more advanced features (properties).

test_high_load.py_
    Tests involving sending a lot of data.

test_readline.py_
    Tests involving readline.

test_iolib.py_
    Tests involving the :mod:`io` library. Only available for Python 2.6 and
    newer.

test_url.py_
    Tests involving the :ref:`URL <URLs>` feature.

.. _run_all_tests.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/test/run_all_tests.py
.. _test.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/test/test.py
.. _test_advanced.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/test/test_advanced.py
.. _test_high_load.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/test/test_high_load.py
.. _test_readline.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/test/test_readline.py
.. _test_iolib.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/test/test_iolib.py
.. _test_url.py: http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/test/test_url.py


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/index.rst
================================================
.. pySerial documentation master file

Welcome to pySerial's documentation
===================================

This module encapsulates the access for the serial port. It provides backends
for Python running on Windows, Linux, BSD (possibly any POSIX compliant
system), Jython and IronPython (.NET and Mono). The module named "serial"
automatically selects the appropriate backend.

Other pages (online)

- `project page on SourceForge`_
- `SVN repository`_
- `Download Page`_ with releases
- This page, when viewed online, is at http://pyserial.sf.net.

.. _`project page on SourceForge`: http://sourceforge.net/projects/pyserial/
.. _`SVN repository`: http://sourceforge.net/svn/?group_id=46487
.. _`Download Page`: http://pypi.python.org/pypi/pyserial


Contents:

.. toctree::
    :maxdepth: 2

    pyserial
    shortintro
    examples
    pyserial_api
    pyparallel
    appendix

Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`



================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/pyparallel.rst
================================================
============
 pyParallel
============

.. note:: This module is in development (since years ;-)

Overview
========
This module encapsulates the access for the parallel port. It provides backends
for Python running on Windows and Linux. Other platforms are possible too but
not yet integrated.

This module is still under development. But it may be useful for developers.

Copyright (C) 2001-2003 Chris Liechti <cliechti(at)gmx.net>

Here is the `project page on SourceForge`_ and here is the `SVN repository`_.

.. _`project page on SourceForge`: http://sourceforge.net/projects/pyserial/
.. _`SVN repository`: http://sourceforge.net/svn/?group_id=46487


Features
--------
* same class based interface on all supported platforms
* port numbering starts at zero, no need to know the port name in the user program
* port string (device name) can be specified if access through numbering is inappropriate


Requirements
------------
* Python 2.2 or newer
* "Java Communications" (JavaComm) extension for Java/Jython


Installation
------------
Extract files from the archive, open a shell/console in that directory and let
Distutils do the rest: ``python setup.py install``

The files get installed in the "Lib/site-packages" directory in newer Python versions.

The windows version needs a compiled extension and the giveio.sys driver for
Windows NT/2k/XP. The extension module can be compiled with Distutils with
either MSVC or GCC/mingw32.

It is released under a free software license, see LICENSE.txt for more details.


Short introduction
==================
::

    >>> import parallel
    >>> p = parallel.Parallel()     # open LPT1
    >>> p.setData(0x55)


Examples
--------
Please look in the SVN Repository. There is an example directory where you can
find a simple terminal and more.
http://pyserial.svn.sourceforge.net/viewvc/pyserial/trunk/pyparallel/examples/


API
===

.. module:: parallel

.. class:: Parallel

    .. method:: __init__(port)

        Open given parallel port.

    .. method:: setData(value)

        Apply the given byte to the data pins of the parallel port.

    .. method:: setDataStrobe(level)

        Set the "data strobe" line to the given state.

    .. method:: setAutoFeed(level)

        Set "auto feed" line to given state.

    .. method:: setInitOut(level)

        Set "initialize" line to given state.

    .. method: setSelect(level)

        Set "select" line to given state.

    .. method:getInError()

        Set "Error" line to given state.

    .. method:: getInSelected()

        Read level of "select" line.

    .. method:: getInPaperOut()

        Read level of "paper out" line.

    .. method:: getInAcknowledge()

        Read level of "Acknowledge" line.

    .. method: getInBusy()

        Read level of "busy" line.


.. module:: parallel.parallelutil

.. class:: BitaccessMeta

    This mix-in class adds a few properties that allow easier bit access to the
    data lines. (D0 .. D7) e.g. p.D0 refers to the first bit of the data
    lines.

.. class:: VirtualParallelPort

    This class provides a virtual parallel port implementation, useful
    for tests and simulations without real hardware.


Notes
=====

Linux
-----
1. The :manpage:`lp(4)` module must be unloaded, ``rmmod lp``. ``lp`` claims
   exclusive access to the port and other programs won't be able to use it.

2. The :manpage:`ppdev(4)` module needs to be loaded, ``modprobe ppdev``. When
   ``udev`` is in use, (default with 2.6 kernels) this will create a
   ``/dev/parport0``.

3. The user needs to have write permissions to ``/dev/parport0``. Many
   distributions have an ``lp`` group that owns the device; the simplest is to
   add the user account to this group. Simply changing permissions on the
   device is not the best strategy as they will be reverted to their defaults
   next time the driver is loaded.


Windows
-------
The giveio driver must be installed as the module needs direct access to the
hardware. This also means that USB parallel port adapters won't be supported.


Misc
====
References
----------
* Python: http://www.python.org/
* Jython: http://www.jython.org/
* Java@IBM: http://www-106.ibm.com/developerworks/java/jdk/ (JavaComm links are
  on the download page for the respective platform JDK)
* Java@SUN: http://java.sun.com/products/


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/pyserial.rst
================================================
==========
 pySerial
==========

Overview
========
This module encapsulates the access for the serial port. It provides backends
for Python running on Windows, Linux, BSD (possibly any POSIX compliant
system), Jython and IronPython (.NET and Mono). The module named "serial"
automatically selects the appropriate backend.

It is released under a free software license, see LICENSE_ for more
details.

Copyright (C) 2001-2010 Chris Liechti <cliechti(at)gmx.net>

Other pages (online)

- `project page on SourceForge`_
- `SVN repository`_
- `Download Page`_ with releases
- This page, when viewed online is at http://pyserial.sf.net.

.. _LICENSE: appendix.html#license
.. _`project page on SourceForge`: http://sourceforge.net/projects/pyserial/
.. _`SVN repository`: http://sourceforge.net/svn/?group_id=46487
.. _`Download Page`: http://sourceforge.net/project/showfiles.php?group_id=46487


Features
========
- Same class based interface on all supported platforms.
- Access to the port settings through Python properties.
- Support for different byte sizes, stop bits, parity and flow control with
  RTS/CTS and/or Xon/Xoff.
- Working with or without receive timeout.
- File like API with "read" and "write" ("readline" etc. also supported).
- The files in this package are 100% pure Python.
- The port is set up for binary transmission. No NULL byte stripping, CR-LF
  translation etc. (which are many times enabled for POSIX.) This makes this
  module universally useful.
- Compatible with :mod:`io` library (Python 2.6+)
- RFC 2217 client (experimental), server provided in the examples.


Requirements
============
- Python 2.3 or newer, including Python 3.x
- ctypes extensions on Windows (is in standard library since Python 2.5+)
- "Java Communications" (JavaComm) or compatible extension for Java/Jython


Installation
============

pyserial
--------
This installs a package that can be used from Python (``import serial``).

To install the module for all users on the system, administrator rights (root)
is required..

From source (tar.gz or checkout)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Download the archive from http://pypi.python.org/pypi/pyserial.
Unpack the archive, enter the ``pyserial-x.y`` directory and run::

    python setup.py install

For Python 3.x::

    python3 setup.py install

From PyPI
~~~~~~~~~
Alternatively it can be installed from PyPI, either manually downloading the
files and installing as described above or using::

    pip pyserial

or::

    easy_install -U pyserial

Packages
~~~~~~~~
There are also packaged versions for some Linux distributions and Windows:

Debian/Ubuntu
    A package is available under the name "python-serial". Note that some
    distributions package an older version of pySerial.

Windows
    There is also a Windows installer for end users. It is located in the
    PyPi_.  Developers may be interested to get the source archive, because it
    contains examples and the readme.

.. _PyPi: http://pypi.python.org/pypi/pyserial


References
==========
* Python: http://www.python.org/
* Jython: http://www.jython.org/
* Java@IBM: http://www-106.ibm.com/developerworks/java/jdk/ (JavaComm links are
  on the download page for the respective platform JDK)
* Java@SUN: http://java.sun.com/products/
* IronPython: http://www.codeplex.com/IronPython
* setuptools: http://peak.telecommunity.com/DevCenter/setuptools


Older Versions
==============
Older versions are still available on the `Download Page`_. pySerial 1.21 is
compatible with Python 2.0 on Windows, Linux and several un*x like systems,
MacOSX and Jython.

On windows releases older than 2.5 will depend on pywin32_ (previously known as
win32all)

.. _`Download Page`: http://sourceforge.net/project/showfiles.php?group_id=46487
.. _pywin32: http://pypi.python.org/pypi/pywin32


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/pyserial_api.rst
================================================
==============
 pySerial API
==============

.. module:: serial

Classes
=======

Native ports
------------

.. class:: Serial

    .. method:: __init__(port=None, baudrate=9600, bytesize=EIGHTBITS, parity=PARITY_NONE, stopbits=STOPBITS_ONE, timeout=None, xonxoff=False, rtscts=False, writeTimeout=None, dsrdtr=False, interCharTimeout=None)

        :param port:
            Device name or port number number or :const:`None`.

        :param baudrate:
            Baud rate such as 9600 or 115200 etc.

        :param bytesize:
            Number of data bits. Possible values:
            :const:`FIVEBITS`, :const:`SIXBITS`, :const:`SEVENBITS`,
            :const:`EIGHTBITS`

        :param parity:
            Enable parity checking. Possible values:
            :const:`PARITY_NONE`, :const:`PARITY_EVEN`, :const:`PARITY_ODD`
            :const:`PARITY_MARK`, :const:`PARITY_SPACE`

        :param stopbits:
            Number of stop bits. Possible values:
            :const:`STOPBITS_ONE`, :const:`STOPBITS_ONE_POINT_FIVE`,
            :const:`STOPBITS_TWO`

        :param timeout:
            Set a read timeout value.

        :param xonxoff:
            Enable software flow control.

        :param rtscts:
            Enable hardware (RTS/CTS) flow control.

        :param dsrdtr:
            Enable hardware (DSR/DTR) flow control.

        :param writeTimeout:
            Set a write timeout value.

        :param interCharTimeout:
            Inter-character timeout, :const:`None` to disable (default).

        :exception ValueError:
            Will be raised when parameter are out of range, e.g. baud rate, data bits.

        :exception SerialException:
            In case the device can not be found or can not be configured.


        The port is immediately opened on object creation, when a *port* is
        given. It is not opened when *port* is :const:`None` and a successive call
        to :meth:`open` will be needed.

        Possible values for the parameter *port*:

        - Number: number of device, numbering starts at zero.
        - Device name: depending on operating system. e.g. ``/dev/ttyUSB0``
          on GNU/Linux or ``COM3`` on Windows.

        The parameter *baudrate* can be one of the standard values:
        50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
        9600, 19200, 38400, 57600, 115200.
        These are well supported on all platforms. Standard values above 115200
        such as: 230400, 460800, 500000, 576000, 921600, 1000000, 1152000,
        1500000, 2000000, 2500000, 3000000, 3500000, 4000000 also work on many
        platforms.

        Non-standard values are also supported on some platforms (GNU/Linux, MAC
        OSX >= Tiger, Windows). Though, even on these platforms some serial
        ports may reject non-standard values.

        Possible values for the parameter *timeout*:

        - ``timeout = None``:  wait forever
        - ``timeout = 0``:     non-blocking mode (return immediately on read)
        - ``timeout = x``:     set timeout to ``x`` seconds (float allowed)

        Writes are blocking by default, unless *writeTimeout* is set. For
        possible values refer to the list for *timeout* above.

        Note that enabling both flow control methods (*xonxoff* and *rtscts*)
        together may not be supported. It is common to use one of the methods
        at once, not both.

        *dsrdtr* is not supported by all platforms (silently ignored). Setting
        it to ``None`` has the effect that its state follows *rtscts*.

        Also consider using the function :func:`serial_for_url` instead of
        creating Serial instances directly.

        .. versionchanged:: 2.5
            *dsrdtr* now defaults to ``False`` (instead of *None*)

    .. method:: open()

        Open port.

    .. method:: close()

        Close port immediately.

    .. method:: __del__()

        Destructor, close port when serial port instance is freed.


    The following methods may raise :exc:`ValueError` when applied to a closed
    port.

    .. method:: read(size=1)

        :param size: Number of bytes to read.
        :return: Bytes read from the port.

        Read *size* bytes from the serial port. If a timeout is set it may
        return less characters as requested. With no timeout it will block
        until the requested number of bytes is read.

        .. versionchanged:: 2.5
            Returns an instance of :class:`bytes` when available (Python 2.6
            and newer) and :class:`str` otherwise.

    .. method:: write(data)

        :param data: Data to send.
        :return: Number of bytes written.
        :exception SerialTimeoutException:
            In case a write timeout is configured for the port and the time is
            exceeded.

        Write the string *data* to the port.

        .. versionchanged:: 2.5
            Accepts instances of :class:`bytes` and :class:`bytearray` when
            available (Python 2.6 and newer) and :class:`str` otherwise.

        .. versionchanged:: 2.5
            Write returned ``None`` in previous versions.

    .. method:: inWaiting()

        Return the number of chars in the receive buffer.

    .. method:: flush()

        Flush of file like objects. In this case, wait until all data is
        written.

    .. method:: flushInput()

        Flush input buffer, discarding all it's contents.

    .. method:: flushOutput()

        Clear output buffer, aborting the current output and
        discarding all that is in the buffer.

    .. method:: sendBreak(duration=0.25)

        :param duration: Time (float) to activate the BREAK condition.

        Send break condition. Timed, returns to idle state after given
        duration.

    .. method:: setBreak(level=True)

        :param level: when true activate BREAK condition, else disable.

        Set break: Controls TXD. When active, no transmitting is possible.

    .. method:: setRTS(level=True)

        :param level: Set control line to logic level.

        Set RTS line to specified logic level.

    .. method:: setDTR(level=True)

        :param level: Set control line to logic level.

        Set DTR line to specified logic level.

    .. method:: getCTS()

        :return: Current state (boolean)

        Return the state of the CTS line.

    .. method:: getDSR()

        :return: Current state (boolean)

        Return the state of the DSR line.

    .. method:: getRI()

        :return: Current state (boolean)

        Return the state of the RI line.

    .. method:: getCD()

        :return: Current state (boolean)

        Return the state of the CD line

    Read-only attributes:

    .. attribute:: name

        Device name. This is always the device name even if the
        port was opened by a number. (Read Only).

        .. versionadded:: 2.5

    .. attribute:: portstr

        :deprecated: use :attr:`name` instead

    New values can be assigned to the following attributes (properties), the
    port will be reconfigured, even if it's opened at that time:


    .. attribute:: port

        Read or write port. When the port is already open, it will be closed
        and reopened with the new setting.

    .. attribute:: baudrate

        Read or write current baud rate setting.

    .. attribute:: bytesize

        Read or write current data byte size setting.

    .. attribute:: parity

        Read or write current parity setting.

    .. attribute:: stopbits

        Read or write current stop bit width setting.

    .. attribute:: timeout

        Read or write current read timeout setting.

    .. attribute:: writeTimeout

        Read or write current write timeout setting.

    .. attribute:: xonxoff

        Read or write current software flow control rate setting.

    .. attribute:: rtscts

        Read or write current hardware flow control setting.

    .. attribute:: dsrdtr

        Read or write current hardware flow control setting.

    .. attribute:: interCharTimeout

        Read or write current inter character timeout setting.

    The following constants are also provided:

    .. attribute:: BAUDRATES

        A list of valid baud rates. The list may be incomplete such that higher
        baud rates may be supported by the device and that values in between the
        standard baud rates are supported. (Read Only).

    .. attribute:: BYTESIZES

        A list of valid byte sizes for the device (Read Only).

    .. attribute:: PARITIES

        A list of valid parities for the device (Read Only).

    .. attribute:: STOPBITS

        A list of valid stop bit widths for the device (Read Only).


    The following methods are for compatibility with the :mod:`io` library.

    .. method:: readable()

        :return: True

        .. versionadded:: 2.5

    .. method:: writable()

        :return: True

        .. versionadded:: 2.5

    .. method:: seekable()

        :return: False

        .. versionadded:: 2.5

    .. method:: readinto(b)

        :param b: bytearray or array instance
        :return: Number of byte read

        Read up to len(b) bytes into :class:`bytearray` *b* and return the
        number of bytes read.

        .. versionadded:: 2.5

    The port settings can be read and written as dictionary.

    .. method:: getSettingsDict()

        :return: a dictionary with current port settings.

        Get a dictionary with port settings. This is useful to backup the
        current settings so that a later point in time they can be restored
        using :meth:`applySettingsDict`.

        Note that control lines (RTS/DTR) are part of the settings.

        .. versionadded:: 2.5

    .. method:: applySettingsDict(d)

        :param d: a dictionary with port settings.

        Applies a dictionary that was created by :meth:`getSettingsDict`. Only
        changes are applied and when a key is missing it means that the setting
        stays unchanged.

        Note that control lines (RTS/DTR) are not changed.

        .. versionadded:: 2.5

    Platform specific methods.

    .. warning:: Programs using the following methods are not portable to other platforms!

    .. method:: nonblocking()

        :platform: Unix

        Configure the device for nonblocking operation. This can be useful if
        the port is used with :mod:`select`.

    .. method:: fileno()

        :platform: Unix
        :return: File descriptor.

        Return file descriptor number for the port that is opened by this object.
        It is useful when serial ports are used with :mod:`select`.

    .. method:: setXON(level=True)

        :platform: Windows
        :param level: Set flow control state.

        Set software flow control state.

.. note::

    For systems that provide the :py:mod:`io` library (Python 2.6 and newer), the
    class :class:`Serial` will derive from :py:class:`io.RawIOBase`. For all
    others from :class:`FileLike`.

Implementation detail: some attributes and functions are provided by the
class :class:`SerialBase` and some by the platform specific class and
others by the base class mentioned above.

.. class:: FileLike

    An abstract file like class. It is used as base class for :class:`Serial`
    when no :py:mod:`io` module is available.

    This class implements :meth:`readline` and :meth:`readlines` based on
    :meth:`read` and :meth:`writelines` based on :meth:`write`.

    Note that when the serial port was opened with no timeout, that
    :meth:`readline` blocks until it sees a newline (or the specified size is
    reached) and that :meth:`readlines` would never return and therefore
    refuses to work (it raises an exception in this case)!

    .. method:: writelines(sequence)

        Write a list of strings to the port.


    The following three methods are overridden in :class:`Serial`.

    .. method:: flush()

        Flush of file like objects. It's a no-op in this class, may be overridden.

    .. method:: read()

        Raises NotImplementedError, needs to be overridden by subclass.

    .. method:: write(data)

        Raises NotImplementedError, needs to be overridden by subclass.

    The following functions are implemented for compatibility with other
    file-like objects, however serial ports are not seekable.


    .. method:: seek(pos, whence=0)

        :exception IOError: always, as method is not supported on serial port

        .. versionadded:: 2.5

    .. method:: tell()

        :exception IOError: always, as method is not supported on serial port

        .. versionadded:: 2.5

    .. method:: truncate(self, n=None)

        :exception IOError: always, as method is not supported on serial port

        .. versionadded:: 2.5

    .. method:: isatty()

        :exception IOError: always, as method is not supported on serial port

        .. versionadded:: 2.5

    To be able to use the file like object as iterator for e.g.
    ``for line in Serial(0): ...`` usage:

    .. method:: next()

        Return the next line by calling :meth:`readline`.

    .. method:: __iter__()

        Returns self.

    Other high level access functions.

    .. method:: readline(size=None, eol='\\n')

        :param size: Max number of bytes to read, ``None`` -> no limit.
        :param eol: The end of line character.

        Read a line which is terminated with end-of-line (*eol*) character
        (``\n`` by default) or until timeout.

    .. method:: readlines(sizehint=None, eol='\\n')

        :param sizehint: Ignored parameter.
        :param eol: The end of line character.

        Read a list of lines, until timeout. *sizehint* is ignored and only
        present for API compatibility with built-in File objects.

        Note that this function only returns on a timeout.

    .. method:: xreadlines(sizehint=None)

        Read lines, implemented as generator. Unlike *readlines* (that only
        returns on a timeout) is this function yielding lines as they are
        received.

        .. deprecated:: 2.5
            Use ``for line in Serial(...): ...`` instead. This method is not
            available in Python 2.6 and newer where the :mod:`io` library is
            available and pySerial bases on it.

        .. versionchanged:: 2.5
            Implement as generator.


:rfc:`2217` Network ports
-------------------------

.. warning:: This implementation is currently in an experimental state. Use
    at your own risk.

.. class:: rfc2217.Serial

    This implements a :rfc:`2217` compatible client. Port names are URLs_ in the
    form: ``rfc2217://<host>:<port>[/<option>[/<option>]]``

    This class API is compatible to :class:`Serial` with a few exceptions:

    - numbers as port name are not allowed, only URLs in the form described
      above.
    - writeTimeout is not implemented
    - The current implementation starts a thread that keeps reading from the
      (internal) socket. The thread is managed automatically by the
      :class:`rfc2217.Serial` port object on :meth:`open`/:meth:`close`.
      However it may be a problem for user applications that like to use select
      instead of threads.

    Due to the nature of the network and protocol involved there are a few
    extra points to keep in mind:

    - All operations have an additional latency time.
    - Setting control lines (RTS/CTS) needs more time.
    - Reading the status lines (DSR/DTR etc.) returns a cached value. When that
      cache is updated depends entirely on the server. The server itself may
      implement a polling at a certain rate and quick changes may be invisible.
    - The network layer also has buffers. This means that :meth:`flush`,
      :meth:`flushInput` and :meth:`flushOutput` may work with additional delay.
      Likewise :meth:`inWaiting` returns the size of the data arrived at the
      object internal buffer and excludes any bytes in the network buffers or
      any server side buffer.
    - Closing and immediately reopening the same port may fail due to time
      needed by the server to get ready again.

    Not implemented yet / Possible problems with the implementation:

    - :rfc:`2217` flow control between client and server (objects internal
      buffer may eat all your memory when never read).
    - No authentication support (servers may not prompt for a password etc.)
    - No encryption.

    Due to lack of authentication and encryption it is not suitable to use this
    client for connections across the internet and should only be used in
    controlled environments.

    .. versionadded:: 2.5


.. class:: rfc2217.PortManager

    This class provides helper functions for implementing :rfc:`2217`
    compatible servers.

    Basically, it implements every thing needed for the :rfc:`2217` protocol.
    It just does not open sockets and read/write to serial ports (though it
    changes other port settings). The user of this class must take care of the
    data transmission itself. The reason for that is, that this way, this class
    supports all programming models such as threads and select.

    Usage examples can be found in the examples where two TCP/IP - serial
    converters are shown, one using threads (the single port server) and an
    other using select (the multi port server).

    .. note:: Each new client connection must create a new instance as this
              object (and the :rfc:`2217` protocol) has internal state.

    .. method:: __init__(serial_port, connection, debug_output=False)

        :param serial_port: a :class:`Serial` instance that is managed.
        :param connection: an object implementing :meth:`write`, used to write
            to the network.
        :param debug_output: enables debug messages: a :class:`logging.Logger`
            instance or None.

        Initializes the Manager and starts negotiating with client in Telnet
        and :rfc:`2217` protocol. The negotiation starts immediately so that
        the class should be instantiated in the moment the client connects.

        The *serial_port* can be controlled by :rfc:`2217` commands. This
        object will modify the port settings (baud rate etc.) and control lines
        (RTS/DTR) send BREAK etc. when the corresponding commands are found by
        the :meth:`filter` method.

        The *connection* object must implement a :meth:`write(data)` function.
        This function must ensure that *data* is written at once (no user data
        mixed in, i.e. it must be thread-safe). All data must be sent in its
        raw form (:meth:`escape` must not be used) as it is used to send Telnet
        and :rfc:`2217` control commands.

        For diagnostics of the connection or the implementation, *debug_output*
        can be set to an instance of a :class:`logging.Logger` (e.g.
        ``logging.getLogger('rfc2217.server')``). The caller should configure
        the logger using ``setLevel`` for the desired detail level of the logs.

    .. method:: escape(data)

        :param data: data to be sent over the network.
        :return: data, escaped for Telnet/:rfc:`2217`

        A generator that escapes all data to be compatible with :rfc:`2217`.
        Implementors of servers should use this function to process all data
        sent over the network.

        The function returns a generator which can be used in ``for`` loops.
        It can be converted to bytes using :func:`serial.to_bytes`.

    .. method:: filter(data)

        :param data: data read from the network, including Telnet and
            :rfc:`2217` controls.
        :return: data, free from Telnet and :rfc:`2217` controls.

        A generator that filters and processes all data related to :rfc:`2217`.
        Implementors of servers should use this function to process all data
        received from the network.

        The function returns a generator which can be used in ``for`` loops.
        It can be converted to bytes using :func:`serial.to_bytes`.

    .. method:: check_modem_lines(force_notification=False)

        :param force_notification: Set to false. Parameter is for internal use.

        This function needs to be called periodically (e.g. every second) when
        the server wants to send NOTIFY_MODEMSTATE messages. This is required
        to support the client for reading CTS/DSR/RI/CD status lines.

        The function reads the status line and issues the notifications
        automatically.

    .. versionadded:: 2.5

.. seealso::

   :rfc:`2217` - Telnet Com Port Control Option


Exceptions
==========

.. exception:: SerialException

    Base class for serial port exceptions.

    .. versionchanged:: 2.5
        Now derrives from :exc:`IOError` instead of :exc:`Exception`

.. exception:: SerialTimeoutException

    Exception that is raised on write timeouts.


Constants
=========

*Parity*

.. data:: PARITY_NONE
.. data:: PARITY_EVEN
.. data:: PARITY_ODD
.. data:: PARITY_MARK
.. data:: PARITY_SPACE

*Stop bits*

.. data:: STOPBITS_ONE
.. data:: STOPBITS_ONE_POINT_FIVE
.. data:: STOPBITS_TWO

Note that 1.5 stop bits are not supported on POSIX. It will fall back to 2 stop
bits.

*Byte size*

.. data:: FIVEBITS
.. data:: SIXBITS
.. data:: SEVENBITS
.. data:: EIGHTBITS


*Others*

Default control characters (instances of :class:`bytes` for Python 3.0+) for
software flow control:

.. data:: XON
.. data:: XOFF

Module version:

.. data:: VERSION

    A string indicating the pySerial version, such as ``2.5``.

    .. versionadded:: 2.3


Module functions and attributes
===============================

.. function:: device(number)

    :param number: Port number.
    :return: String containing device name.
    :deprecated: Use device names directly.

    Convert a port number to a platform dependent device name. Unfortunately
    this does not work well for all platforms; e.g. some may miss USB-Serial
    converters and enumerate only internal serial ports.

    The conversion may be made off-line, that is, there is no guarantee that
    the returned device name really exists on the system.


.. function:: serial_for_url(url, \*args, \*\*kwargs)

    :param url: Device name, number or :ref:`URL <URLs>`
    :param do_not_open: When set to true, the serial port is not opened.
    :return: an instance of :class:`Serial` or a compatible object.

    Get a native or a :rfc:`2217` implementation of the Serial class, depending
    on port/url. This factory function is useful when an application wants
    to support both, local ports and remote ports. There is also support
    for other types, see :ref:`URL <URLs>` section below.

    The port is not opened when a keyword parameter called *do_not_open* is
    given and true, by default it is opened.

    .. versionadded:: 2.5


.. attribute:: protocol_handler_packages

    This attribute is a list of package names (strings) that is searched for
    protocol handlers.

    e.g. we want to support a URL ``foobar://``. A module
    ``my_handlers.protocol_foobar`` is provided by the user::

        serial.protocol_handler_packages.append("my_handlers")
        s = serial.serial_for_url("foobar://")

    For an URL starting with ``XY://`` is the function :func:`serial_for_url`
    attempts to import ``PACKAGE.protocol_XY`` with each candidate for
    ``PACKAGE`` from this list.

    .. versionadded:: 2.6


.. function:: to_bytes(sequence)

    :param sequence: String or list of integers
    :returns: an instance of ``bytes``

    Convert a sequence to a ``bytes`` type. This is used to write code that is
    compatible to Python 2.x and 3.x.

    In Python versions prior 3.x, ``bytes`` is a subclass of str. They convert
    ``str([17])`` to ``'[17]'`` instead of ``'\x11'`` so a simple
    ``bytes(sequence)`` doesn't work for all versions of Python.

    This function is used internally and in the unit tests.

    .. versionadded:: 2.5


.. _URLs:

URLs
----
The function :func:`serial_for_url` accepts the following types of URLs:

- ``rfc2217://<host>:<port>[/<option>[/<option>]]``
- ``socket://<host>:<port>[/<option>[/<option>]]``
- ``loop://[<option>[/<option>]]``

Device names are also supported, e.g.:

- ``/dev/ttyUSB0`` (Linux)
- ``COM3`` (Windows)

Future releases of pySerial might add more types. Since pySerial 2.6 it is also
possible for the user to add protocol handlers using
:attr:`protocol_handler_packages`.

``rfc2217://``
    Used to connect to :rfc:`2217` compatible servers. All serial port
    functions are supported. Implemented by :class:`rfc2217.Serial`.

    Supported options in the URL are:

    - ``ign_set_control`` does not wait for acknowledges to SET_CONTROL. This
      option can be used for non compliant servers (i.e. when getting an
      ``remote rejected value for option 'control'`` error when connecting).

    - ``poll_modem``: The client issues NOTIFY_MODEMSTATE requests when status
      lines are read (CTS/DTR/RI/CD). Without this option it relies on the server
      sending the notifications automatically (that's what the RFC suggests and
      most servers do). Enable this option when :meth:`getCTS` does not work as
      expected, i.e. for servers that do not send notifications.

    - ``timeout=<value>``: Change network timeout (default 3 seconds). This is
      useful when the server takes a little more time to send its answers. The
      timeout applies to the initial Telnet / :rfc:`2271` negotiation as well
      as changing port settings or control line change commands.

    - ``logging=[debug|info|warning|error]``: Prints diagnostic messages (not
      useful for end users). It uses the logging module and a logger called
      ``pySerial.rfc2217`` so that the application can setup up logging
      handlers etc. It will call :meth:`logging.basicConfig` which initializes
      for output on ``sys.stderr`` (if no logging was set up already).

``socket://``
    The purpose of this connection type is that applications using pySerial can
    connect to TCP/IP to serial port converters that do not support :rfc:`2217`.

    Uses a TCP/IP socket. All serial port settings, control and status lines
    are ignored. Only data is transmitted and received.

    Supported options in the URL are:

    - ``logging=[debug|info|warning|error]``: Prints diagnostic messages (not
      useful for end users). It uses the logging module and a logger called
      ``pySerial.socket`` so that the application can setup up logging handlers
      etc. It will call :meth:`logging.basicConfig` which initializes for
      output on ``sys.stderr`` (if no logging was set up already).

``loop://``
    The least useful type. It simulates a loop back connection
    (``RX<->TX``  ``RTS<->CTS``  ``DTR<->DSR``). It could be used to test
    applications or run the unit tests.

    Supported options in the URL are:

    - ``logging=[debug|info|warning|error]``: Prints diagnostic messages (not
      useful for end users). It uses the logging module and a logger called
      ``pySerial.loop`` so that the application can setup up logging handlers
      etc. It will call :meth:`logging.basicConfig` which initializes for
      output on ``sys.stderr`` (if no logging was set up already).


Examples:

- ``rfc2217://localhost:7000``
- ``rfc2217://localhost:7000/poll_modem``
- ``rfc2217://localhost:7000/ign_set_control/timeout=5.5``
- ``socket://localhost:7777``
- ``loop://logging=debug``

Tools
=====


serial.tools.list_ports
-----------------------
.. module:: serial.tools.list_ports
.. versionadded:: 2.6

This module can be executed to get a list of ports (``python -m
serial.tools.list_ports``). It also contains the following functions.


.. function:: comports()

    :return: an iterable.

    The function returns an iterable that yields tuples of three strings:

    - port name as it can be passed to :class:`serial.Serial` or
      :func:`serial.serial_for_url`
    - description in human readable form
    - sort of hardware ID. E.g. may contain VID:PID of USB-serial adapters.

    Items are returned in no particular order. It may make sense to sort the
    items. Also note that the reported strings are different across platforms
    and operating systems, even for the same device.

    .. note:: Support is limited to a number of operating systems. On some
              systems description and hardware ID will not be available
              (``None``).

    :platform: Posix (/dev files)
    :platform: Linux (/dev files, sysfs and lsusb)
    :platform: Windows (setupapi, registry)


.. function:: grep(regexp)

    :param regexp: regular expression (see stdlib :mod:`re`)
    :return: filtered sequence, see :func:`comports`.

    Search for ports using a regular expression. Port name, description and
    hardware ID are searched (case insensitive). The function returns an
    iterable that contains the same tuples that :func:`comport` generates but
    only those that match the regexp.


serial.tools.miniterm
-----------------------
.. module:: serial.tools.miniterm
.. versionadded:: 2.6

Miniterm is now available as module instead of example.
see :ref:`miniterm` for details.



================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/shortintro.rst
================================================
====================
 Short introduction
====================

Opening serial ports
====================

Open port 0 at "9600,8,N,1", no timeout::

    >>> import serial
    >>> ser = serial.Serial(0)  # open first serial port
    >>> print ser.portstr       # check which port was really used
    >>> ser.write("hello")      # write a string
    >>> ser.close()             # close port

Open named port at "19200,8,N,1", 1s timeout::

    >>> ser = serial.Serial('/dev/ttyS1', 19200, timeout=1)
    >>> x = ser.read()          # read one byte
    >>> s = ser.read(10)        # read up to ten bytes (timeout)
    >>> line = ser.readline()   # read a '\n' terminated line
    >>> ser.close()

Open second port at "38400,8,E,1", non blocking HW handshaking::

    >>> ser = serial.Serial(1, 38400, timeout=0,
    ...                     parity=serial.PARITY_EVEN, rtscts=1)
    >>> s = ser.read(100)       # read up to one hundred bytes
    ...                         # or as much is in the buffer

Configuring ports later
=======================

Get a Serial instance and configure/open it later::

    >>> ser = serial.Serial()
    >>> ser.baudrate = 19200
    >>> ser.port = 0
    >>> ser
    Serial<id=0xa81c10, open=False>(port='COM1', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0)
    >>> ser.open()
    >>> ser.isOpen()
    True
    >>> ser.close()
    >>> ser.isOpen()
    False

Readline
========
Be carefully when using :meth:`readline`. Do specify a timeout when opening the
serial port otherwise it could block forever if no newline character is
received. Also note that :meth:`readlines` only works with a timeout.
:meth:`readlines` depends on having a timeout and interprets that as EOF (end
of file). It raises an exception if the port is not opened correctly.

Do also have a look at the example files in the examples directory in the
source distribution or online.

.. note::

    The ``eol`` parameter for :meth:`readline` is no longer supported when
    pySerial is run with newer Python versions (V2.6+) where the module
    :mod:`io` is available.

EOL
---
To specify the EOL character for :meth:`readline` or to use universal newline
mode, it is advised to use io.TextIOWrapper_::

        import serial
        import io
        ser = serial.serial_for_url('loop://', timeout=1)
        sio = io.TextIOWrapper(io.BufferedRWPair(ser, ser))

        sio.write(unicode("hello\n"))
        sio.flush() # it is buffering. required to get the data out *now*
        hello = sio.readline()
        print hello == unicode("hello\n")


.. _io.TextIOWrapper: http://docs.python.org/library/io.html#io.TextIOWrapper


Testing ports
=============
Listing ports
-------------
``python -m serial.tools.list_ports`` will print a list of available ports. It
is also possible to add a regexp as first argument and the list will only
include entries that matched.

.. note::

    The enumeration may not work on all operating systems. It may be
    incomplete, list unavailable ports or may lack detailed descriptions of the
    ports.

.. versionadded: 2.6

Accessing ports
---------------
pySerial includes a small terminal console based terminal program called
:ref:`miniterm`.  It ca be started with ``python -m serial.tools.miniterm <port name>``
(use option ``-h`` to get a listing of all options).


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/enhancedserial.py
================================================
#!/usr/bin/env python
"""Enhanced Serial Port class
part of pyserial (http://pyserial.sf.net)  (C)2002 cliechti@gmx.net

another implementation of the readline and readlines method.
this one should be more efficient because a bunch of characters are read
on each access, but the drawback is that a timeout must be specified to
make it work (enforced by the class __init__).

this class could be enhanced with a read_until() method and more
like found in the telnetlib.
"""

from serial import Serial

class EnhancedSerial(Serial):
    def __init__(self, *args, **kwargs):
        #ensure that a reasonable timeout is set
        timeout = kwargs.get('timeout',0.1)
        if timeout < 0.01: timeout = 0.1
        kwargs['timeout'] = timeout
        Serial.__init__(self, *args, **kwargs)
        self.buf = ''
        
    def readline(self, maxsize=None, timeout=1):
        """maxsize is ignored, timeout in seconds is the max time that is way for a complete line"""
        tries = 0
        while 1:
            self.buf += self.read(512)
            pos = self.buf.find('\n')
            if pos >= 0:
                line, self.buf = self.buf[:pos+1], self.buf[pos+1:]
                return line
            tries += 1
            if tries * self.timeout > timeout:
                break
        line, self.buf = self.buf, ''
        return line

    def readlines(self, sizehint=None, timeout=1):
        """read all lines that are available. abort after timout
        when no more data arrives."""
        lines = []
        while 1:
            line = self.readline(timeout=timeout)
            if line:
                lines.append(line)
            if not line or line[-1:] != '\n':
                break
        return lines

if __name__=='__main__':
    #do some simple tests with a Loopback HW (see test.py for details)
    PORT = 0
    #test, only with Loopback HW (shortcut RX/TX pins (3+4 on DSUB 9 and 25) )
    s = EnhancedSerial(PORT)
    #write out some test data lines
    s.write('\n'.join("hello how are you".split()))
    #and read them back
    print s.readlines()
    #this one should print an empty list
    print s.readlines(timeout=0.4)


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/port_publisher.py
================================================
#! /usr/bin/env python
"""\
Multi-port serial<->TCP/IP forwarder.
- RFC 2217
- check existence of serial port periodically
- start/stop forwarders
- each forwarder creates a server socket and opens the serial port
- serial ports are opened only once. network connect/disconnect
  does not influence serial port
- only one client per connection
"""
import sys, os, time
import traceback
import socket
import select

import serial
import serial.rfc2217

import avahi
import dbus

class ZeroconfService:
    """\
    A simple class to publish a network service with zeroconf using avahi.
    """

    def __init__(self, name, port, stype="_http._tcp",
                 domain="", host="", text=""):
        self.name = name
        self.stype = stype
        self.domain = domain
        self.host = host
        self.port = port
        self.text = text
        self.group = None

    def publish(self):
        bus = dbus.SystemBus()
        server = dbus.Interface(
            bus.get_object(
                avahi.DBUS_NAME,
                avahi.DBUS_PATH_SERVER
            ),
            avahi.DBUS_INTERFACE_SERVER
        )

        g = dbus.Interface(
            bus.get_object(
                avahi.DBUS_NAME,
                server.EntryGroupNew()
            ),
            avahi.DBUS_INTERFACE_ENTRY_GROUP
        )

        g.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0),
                     self.name, self.stype, self.domain, self.host,
                     dbus.UInt16(self.port), self.text)

        g.Commit()
        self.group = g

    def unpublish(self):
        if self.group is not None:
            self.group.Reset()
            self.group = None

    def __str__(self):
        return "%r @ %s:%s (%s)" % (self.name, self.host, self.port, self.stype)



class Forwarder(ZeroconfService):
    """\
    Single port serial<->TCP/IP forarder that depends on an external select
    loop.
    - Buffers for serial -> network and network -> serial
    - RFC 2217 state
    - Zeroconf publish/unpublish on open/close.
    """

    def __init__(self, device, name, network_port, on_close=None):
        ZeroconfService.__init__(self, name, network_port, stype='_serial_port._tcp')
        self.alive = False
        self.network_port = network_port
        self.on_close = on_close
        self.device = device
        self.serial = serial.Serial()
        self.serial.port = device
        self.serial.baudrate = 115200
        self.serial.timeout = 0
        self.socket = None
        self.server_socket = None
        self.rfc2217 = None # instantiate later, when connecting

    def __del__(self):
        try:
            if self.alive: self.close()
        except:
            pass # XXX errors on shutdown

    def open(self):
        """open serial port, start network server and publish service"""
        self.buffer_net2ser = ''
        self.buffer_ser2net = ''

        # open serial port
        try:
            self.serial.open()
            self.serial.setRTS(False)
        except Exception, msg:
            self.handle_serial_error(msg)

        self.serial_settings_backup = self.serial.getSettingsDict()

        # start the socket server
        self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.server_socket.setsockopt(
            socket.SOL_SOCKET,
            socket.SO_REUSEADDR,
            self.server_socket.getsockopt(
                socket.SOL_SOCKET,
                socket.SO_REUSEADDR
            ) | 1
        )
        self.server_socket.setblocking(0)
        try:
            self.server_socket.bind( ('', self.network_port) )
            self.server_socket.listen(1)
        except socket.error, msg:
            self.handle_server_error()
            #~ raise
        if not options.quiet:
            print "%s: Waiting for connection on %s..." % (self.device, self.network_port)

        # zeroconfig
        self.publish()

        # now we are ready
        self.alive = True

    def close(self):
        """Close all resources and unpublish service"""
        if not options.quiet:
            print "%s: closing..." % (self.device, )
        self.alive = False
        self.unpublish()
        if self.server_socket: self.server_socket.close()
        if self.socket:
            self.handle_disconnect()
        self.serial.close()
        if self.on_close is not None:
            # ensure it is only called once
            callback = self.on_close
            self.on_close = None
            callback(self)

    def write(self, data):
        """the write method is used by serial.rfc2217.PortManager. it has to
        write to the network."""
        self.buffer_ser2net += data

    def update_select_maps(self, read_map, write_map, error_map):
        """Update dictionaries for select call. insert fd->callback mapping"""
        if self.alive:
            # always handle serial port reads
            read_map[self.serial] = self.handle_serial_read
            error_map[self.serial] = self.handle_serial_error
            # handle serial port writes if buffer is not empty
            if self.buffer_net2ser:
                write_map[self.serial] = self.handle_serial_write
            # handle network
            if self.socket is not None:
                # handle socket if connected
                # only read from network if the internal buffer is not
                # already filled. the TCP flow control will hold back data
                if len(self.buffer_net2ser) < 2048:
                    read_map[self.socket] = self.handle_socket_read
                # only check for write readiness when there is data
                if self.buffer_ser2net:
                    write_map[self.socket] = self.handle_socket_write
                error_map[self.socket] = self.handle_socket_error
            else:
                # no connection, ensure clear buffer
                self.buffer_ser2net = ''
            # check the server socket
            read_map[self.server_socket] = self.handle_connect
            error_map[self.server_socket] = self.handle_server_error


    def handle_serial_read(self):
        """Reading from serial port"""
        try:
            data = os.read(self.serial.fileno(), 1024)
            if data:
                # store data in buffer if there is a client connected
                if self.socket is not None:
                    # escape outgoing data when needed (Telnet IAC (0xff) character)
                    if self.rfc2217:
                        data = serial.to_bytes(self.rfc2217.escape(data))
                    self.buffer_ser2net += data
            else:
                self.handle_serial_error()
        except Exception, msg:
            self.handle_serial_error(msg)

    def handle_serial_write(self):
        """Writing to serial port"""
        try:
            # write a chunk
            n = os.write(self.serial.fileno(), self.buffer_net2ser)
            # and see how large that chunk was, remove that from buffer
            self.buffer_net2ser = self.buffer_net2ser[n:]
        except Exception, msg:
            self.handle_serial_error(msg)

    def handle_serial_error(self, error=None):
        """Serial port error"""
        # terminate connection
        self.close()

    def handle_socket_read(self):
        """Read from socket"""
        try:
            # read a chunk from the serial port
            data = self.socket.recv(1024)
            if data:
                # Process RFC 2217 stuff when enabled
                if self.rfc2217:
                    data = serial.to_bytes(self.rfc2217.filter(data))
                # add data to buffer
                self.buffer_net2ser += data
            else:
                # empty read indicates disconnection
                self.handle_disconnect()
        except socket.error:
            self.handle_socket_error()

    def handle_socket_write(self):
        """Write to socket"""
        try:
            # write a chunk
            count = self.socket.send(self.buffer_ser2net)
            # and remove the sent data from the buffer
            self.buffer_ser2net = self.buffer_ser2net[count:]
        except socket.error:
            self.handle_socket_error()

    def handle_socket_error(self):
        """Socket connection fails"""
        self.handle_disconnect()

    def handle_connect(self):
        """Server socket gets a connection"""
        # accept a connection in any case, close connection
        # below if already busy
        connection, addr = self.server_socket.accept()
        if self.socket is None:
            self.socket = connection
            self.socket.setblocking(0)
            self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
            if not options.quiet:
                print '%s: Connected by %s:%s' % (self.device, addr[0], addr[1])
            self.serial.setRTS(True)
            self.serial.setDTR(True)
            self.rfc2217 = serial.rfc2217.PortManager(self.serial, self)
        else:
            # reject connection if there is already one
            connection.close()
            if not options.quiet:
                print '%s: Rejecting connect from %s:%s' % (self.device, addr[0], addr[1])

    def handle_server_error(self):
        """Socket server fails"""
        self.close()

    def handle_disconnect(self):
        """Socket gets disconnected"""
        # signal disconnected terminal with control lines
        try:
            self.serial.setRTS(False)
            self.serial.setDTR(False)
        finally:
            # restore original port configuration in case it was changed
            self.serial.applySettingsDict(self.serial_settings_backup)
            # stop RFC 2217 state machine
            self.rfc2217 = None
            # clear send buffer
            self.buffer_ser2net = ''
            # close network connection
            if self.socket is not None:
                self.socket.close()
                self.socket = None
                if not options.quiet:
                    print '%s: Disconnected' % self.device


def test():
    service = ZeroconfService(name="TestService", port=3000)
    service.publish()
    raw_input("Press any key to unpublish the service ")
    service.unpublish()


if __name__ == '__main__':
    import optparse

    parser = optparse.OptionParser(usage="""\
%prog [options]

Announce the existence of devices using zeroconf and provide
a TCP/IP <-> serial port gateway (implements RFC 2217).

Note that the TCP/IP server is not protected. Everyone can connect
to it!

If running as daemon, write to syslog. Otherwise write to stdout.
""")

    parser.add_option("-q", "--quiet", dest="quiet", action="store_true",
        help="suppress non error messages", default=False)

    parser.add_option("-o", "--logfile", dest="log_file",
        help="write messages file instead of stdout", default=None, metavar="FILE")

    parser.add_option("-d", "--daemon", dest="daemonize", action="store_true",
            help="start as daemon", default=False)

    parser.add_option("", "--pidfile", dest="pid_file",
        help="specify a name for the PID file", default=None, metavar="FILE")

    (options, args) = parser.parse_args()

    # redirect output if specified
    if options.log_file is not None:
        class WriteFlushed:
            def __init__(self, fileobj):
                self.fileobj = fileobj
            def write(self, s):
                self.fileobj.write(s)
                self.fileobj.flush()
            def close(self):
                self.fileobj.close()
                sys.stdout = sys.stderr = WriteFlushed(open(options.log_file, 'a'))
        # atexit.register(lambda: sys.stdout.close())

    if options.daemonize:
        # if running as daemon is requested, do the fork magic
        # options.quiet = True
        import pwd
        # do the UNIX double-fork magic, see Stevens' "Advanced
        # Programming in the UNIX Environment" for details (ISBN 0201563177)
        try:
            pid = os.fork()
            if pid > 0:
                # exit first parent
                sys.exit(0)
        except OSError, e:
            sys.stderr.write("fork #1 failed: %d (%s)\n" % (e.errno, e.strerror))
            sys.exit(1)

        # decouple from parent environment
        os.chdir("/")   # don't prevent unmounting....
        os.setsid()
        os.umask(0)

        # do second fork
        try:
            pid = os.fork()
            if pid > 0:
                # exit from second parent, print eventual PID before
                # print "Daemon PID %d" % pid
                if options.pid_file is not None:
                    open(options.pid_file,'w').write("%d"%pid)
                sys.exit(0)
        except OSError, e:
            sys.stderr.write("fork #2 failed: %d (%s)\n" % (e.errno, e.strerror))
            sys.exit(1)

        if options.log_file is None:
            import syslog
            syslog.openlog("serial port publisher")
            # redirect output to syslog
            class WriteToSysLog:
                def __init__(self):
                    self.buffer = ''
                def write(self, s):
                    self.buffer += s
                    if '\n' in self.buffer:
                        output, self.buffer = self.buffer.split('\n', 1)
                        syslog.syslog(output)
                def flush(self):
                    syslog.syslog(self.buffer)
                    self.buffer = ''
                def close(self):
                    self.flush()
            sys.stdout = sys.stderr = WriteToSysLog()

            # ensure the that the daemon runs a normal user, if run as root
        #if os.getuid() == 0:
            #    name, passwd, uid, gid, desc, home, shell = pwd.getpwnam('someuser')
            #    os.setgid(gid)     # set group first
            #    os.setuid(uid)     # set user

    # keep the published stuff in a dictionary
    published = {}
    # prepare list of device names (hard coded)
    device_list = ['/dev/ttyUSB%d' % p for p in range(8)]
    # get a nice hostname
    hostname = socket.gethostname()

    def unpublish(forwarder):
        """when forwarders die, we need to unregister them"""
        try:
            del published[forwarder.device]
        except KeyError:
            pass
        else:
            if not options.quiet: print "unpublish: %s" % (forwarder)

    alive = True
    next_check = 0
    # main loop
    while alive:
        try:
            # if it is time, check for serial port devices
            now = time.time()
            if now > next_check:
                next_check = now + 5
                # check each device
                for device in device_list:
                    # if it appeared
                    if os.path.exists(device):
                        if device not in published:
                            num = int(device[-1])
                            published[device] = Forwarder(
                                device,
                                "%s on %s" % (device, hostname),
                                7000+num,
                                on_close=unpublish
                            )
                            if not options.quiet: print "publish: %s" % (published[device])
                            published[device].open()
                    else:
                        # or when it disappeared
                        if device in published:
                            if not options.quiet: print "unpublish: %s" % (published[device])
                            published[device].close()
                            try:
                                del published[device]
                            except KeyError:
                                pass

            # select_start = time.time()
            read_map = {}
            write_map = {}
            error_map = {}
            for publisher in published.values():
                publisher.update_select_maps(read_map, write_map, error_map)
            try:
                readers, writers, errors = select.select(
                    read_map.keys(),
                    write_map.keys(),
                    error_map.keys(),
                    5
                )
            except select.error, err:
                if err[0] != EINTR:
                    raise
            # select_end = time.time()
            # print "select used %.3f s" % (select_end - select_start)
            for reader in readers:
                read_map[reader]()
            for writer in writers:
                write_map[writer]()
            for error in errors:
                error_map[error]()
            # print "operation used %.3f s" % (time.time() - select_end)
        except KeyboardInterrupt:
            alive = False
        except SystemExit:
            raise
        except:
            #~ raise
            traceback.print_exc()


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/port_publisher.sh
================================================
#! /bin/sh
# daemon starter script
# based on skeleton from Debian GNU/Linux
# cliechti at gmx.net

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/bin/port_publisher.py
NAME=port_publisher
DESC="serial port avahi device publisher"

test -f $DAEMON || exit 0

set -e

case "$1" in
    start)
        echo -n "Starting $DESC: "
        $DAEMON --daemon --pidfile /var/run/$NAME.pid
        echo "$NAME."
        ;;
    stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid
        # \     --exec $DAEMON
        echo "$NAME."
        ;;
    restart|force-reload)
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --pidfile \
                /var/run/$NAME.pid
                # --exec $DAEMON
        sleep 1
        $DAEMON --daemon --pidfile /var/run/$NAME.pid
        echo "$NAME."
        ;;
    *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0



================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/rfc2217_server.py
================================================
#!/usr/bin/env python

# (C) 2009 Chris Liechti <cliechti@gmx.net>
# redirect data from a TCP/IP connection to a serial port and vice versa
# using RFC 2217


import sys
import os
import threading
import time
import socket
import serial
import serial.rfc2217
import logging

class Redirector:
    def __init__(self, serial_instance, socket, debug=None):
        self.serial = serial_instance
        self.socket = socket
        self._write_lock = threading.Lock()
        self.rfc2217 = serial.rfc2217.PortManager(
            self.serial,
            self,
            logger = (debug and logging.getLogger('rfc2217.server'))
            )
        self.log = logging.getLogger('redirector')

    def statusline_poller(self):
        self.log.debug('status line poll thread started')
        while self.alive:
            time.sleep(1)
            self.rfc2217.check_modem_lines()
        self.log.debug('status line poll thread terminated')

    def shortcut(self):
        """connect the serial port to the TCP port by copying everything
           from one side to the other"""
        self.alive = True
        self.thread_read = threading.Thread(target=self.reader)
        self.thread_read.setDaemon(True)
        self.thread_read.setName('serial->socket')
        self.thread_read.start()
        self.thread_poll = threading.Thread(target=self.statusline_poller)
        self.thread_poll.setDaemon(True)
        self.thread_poll.setName('status line poll')
        self.thread_poll.start()
        self.writer()

    def reader(self):
        """loop forever and copy serial->socket"""
        self.log.debug('reader thread started')
        while self.alive:
            try:
                data = self.serial.read(1)              # read one, blocking
                n = self.serial.inWaiting()             # look if there is more
                if n:
                    data = data + self.serial.read(n)   # and get as much as possible
                if data:
                    # escape outgoing data when needed (Telnet IAC (0xff) character)
                    data = serial.to_bytes(self.rfc2217.escape(data))
                    self._write_lock.acquire()
                    try:
                        self.socket.sendall(data)       # send it over TCP
                    finally:
                        self._write_lock.release()
            except socket.error, msg:
                self.log.error('%s' % (msg,))
                # probably got disconnected
                break
        self.alive = False
        self.log.debug('reader thread terminated')

    def write(self, data):
        """thread safe socket write with no data escaping. used to send telnet stuff"""
        self._write_lock.acquire()
        try:
            self.socket.sendall(data)
        finally:
            self._write_lock.release()

    def writer(self):
        """loop forever and copy socket->serial"""
        while self.alive:
            try:
                data = self.socket.recv(1024)
                if not data:
                    break
                self.serial.write(serial.to_bytes(self.rfc2217.filter(data)))
            except socket.error, msg:
                self.log.error('%s' % (msg,))
                # probably got disconnected
                break
        self.stop()

    def stop(self):
        """Stop copying"""
        self.log.debug('stopping')
        if self.alive:
            self.alive = False
            self.thread_read.join()
            self.thread_poll.join()


if __name__ == '__main__':
    import optparse

    parser = optparse.OptionParser(
        usage = "%prog [options] port",
        description = "RFC 2217 Serial to Network (TCP/IP) redirector.",
        epilog = """\
NOTE: no security measures are implemented. Anyone can remotely connect
to this service over the network.

Only one connection at once is supported. When the connection is terminated
it waits for the next connect.
""")

    parser.add_option("-p", "--localport",
        dest = "local_port",
        action = "store",
        type = 'int',
        help = "local TCP port",
        default = 2217
    )

    parser.add_option("-v", "--verbose",
        dest = "verbosity",
        action = "count",
        help = "print more diagnostic messages (option can be given multiple times)",
        default = 0
    )

    (options, args) = parser.parse_args()

    if len(args) != 1:
        parser.error('serial port name required as argument')

    if options.verbosity > 3:
        options.verbosity = 3
    level = (
        logging.WARNING,
        logging.INFO,
        logging.DEBUG,
        logging.NOTSET,
        )[options.verbosity]
    logging.basicConfig(level=logging.INFO)
    logging.getLogger('root').setLevel(logging.INFO)
    logging.getLogger('rfc2217').setLevel(level)

    # connect to serial port
    ser = serial.Serial()
    ser.port     = args[0]
    ser.timeout  = 3     # required so that the reader thread can exit

    logging.info("RFC 2217 TCP/IP to Serial redirector - type Ctrl-C / BREAK to quit")

    try:
        ser.open()
    except serial.SerialException, e:
        logging.error("Could not open serial port %s: %s" % (ser.portstr, e))
        sys.exit(1)

    logging.info("Serving serial port: %s" % (ser.portstr,))
    settings = ser.getSettingsDict()
    # reset control line as no _remote_ "terminal" has been connected yet
    ser.setDTR(False)
    ser.setRTS(False)

    srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    srv.bind( ('', options.local_port) )
    srv.listen(1)
    logging.info("TCP/IP port: %s" % (options.local_port,))
    while True:
        try:
            connection, addr = srv.accept()
            logging.info('Connected by %s:%s' % (addr[0], addr[1]))
            connection.setsockopt( socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
            ser.setRTS(True)
            ser.setDTR(True)
            # enter network <-> serial loop
            r = Redirector(
                ser,
                connection,
                options.verbosity > 0
            )
            try:
                r.shortcut()
            finally:
                logging.info('Disconnected')
                r.stop()
                connection.close()
                ser.setDTR(False)
                ser.setRTS(False)
            # Restore port settings (may have been changed by RFC 2217 capable
            # client)
            ser.applySettingsDict(settings)
        except KeyboardInterrupt:
            break
        except socket.error, msg:
            logging.error('%s' % (msg,))

    logging.info('--- exit ---')


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/scan.py
================================================
#! /usr/bin/env python
"""\
Scan for serial ports.

Part of pySerial (http://pyserial.sf.net)
(C) 2002-2003 <cliechti@gmx.net>

The scan function of this module tries to open each port number
from 0 to 255 and it builds a list of those ports where this was
successful.
"""

import serial

def scan():
    """scan for available ports. return a list of tuples (num, name)"""
    available = []
    for i in range(256):
        try:
            s = serial.Serial(i)
            available.append( (i, s.portstr))
            s.close()   # explicit close 'cause of delayed GC in java
        except serial.SerialException:
            pass
    return available

if __name__=='__main__':
    print "Found ports:"
    for n,s in scan():
        print "(%d) %s" % (n,s)


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/scanlinux.py
================================================
#! /usr/bin/env python
"""\
Scan for serial ports. Linux specific variant that also includes USB/Serial
adapters.

Part of pySerial (http://pyserial.sf.net)
(C) 2009 <cliechti@gmx.net>
"""

import serial
import glob

def scan():
    """scan for available ports. return a list of device names."""
    return glob.glob('/dev/ttyS*') + glob.glob('/dev/ttyUSB*') + glob.glob('/dev/ttyACM*')

if __name__=='__main__':
    print "Found ports:"
    for name in scan():
        print name


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/scanwin32.py
================================================
import ctypes
import re

def ValidHandle(value):
    if value == 0:
        raise ctypes.WinError()
    return value

NULL = 0
HDEVINFO = ctypes.c_int
BOOL = ctypes.c_int
CHAR = ctypes.c_char
PCTSTR = ctypes.c_char_p
HWND = ctypes.c_uint
DWORD = ctypes.c_ulong
PDWORD = ctypes.POINTER(DWORD)
ULONG = ctypes.c_ulong
ULONG_PTR = ctypes.POINTER(ULONG)
#~ PBYTE = ctypes.c_char_p
PBYTE = ctypes.c_void_p

class GUID(ctypes.Structure):
    _fields_ = [
        ('Data1', ctypes.c_ulong),
        ('Data2', ctypes.c_ushort),
        ('Data3', ctypes.c_ushort),
        ('Data4', ctypes.c_ubyte*8),
    ]
    def __str__(self):
        return "{%08x-%04x-%04x-%s-%s}" % (
            self.Data1,
            self.Data2,
            self.Data3,
            ''.join(["%02x" % d for d in self.Data4[:2]]),
            ''.join(["%02x" % d for d in self.Data4[2:]]),
        )

class SP_DEVINFO_DATA(ctypes.Structure):
    _fields_ = [
        ('cbSize', DWORD),
        ('ClassGuid', GUID),
        ('DevInst', DWORD),
        ('Reserved', ULONG_PTR),
    ]
    def __str__(self):
        return "ClassGuid:%s DevInst:%s" % (self.ClassGuid, self.DevInst)
PSP_DEVINFO_DATA = ctypes.POINTER(SP_DEVINFO_DATA)

class SP_DEVICE_INTERFACE_DATA(ctypes.Structure):
    _fields_ = [
        ('cbSize', DWORD),
        ('InterfaceClassGuid', GUID),
        ('Flags', DWORD),
        ('Reserved', ULONG_PTR),
    ]
    def __str__(self):
        return "InterfaceClassGuid:%s Flags:%s" % (self.InterfaceClassGuid, self.Flags)

PSP_DEVICE_INTERFACE_DATA = ctypes.POINTER(SP_DEVICE_INTERFACE_DATA)

PSP_DEVICE_INTERFACE_DETAIL_DATA = ctypes.c_void_p

class dummy(ctypes.Structure):
    _fields_=[("d1", DWORD), ("d2", CHAR)]
    _pack_ = 1
SIZEOF_SP_DEVICE_INTERFACE_DETAIL_DATA_A = ctypes.sizeof(dummy)

SetupDiDestroyDeviceInfoList = ctypes.windll.setupapi.SetupDiDestroyDeviceInfoList
SetupDiDestroyDeviceInfoList.argtypes = [HDEVINFO]
SetupDiDestroyDeviceInfoList.restype = BOOL

SetupDiGetClassDevs = ctypes.windll.setupapi.SetupDiGetClassDevsA
SetupDiGetClassDevs.argtypes = [ctypes.POINTER(GUID), PCTSTR, HWND, DWORD]
SetupDiGetClassDevs.restype = ValidHandle # HDEVINFO

SetupDiEnumDeviceInterfaces = ctypes.windll.setupapi.SetupDiEnumDeviceInterfaces
SetupDiEnumDeviceInterfaces.argtypes = [HDEVINFO, PSP_DEVINFO_DATA, ctypes.POINTER(GUID), DWORD, PSP_DEVICE_INTERFACE_DATA]
SetupDiEnumDeviceInterfaces.restype = BOOL

SetupDiGetDeviceInterfaceDetail = ctypes.windll.setupapi.SetupDiGetDeviceInterfaceDetailA
SetupDiGetDeviceInterfaceDetail.argtypes = [HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA, DWORD, PDWORD, PSP_DEVINFO_DATA]
SetupDiGetDeviceInterfaceDetail.restype = BOOL

SetupDiGetDeviceRegistryProperty = ctypes.windll.setupapi.SetupDiGetDeviceRegistryPropertyA
SetupDiGetDeviceRegistryProperty.argtypes = [HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD]
SetupDiGetDeviceRegistryProperty.restype = BOOL


GUID_CLASS_COMPORT = GUID(0x86e0d1e0L, 0x8089, 0x11d0,
    (ctypes.c_ubyte*8)(0x9c, 0xe4, 0x08, 0x00, 0x3e, 0x30, 0x1f, 0x73))

DIGCF_PRESENT = 2
DIGCF_DEVICEINTERFACE = 16
INVALID_HANDLE_VALUE = 0
ERROR_INSUFFICIENT_BUFFER = 122
SPDRP_HARDWAREID = 1
SPDRP_FRIENDLYNAME = 12
SPDRP_LOCATION_INFORMATION = 13
ERROR_NO_MORE_ITEMS = 259

def comports(available_only=True):
    """This generator scans the device registry for com ports and yields
    (order, port, desc, hwid).  If available_only is true only return currently
    existing ports. Order is a helper to get sorted lists. it can be ignored
    otherwise."""
    flags = DIGCF_DEVICEINTERFACE
    if available_only:
        flags |= DIGCF_PRESENT
    g_hdi = SetupDiGetClassDevs(ctypes.byref(GUID_CLASS_COMPORT), None, NULL, flags);
    #~ for i in range(256):
    for dwIndex in range(256):
        did = SP_DEVICE_INTERFACE_DATA()
        did.cbSize = ctypes.sizeof(did)

        if not SetupDiEnumDeviceInterfaces(
            g_hdi,
            None,
            ctypes.byref(GUID_CLASS_COMPORT),
            dwIndex,
            ctypes.byref(did)
        ):
            if ctypes.GetLastError() != ERROR_NO_MORE_ITEMS:
                raise ctypes.WinError()
            break

        dwNeeded = DWORD()
        # get the size
        if not SetupDiGetDeviceInterfaceDetail(
            g_hdi,
            ctypes.byref(did),
            None, 0, ctypes.byref(dwNeeded),
            None
        ):
            # Ignore ERROR_INSUFFICIENT_BUFFER
            if ctypes.GetLastError() != ERROR_INSUFFICIENT_BUFFER:
                raise ctypes.WinError()
        # allocate buffer
        class SP_DEVICE_INTERFACE_DETAIL_DATA_A(ctypes.Structure):
            _fields_ = [
                ('cbSize', DWORD),
                ('DevicePath', CHAR*(dwNeeded.value - ctypes.sizeof(DWORD))),
            ]
            def __str__(self):
                return "DevicePath:%s" % (self.DevicePath,)
        idd = SP_DEVICE_INTERFACE_DETAIL_DATA_A()
        idd.cbSize = SIZEOF_SP_DEVICE_INTERFACE_DETAIL_DATA_A
        devinfo = SP_DEVINFO_DATA()
        devinfo.cbSize = ctypes.sizeof(devinfo)
        if not SetupDiGetDeviceInterfaceDetail(
            g_hdi,
            ctypes.byref(did),
            ctypes.byref(idd), dwNeeded, None,
            ctypes.byref(devinfo)
        ):
            raise ctypes.WinError()

        # hardware ID
        szHardwareID = ctypes.create_string_buffer(250)
        if not SetupDiGetDeviceRegistryProperty(
            g_hdi,
            ctypes.byref(devinfo),
            SPDRP_HARDWAREID,
            None,
            ctypes.byref(szHardwareID), ctypes.sizeof(szHardwareID) - 1,
            None
        ):
            # Ignore ERROR_INSUFFICIENT_BUFFER
            if ctypes.GetLastError() != ERROR_INSUFFICIENT_BUFFER:
                raise ctypes.WinError()

        # friendly name
        szFriendlyName = ctypes.create_string_buffer(1024)
        if not SetupDiGetDeviceRegistryProperty(
            g_hdi,
            ctypes.byref(devinfo),
            SPDRP_FRIENDLYNAME,
            None,
            ctypes.byref(szFriendlyName), ctypes.sizeof(szFriendlyName) - 1,
            None
        ):
            # Ignore ERROR_INSUFFICIENT_BUFFER
            if ctypes.GetLastError() != ERROR_INSUFFICIENT_BUFFER:
                #~ raise ctypes.WinError()
                # not getting friendly name for com0com devices, try something else
                szFriendlyName = ctypes.create_string_buffer(1024)
                if SetupDiGetDeviceRegistryProperty(
                    g_hdi,
                    ctypes.byref(devinfo),
                    SPDRP_LOCATION_INFORMATION,
                    None,
                    ctypes.byref(szFriendlyName), ctypes.sizeof(szFriendlyName) - 1,
                    None
                ):
                    port_name = "\\\\.\\" + szFriendlyName.value
                    order = None
                else:
                    port_name = szFriendlyName.value
                    order = None
        else:
            try:
                m = re.search(r"\((.*?(\d+))\)", szFriendlyName.value)
                #~ print szFriendlyName.value, m.groups()
                port_name = m.group(1)
                order = int(m.group(2))
            except AttributeError, msg:
                port_name = szFriendlyName.value
                order = None
        yield order, port_name, szFriendlyName.value, szHardwareID.value

    SetupDiDestroyDeviceInfoList(g_hdi)


if __name__ == '__main__':
    import serial
    print "-"*78
    print "Serial ports"
    print "-"*78
    for order, port, desc, hwid in sorted(comports()):
        print "%-10s: %s (%s) ->" % (port, desc, hwid),
        try:
            serial.Serial(port) # test open
        except serial.serialutil.SerialException:
            print "can't be openend"
        else:
            print "Ready"
    print
    # list of all ports the system knows
    print "-"*78
    print "All serial ports (registry)"
    print "-"*78
    for order, port, desc, hwid in sorted(comports(False)):
        print "%-10s: %s (%s)" % (port, desc, hwid)


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/setup-miniterm-py2exe.py
================================================
# setup script for py2exe to create the miniterm.exe
# $Id: setup-miniterm-py2exe.py,v 1.1 2005-09-21 19:51:19 cliechti Exp $

from distutils.core import setup
import glob, sys, py2exe, os

sys.path.append('..')

sys.argv.extend("py2exe --bundle 1".split())

import serial.tools.miniterm

setup(
    name = 'miniterm',
    zipfile = None,
    options = {"py2exe":
        {
            'dist_dir': 'bin',
            'excludes': ['serialjava', 'serialposix', 'serialcli'],
            'compressed': 1,
        }
    },
    console = [
        #~ "miniterm.py",
        serial.tools.miniterm.__file__
    ],
)


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/setup-rfc2217_server-py2exe.py
================================================
# setup script for py2exe to create the miniterm.exe
# $Id: setup-rfc2217_server-py2exe.py 320 2009-08-07 18:22:49Z cliechti $

from distutils.core import setup
import glob, sys, py2exe, os

sys.path.append('..')

sys.argv.extend("py2exe --bundle 1".split())

setup(
    name='rfc2217_server',
    zipfile=None,
    options = {"py2exe":
        {
            'dist_dir': 'bin',
            'excludes': ['javax.comm'],
            'compressed': 1,
        }
    },
    console = [
        "rfc2217_server.py",
    ],
)


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/setup-wxTerminal-py2exe.py
================================================
# This is a setup.py example script for the use with py2exe
from distutils.core import setup
import py2exe
import sys, os

#this script is only useful for py2exe so just run that distutils command.
#that allows to run it with a simple double click.
sys.argv.append('py2exe')

#get an icon from somewhere.. the python installation should have one:
icon = os.path.join(os.path.dirname(sys.executable), 'py.ico')

setup(
    options = {'py2exe': {
        'excludes': ['javax.comm'],
        'optimize': 2,
        'dist_dir': 'dist',
        }
    },

    name = "wxTerminal",
    windows = [
        {
            'script': "wxTerminal.py",
            'icon_resources': [(0x0004, icon)]
        },
    ],
    zipfile = "stuff.lib",

    description = "Simple serial terminal application",
    version = "0.1",
    author = "Chris Liechti",
    author_email = "cliechti@gmx.net",
    url = "http://pyserial.sf.net",
)


================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/tcp_serial_redirect.py
================================================
#!/usr/bin/env python

# (C) 2002-2009 Chris Liechti <cliechti@gmx.net>
# redirect data from a TCP/IP connection to a serial port and vice versa
# requires Python 2.2 'cause socket.sendall is used


import sys
import os
import time
import threading
import socket
import codecs
import serial
try:
    True
except NameError:
    True = 1
    False = 0

class Redirector:
    def __init__(self, serial_instance, socket, ser_newline=None, net_newline=None, spy=False):
        self.serial = serial_instance
        self.socket = socket
        self.ser_newline = ser_newline
        self.net_newline = net_newline
        self.spy = spy
        self._write_lock = threading.Lock()

    def shortcut(self):
        """connect the serial port to the TCP port by copying everything
           from one side to the other"""
        self.alive = True
        self.thread_read = threading.Thread(target=self.reader)
        self.thread_read.setDaemon(True)
        self.thread_read.setName('serial->socket')
        self.thread_read.start()
        self.writer()

    def reader(self):
        """loop forever and copy serial->socket"""
        while self.alive:
            try:
                data = self.serial.read(1)              # read one, blocking
                n = self.serial.inWaiting()             # look if there is more
                if n:
                    data = data + self.serial.read(n)   # and get as much as possible
                if data:
                    # the spy shows what's on the serial port, so log it before converting newlines
                    if self.spy:
                        sys.stdout.write(codecs.escape_encode(data)[0])
                        sys.stdout.flush()
                    if self.ser_newline and self.net_newline:
                        # do the newline conversion
                        # XXX fails for CR+LF in input when it is cut in half at the begin or end of the string
                        data = net_newline.join(data.split(ser_newline))
                    # escape outgoing data when needed (Telnet IAC (0xff) character)
                    self._write_lock.acquire()
                    try:
                        self.socket.sendall(data)           # send it over TCP
                    finally:
                        self._write_lock.release()
            except socket.error, msg:
                sys.stderr.write('ERROR: %s\n' % msg)
                # probably got disconnected
                break
        self.alive = False

    def write(self, data):
        """thread safe socket write with no data escaping. used to send telnet stuff"""
        self._write_lock.acquire()
        try:
            self.socket.sendall(data)
        finally:
            self._write_lock.release()

    def writer(self):
        """loop forever and copy socket->serial"""
        while self.alive:
            try:
                data = self.socket.recv(1024)
                if not data:
                    break
                if self.ser_newline and self.net_newline:
                    # do the newline conversion
                    # XXX fails for CR+LF in input when it is cut in half at the begin or end of the string
                    data = ser_newline.join(data.split(net_newline))
                self.serial.write(data)                 # get a bunch of bytes and send them
                # the spy shows what's on the serial port, so log it after converting newlines
                if self.spy:
                    sys.stdout.write(codecs.escape_encode(data)[0])
                    sys.stdout.flush()
            except socket.error, msg:
                sys.stderr.write('ERROR: %s\n' % msg)
                # probably got disconnected
                break
        self.alive = False
        self.thread_read.join()

    def stop(self):
        """Stop copying"""
        if self.alive:
            self.alive = False
            self.thread_read.join()


if __name__ == '__main__':
    import optparse

    parser = optparse.OptionParser(
        usage = "%prog [options] [port [baudrate]]",
        description = "Simple Serial to Network (TCP/IP) redirector.",
        epilog = """\
NOTE: no security measures are implemented. Anyone can remotely connect
to this service over the network.

Only one connection at once is supported. When the connection is terminated
it waits for the next connect.
""")

    parser.add_option("-q", "--quiet",
        dest = "quiet",
        action = "store_true",
        help = "suppress non error messages",
        default = False
    )

    parser.add_option("--spy",
        dest = "spy",
        action = "store_true",
        help = "peek at the communication and print all data to the console",
        default = False
    )

    group = optparse.OptionGroup(parser,
        "Serial Port",
        "Serial port settings"
    )
    parser.add_option_group(group)

    group.add_option("-p", "--port",
        dest = "port",
        help = "port, a number (default 0) or a device name",
        default = None
    )

    group.add_option("-b", "--baud",
        dest = "baudrate",
        action = "store",
        type = 'int',
        help = "set baud rate, default: %default",
        default = 9600
    )

    group.add_option("", "--parity",
        dest = "parity",
        action = "store",
        help = "set parity, one of [N, E, O], default=%default",
        default = 'N'
    )

    group.add_option("--rtscts",
        dest = "rtscts",
        action = "store_true",
        help = "enable RTS/CTS flow control (default off)",
        default = False
    )

    group.add_option("--xonxoff",
        dest = "xonxoff",
        action = "store_true",
        help = "enable software flow control (default off)",
        default = False
    )

    group.add_option("--rts",
        dest = "rts_state",
        action = "store",
        type = 'int',
        help = "set initial RTS line state (possible values: 0, 1)",
        default = None
    )

    group.add_option("--dtr",
        dest = "dtr_state",
        action = "store",
        type = 'int',
        help = "set initial DTR line state (possible values: 0, 1)",
        default = None
    )

    group = optparse.OptionGroup(parser,
        "Network settings",
        "Network configuration."
    )
    parser.add_option_group(group)

    group.add_option("-P", "--localport",
        dest = "local_port",
        action = "store",
        type = 'int',
        help = "local TCP port",
        default = 7777
    )

    group = optparse.OptionGroup(parser,
        "Newline Settings",
        "Convert newlines between network and serial port. Conversion is normally disabled and can be enabled by --convert."
    )
    parser.add_option_group(group)

    group.add_option("-c", "--convert",
        dest = "convert",
        action = "store_true",
        help = "enable newline conversion (default off)",
        default = False
    )

    group.add_option("--net-nl",
        dest = "net_newline",
        action = "store",
        help = "type of newlines that are expected on the network (default: %default)",
        default = "LF"
    )

    group.add_option("--ser-nl",
        dest = "ser_newline",
        action = "store",
        help = "type of newlines that are expected on the serial port (default: %default)",
        default = "CR+LF"
    )

    (options, args) = parser.parse_args()

    # get port and baud rate from command line arguments or the option switches
    port = options.port
    baudrate = options.baudrate
    if args:
        if options.port is not None:
            parser.error("no arguments are allowed, options only when --port is given")
        port = args.pop(0)
        if args:
            try:
                baudrate = int(args[0])
            except ValueError:
                parser.error("baud rate must be a number, not %r" % args[0])
            args.pop(0)
        if args:
            parser.error("too many arguments")
    else:
        if port is None: port = 0

    # check newline modes for network connection
    mode = options.net_newline.upper()
    if mode == 'CR':
        net_newline = '\r'
    elif mode == 'LF':
        net_newline = '\n'
    elif mode == 'CR+LF' or mode == 'CRLF':
        net_newline = '\r\n'
    else:
        parser.error("Invalid value for --net-nl. Valid are 'CR', 'LF' and 'CR+LF'/'CRLF'.")

    # check newline modes for serial connection
    mode = options.ser_newline.upper()
    if mode == 'CR':
        ser_newline = '\r'
    elif mode == 'LF':
        ser_newline = '\n'
    elif mode == 'CR+LF' or mode == 'CRLF':
        ser_newline = '\r\n'
    else:
        parser.error("Invalid value for --ser-nl. Valid are 'CR', 'LF' and 'CR+LF'/'CRLF'.")

    # connect to serial port
    ser = serial.Serial()
    ser.port     = port
    ser.baudrate = baudrate
    ser.parity   = options.parity
    ser.rtscts   = options.rtscts
    ser.xonxoff  = options.xonxoff
    ser.timeout  = 1     # required so that the reader thread can exit

    if not options.quiet:
        sys.stderr.write("--- TCP/IP to Serial redirector --- type Ctrl-C / BREAK to quit\n")
        sys.stderr.write("--- %s %s,%s,%s,%s ---\n" % (ser.portstr, ser.baudrate, 8, ser.parity, 1))

    try:
        ser.open()
    except serial.SerialException, e:
        sys.stderr.write("Could not open serial port %s: %s\n" % (ser.portstr, e))
        sys.exit(1)

    if options.rts_state is not None:
        ser.setRTS(options.rts_state)

    if options.dtr_state is not None:
        ser.setDTR(options.dtr_state)

    srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    srv.bind( ('', options.local_port) )
    srv.listen(1)
    while True:
        try:
            sys.stderr.write("Waiting for connection on %s...\n" % options.local_port)
            connection, addr = srv.accept()
            sys.stderr.write('Connected by %s\n' % (addr,))
            # enter network <-> serial loop
            r = Redirector(
                ser,
                connection,
                options.convert and ser_newline or None,
                options.convert and net_newline or None,
                options.spy,
            )
            r.shortcut()
            if options.spy: sys.stdout.write('\n')
            sys.stderr.write('Disconnected\n')
            connection.close()
        except KeyboardInterrupt:
            break
        except socket.error, msg:
            sys.stderr.write('ERROR: %s\n' % msg)

    sys.stderr.write('\n--- exit ---\n')



================================================
FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/wxSerialConfigDialog.py
================================================
#!/usr/bin/env python
# generated by wxGlade 0.3.1 on Thu Oct 02 23:25:44 2003

#from wxPython.wx import *
import wx
import serial

SHOW_BAUDRATE   = 1<<0
SHOW_FORMAT     = 1<<1
SHOW_FLOW       = 1<<2
SHOW_TIMEOUT    = 1<<3
SHOW_ALL = SHOW_BAUDRATE|SHOW_FORMAT|SHOW_FLOW|SHOW_TIMEOUT

try:
    enumerate
except NameError:
    def enumerate(sequence):
        return zip(range(len(sequence)), sequence)

class SerialConfigDialog(wx.Dialog):
    """Serial Port confiuration dialog, to be used with pyserial 2.0+
       When instantiating a class of this dialog, then the "serial" keyword
       argument is mandatory. It is a reference to a serial.Serial instance.
       the optional "show" keyword argument can be used to show/hide different
       settings. The default is SHOW_ALL which coresponds to 
       SHOW_BAUDRATE|SHOW_FORMAT|SHOW_FLOW|SHOW_TIMEOUT. All constants can be
       found in ths module (not the class)."""
    
    def __init__(self, *args, **kwds):
        #grab the serial keyword and remove it from the dict
        self.serial = kwds['serial']
        del kwds['serial']
        self.show = SHOW_ALL
        if kwds.has_key('show'):
            self.show = kwds['show']
            del kwds['show']
        # begin wxGlade: SerialConfigDialog.__init__
        # end wxGlade
        kwds["style"] = wx.DEFAULT_DIALOG_STYLE
        wx.Dialog.__init__(self, *args, **kwds)
        self.label_2 = wx.StaticText(self, -1, "Port")
        self.combo_box_port = wx.ComboBox(self, -1, choices=["dummy1", "dummy2", "dummy3", "dummy4", "dummy5"], style=wx.CB_DROPDOWN)
        if self.show & SHOW_BAUDRATE:
            self.label_1 = wx.StaticText(self, -1, "Baudrate")
            self.choice_baudrate = wx.Choice(self, -1, choices=["choice 1"])
        if self.show & SHOW_FORMAT:
            self.label_3 = wx.StaticText(self, -1, "Data Bits")
            self.choice_databits = wx.Choice(self, -1, choices=["choice 1"])
            self.label_4 = wx.StaticText(self, -1, "Stop Bits")
            self.choice_stopbits = wx.Choice(self, -1, choices=["choice 1"])
            self.label_5 = wx.StaticText(self, -1, "Parity")
            self.choice_parity = wx.Choice(self, -1, choices=["choice 1"])
        if self.show & SHOW_TIMEOUT:
            self.checkbox_timeout = wx.CheckBox(self, -1, "Use Timeout")
            self.text_ctrl_timeout = wx.TextCtrl(self, -1, "")
            self.label_6 = wx.StaticText(self, -1, "seconds")
        if self.show & SHOW_FLOW:
            self.checkbox_rtscts = wx.CheckBox(self, -1, "RTS/CTS")
            self.checkbox_xonxoff = wx.CheckBox(self, -1, "Xon/Xoff")
        self.button_ok = wx.Button(self, -1, "OK")
        self.button_cancel = wx.Button(self, -1, "Cancel")

        self.__set_properties()
        self.__do_layout()
        #fill in ports and select current setting
        index = 0
        self.combo_box_port.Clear()
        for n in range(4):
            portname = serial.device(n)
            self.combo_box_port.Append(portname)
            if self.serial.portstr == portname:
                index = n
        if self.serial.portstr is not None:
            self.combo_box_port.SetValue(str(self.serial.portstr))
        else:
            self.combo_box_port.SetSelection(index)
        if self.show & SHOW_BAUDRATE:
            #fill in badrates and select current setting
            self.choice_baudrate.Clear()
            for n, baudrate in enumerate(self.serial.BAUDRATES):
                self.choice_baudrate.Append(str(baudrate))
                if self.serial.baudrate == baudrate:
                    index = n
            self.choice_baudrate.SetSelection(index)
        if self.show & SHOW_FORMAT:
            #fill in databits and select current setting
            self.choice_databits.Clear()
            for n, bytesize in enumerate(self.serial.BYTESIZES):
                self.choice_databits.Append(str(bytesize))
                if self.serial.bytesize == bytesize:
                    index = n
            self.choice_databits.SetSelection(index)
            #fill in stopbits and select current setting
            self.choice_stopbits.Clear()
            for n, stopbits in enumerate(self.serial.STOPBITS):
                self.choice_stopbits.Append(str(stopbits))
                if self.serial.stopbits == stopbits:
                    index = n
            self.choice_stopbits.SetSelection(index)
            #fill in parities and select current setting
            self.choice_parity.Clear()
            for n, parity in enumerate(self.serial.PARITIES):
                self.choice_parity.Append(str(serial.PARITY_NAMES[parity]))
                if self.serial.parity == parity:
                    index = n
            self.choice_parity.SetSelection(index)
        if self.show & SHOW_TIMEOUT:
            #set the timeout mode and value
            if self.serial.timeout is None:
                self.checkbox_timeout.SetValue(False
Download .txt
gitextract_t5t89av7/

├── .gitattributes
├── .gitignore
├── BeMicro/
│   ├── README.txt
│   ├── ltcminer.qpf
│   ├── ltcminer.qsf
│   └── ltcminer.sdc
├── DE0-Nano/
│   ├── ltcminer.qpf
│   ├── ltcminer.qsf
│   └── ltcminer.sdc
├── DE2-115-Single/
│   ├── README.txt
│   ├── ltcminer.qpf
│   ├── ltcminer.qsf
│   └── ltcminer.sdc
├── ICARUS-LX150/
│   ├── MiningSoftware/
│   │   ├── README.txt
│   │   ├── ltcminer-testmode.py
│   │   ├── ltcminer.py
│   │   ├── pyserial-2.6/
│   │   │   ├── CHANGES.txt
│   │   │   ├── LICENSE.txt
│   │   │   ├── MANIFEST.in
│   │   │   ├── PKG-INFO
│   │   │   ├── README.txt
│   │   │   ├── documentation/
│   │   │   │   ├── Makefile
│   │   │   │   ├── appendix.rst
│   │   │   │   ├── conf.py
│   │   │   │   ├── examples.rst
│   │   │   │   ├── index.rst
│   │   │   │   ├── pyparallel.rst
│   │   │   │   ├── pyserial.rst
│   │   │   │   ├── pyserial_api.rst
│   │   │   │   └── shortintro.rst
│   │   │   ├── examples/
│   │   │   │   ├── enhancedserial.py
│   │   │   │   ├── port_publisher.py
│   │   │   │   ├── port_publisher.sh
│   │   │   │   ├── rfc2217_server.py
│   │   │   │   ├── scan.py
│   │   │   │   ├── scanlinux.py
│   │   │   │   ├── scanwin32.py
│   │   │   │   ├── setup-miniterm-py2exe.py
│   │   │   │   ├── setup-rfc2217_server-py2exe.py
│   │   │   │   ├── setup-wxTerminal-py2exe.py
│   │   │   │   ├── tcp_serial_redirect.py
│   │   │   │   ├── wxSerialConfigDialog.py
│   │   │   │   ├── wxSerialConfigDialog.wxg
│   │   │   │   ├── wxTerminal.py
│   │   │   │   └── wxTerminal.wxg
│   │   │   ├── serial/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── rfc2217.py
│   │   │   │   ├── serialcli.py
│   │   │   │   ├── serialjava.py
│   │   │   │   ├── serialposix.py
│   │   │   │   ├── serialutil.py
│   │   │   │   ├── serialwin32.py
│   │   │   │   ├── sermsdos.py
│   │   │   │   ├── tools/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── list_ports.py
│   │   │   │   │   ├── list_ports_posix.py
│   │   │   │   │   ├── list_ports_windows.py
│   │   │   │   │   └── miniterm.py
│   │   │   │   ├── urlhandler/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── protocol_hwgrep.py
│   │   │   │   │   ├── protocol_loop.py
│   │   │   │   │   ├── protocol_rfc2217.py
│   │   │   │   │   └── protocol_socket.py
│   │   │   │   └── win32.py
│   │   │   ├── setup.py
│   │   │   └── test/
│   │   │       ├── run_all_tests.py
│   │   │       ├── test.py
│   │   │       ├── test_advanced.py
│   │   │       ├── test_high_load.py
│   │   │       ├── test_iolib.py
│   │   │       ├── test_readline.py
│   │   │       └── test_url.py
│   │   └── python-jsonrpc/
│   │       ├── jsonrpc/
│   │       │   ├── __init__.py
│   │       │   ├── _tests/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── test_cgiwrapper.py
│   │       │   │   ├── test_json.py
│   │       │   │   ├── test_modpywrapper.py
│   │       │   │   ├── test_proxy.py
│   │       │   │   └── test_serviceHandler.py
│   │       │   ├── cgiwrapper.py
│   │       │   ├── json.py
│   │       │   ├── modpywrapper.py
│   │       │   ├── proxy.py
│   │       │   └── serviceHandler.py
│   │       ├── run-tests.py
│   │       └── setup.py
│   ├── README.txt
│   ├── dyn_pll_ctrl.v
│   ├── hub_core.v
│   ├── ltcminer_icarus.ucf
│   ├── ltcminer_icarus.v
│   ├── pbkdfengine.v
│   ├── pwm_fade.v
│   ├── salsa_slowsixteen.v
│   ├── salsaengine.v
│   ├── serial.v
│   ├── serial_hub.v
│   ├── test_icarus.v
│   ├── uart_receiver.v
│   ├── uart_transmitter.v
│   ├── xilinx_dyn_pll.v
│   ├── xilinx_pll.v
│   └── xilinx_ram.v
├── LICENSE.txt
├── README.txt
├── bitstreams.txt
├── experimental/
│   ├── CM1/
│   │   ├── README.txt
│   │   ├── dcm_controller.v
│   │   ├── flasher.v
│   │   ├── hashvoodoo.ucf
│   │   ├── hashvoodoo.v
│   │   ├── hashvoodoo_test.v
│   │   ├── hub_core.v
│   │   ├── main_dcm.v
│   │   ├── pbkdfengine.v
│   │   ├── pwm_fade.v
│   │   ├── salsa_slowsixteen.v
│   │   ├── salsaengine.v
│   │   ├── serial_core.v
│   │   ├── sha-256-functions.v
│   │   ├── sha256_transform.v
│   │   ├── uart.v
│   │   ├── uart_baudgenerator.v
│   │   ├── uart_rx.v
│   │   ├── uart_tx.v
│   │   └── xilinx_ram.v
│   ├── DE2-115-SLOWSIXTEEN/
│   │   ├── README.txt
│   │   ├── altera_pll.v
│   │   ├── altera_virtual_wire.v
│   │   ├── ltcminer.qpf
│   │   ├── ltcminer.qsf
│   │   ├── ltcminer.sdc
│   │   ├── ltcminer.v
│   │   ├── pbkdfengine.v
│   │   ├── salsa_slowsixteen.v
│   │   ├── salsaengine.v
│   │   ├── sha-256-functions.v
│   │   ├── sha256_transform.v
│   │   ├── sim_ram.v
│   │   └── test_ltcminer.v
│   ├── LX150-EIGHT-A/
│   │   ├── README.txt
│   │   ├── ltcminer_icarus.ucf
│   │   ├── ltcminer_icarus.v
│   │   ├── pbkdfengine.v
│   │   ├── salsa_piped.v
│   │   ├── salsaengine.v
│   │   ├── sgen.c
│   │   ├── sgen.inc
│   │   ├── test_icarus.v
│   │   └── xilinx_dpram.v
│   ├── LX150-EIGHT-B/
│   │   ├── README.txt
│   │   ├── dyn_pll_ctrl.v
│   │   ├── ltcminer-dynclock.py
│   │   ├── ltcminer-test-dynclock.py
│   │   ├── ltcminer_icarus.ucf
│   │   ├── ltcminer_icarus.v
│   │   ├── pbkdfengine.v
│   │   ├── salsa_piped.v
│   │   ├── salsaengine.v
│   │   ├── sgen.c
│   │   ├── sgen.inc
│   │   ├── test_icarus.v
│   │   ├── xilinx_dpram.v
│   │   └── xilinx_dyn_pll.v
│   ├── LX150-EIGHT-C/
│   │   ├── README.txt
│   │   ├── dyn_pll_ctrl.v
│   │   ├── ltcminer_icarus.ucf
│   │   ├── ltcminer_icarus.v
│   │   ├── pbkdfengine.v
│   │   ├── salsa_piped.v
│   │   ├── salsaengine.v
│   │   ├── sgen.c
│   │   ├── sgen.inc
│   │   ├── test_icarus.v
│   │   ├── xilinx_dpram.v
│   │   └── xilinx_dyn_pll.v
│   ├── LX150-SIXTYFOUR-A/
│   │   ├── dyn_pll_ctrl.v
│   │   ├── ltcminer_icarus.ucf
│   │   ├── ltcminer_icarus.v
│   │   ├── pbkdfengine.v
│   │   ├── salsa_piped.v
│   │   ├── salsaengine.v
│   │   ├── sgen.c
│   │   ├── sgen.inc
│   │   ├── test_icarus.v
│   │   ├── xilinx_dpram.v
│   │   └── xilinx_dyn_pll.v
│   ├── LX150-SLOWEIGHT-A/
│   │   ├── dyn_pll_ctrl.v
│   │   ├── ltcminer_icarus.ucf
│   │   ├── ltcminer_icarus.v
│   │   ├── pbkdfengine.v
│   │   ├── salsa_sloweight.v
│   │   ├── salsaengine.v
│   │   ├── test_icarus.v
│   │   ├── xilinx_dpram.v
│   │   └── xilinx_dyn_pll.v
│   ├── LX150-SLOWSIXTEEN-A/
│   │   ├── dyn_pll_ctrl.v
│   │   ├── ltcminer_icarus.ucf
│   │   ├── ltcminer_icarus.v
│   │   ├── pbkdfengine.v
│   │   ├── salsa_slowsixteen.v
│   │   ├── salsaengine.v
│   │   ├── test_icarus.v
│   │   ├── xilinx_dpram.v
│   │   └── xilinx_dyn_pll.v
│   ├── LX150-SPLIT/
│   │   ├── README.txt
│   │   ├── ltcminer_icarus.ucf
│   │   ├── ltcminer_icarus.v
│   │   ├── pbkdfengine.v
│   │   └── salsaengine.v
│   ├── README.txt
│   ├── ZTEX/
│   │   ├── README.txt
│   │   ├── ztex_ufm1_15.ucf
│   │   └── ztex_ufm1_15b1_litecoin.v
│   ├── Ztex-1-15y/
│   │   ├── README.txt
│   │   ├── cgminer-3.1.1/
│   │   │   ├── README.txt
│   │   │   ├── cgminer.c
│   │   │   ├── driver-icarus.c
│   │   │   ├── driver-ztex.c
│   │   │   ├── libztex.c
│   │   │   ├── libztex.h
│   │   │   └── miner.h
│   │   ├── pbkdfengine.v
│   │   ├── salsa_slowsixteen.v
│   │   ├── salsaengine.v
│   │   ├── sha-256-functions.v
│   │   ├── sha256_transform.v
│   │   ├── test_miner.v
│   │   ├── xilinx_ram.v
│   │   ├── ztex_ufm1_15y.ucf
│   │   └── ztex_ufm1_15y1.v
│   ├── hashvariant-A.v
│   ├── hashvariant-B.v
│   ├── hashvariant-C.v
│   └── salsa-B.v
├── scripts/
│   ├── config.example.tcl
│   ├── json_rpc.tcl
│   ├── jtag_comm.tcl
│   ├── mine.bat
│   ├── mine.sh
│   ├── mine.tcl
│   ├── program-fpga-board.bat
│   ├── program-fpga-board.tcl
│   ├── test_data.txt
│   ├── test_data_cut.txt
│   ├── test_data_full.txt
│   └── utils.tcl
└── source/
    ├── altera_pll.v
    ├── altera_ram.v
    ├── altera_virtual_wire.v
    ├── hashcore.v
    ├── ltcminer.v
    ├── salsa.v
    ├── sha-256-functions.v
    ├── sha256_transform.v
    └── test_ltcminer.v
Download .txt
SYMBOL INDEX (1265 symbols across 55 files)

FILE: ICARUS-LX150/MiningSoftware/ltcminer-testmode.py
  function stats (line 28) | def stats(count, starttime):
  class Reader (line 50) | class Reader(Thread):
    method __init__ (line 51) | def __init__(self):
    method run (line 59) | def run(self):
  class Writer (line 71) | class Writer(Thread):
    method __init__ (line 72) | def __init__(self,dynclock_hex):
    method run (line 91) | def run(self):
  class Submitter (line 169) | class Submitter(Thread):
    method __init__ (line 170) | def __init__(self, block, nonce):
    method run (line 176) | def run(self):
  class Display_stats (line 204) | class Display_stats(Thread):
    method __init__ (line 205) | def __init__(self):
    method run (line 214) | def run(self):

FILE: ICARUS-LX150/MiningSoftware/ltcminer.py
  function stats (line 44) | def stats(count, starttime):
  class Reader (line 66) | class Reader(Thread):
    method __init__ (line 67) | def __init__(self):
    method run (line 75) | def run(self):
  class Writer (line 87) | class Writer(Thread):
    method __init__ (line 88) | def __init__(self,dynclock_hex):
    method run (line 101) | def run(self):
  class Submitter (line 151) | class Submitter(Thread):
    method __init__ (line 152) | def __init__(self, block, nonce):
    method run (line 158) | def run(self):
  class Display_stats (line 179) | class Display_stats(Thread):
    method __init__ (line 180) | def __init__(self):
    method run (line 189) | def run(self):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/enhancedserial.py
  class EnhancedSerial (line 16) | class EnhancedSerial(Serial):
    method __init__ (line 17) | def __init__(self, *args, **kwargs):
    method readline (line 25) | def readline(self, maxsize=None, timeout=1):
    method readlines (line 40) | def readlines(self, sizehint=None, timeout=1):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/port_publisher.py
  class ZeroconfService (line 23) | class ZeroconfService:
    method __init__ (line 28) | def __init__(self, name, port, stype="_http._tcp",
    method publish (line 38) | def publish(self):
    method unpublish (line 63) | def unpublish(self):
    method __str__ (line 68) | def __str__(self):
  class Forwarder (line 73) | class Forwarder(ZeroconfService):
    method __init__ (line 82) | def __init__(self, device, name, network_port, on_close=None):
    method __del__ (line 96) | def __del__(self):
    method open (line 102) | def open(self):
    method close (line 142) | def close(self):
    method write (line 158) | def write(self, data):
    method update_select_maps (line 163) | def update_select_maps(self, read_map, write_map, error_map):
    method handle_serial_read (line 191) | def handle_serial_read(self):
    method handle_serial_write (line 207) | def handle_serial_write(self):
    method handle_serial_error (line 217) | def handle_serial_error(self, error=None):
    method handle_socket_read (line 222) | def handle_socket_read(self):
    method handle_socket_write (line 239) | def handle_socket_write(self):
    method handle_socket_error (line 249) | def handle_socket_error(self):
    method handle_connect (line 253) | def handle_connect(self):
    method handle_server_error (line 273) | def handle_server_error(self):
    method handle_disconnect (line 277) | def handle_disconnect(self):
  function test (line 298) | def test():
  class WriteFlushed (line 336) | class WriteFlushed:
    method __init__ (line 337) | def __init__(self, fileobj):
    method write (line 339) | def write(self, s):
    method close (line 342) | def close(self):
  class WriteToSysLog (line 384) | class WriteToSysLog:
    method __init__ (line 385) | def __init__(self):
    method write (line 387) | def write(self, s):
    method flush (line 392) | def flush(self):
    method close (line 395) | def close(self):
  function unpublish (line 412) | def unpublish(forwarder):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/rfc2217_server.py
  class Redirector (line 17) | class Redirector:
    method __init__ (line 18) | def __init__(self, serial_instance, socket, debug=None):
    method statusline_poller (line 29) | def statusline_poller(self):
    method shortcut (line 36) | def shortcut(self):
    method reader (line 50) | def reader(self):
    method write (line 74) | def write(self, data):
    method writer (line 82) | def writer(self):
    method stop (line 96) | def stop(self):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/scan.py
  function scan (line 15) | def scan():

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/scanlinux.py
  function scan (line 13) | def scan():

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/scanwin32.py
  function ValidHandle (line 4) | def ValidHandle(value):
  class GUID (line 22) | class GUID(ctypes.Structure):
    method __str__ (line 29) | def __str__(self):
  class SP_DEVINFO_DATA (line 38) | class SP_DEVINFO_DATA(ctypes.Structure):
    method __str__ (line 45) | def __str__(self):
  class SP_DEVICE_INTERFACE_DATA (line 49) | class SP_DEVICE_INTERFACE_DATA(ctypes.Structure):
    method __str__ (line 56) | def __str__(self):
  class dummy (line 63) | class dummy(ctypes.Structure):
  function comports (line 101) | def comports(available_only=True):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/tcp_serial_redirect.py
  class Redirector (line 21) | class Redirector:
    method __init__ (line 22) | def __init__(self, serial_instance, socket, ser_newline=None, net_newl...
    method shortcut (line 30) | def shortcut(self):
    method reader (line 40) | def reader(self):
    method write (line 69) | def write(self, data):
    method writer (line 77) | def writer(self):
    method stop (line 100) | def stop(self):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/wxSerialConfigDialog.py
  function enumerate (line 17) | def enumerate(sequence):
  class SerialConfigDialog (line 20) | class SerialConfigDialog(wx.Dialog):
    method __init__ (line 29) | def __init__(self, *args, **kwds):
    method __set_properties (line 124) | def __set_properties(self):
    method __do_layout (line 132) | def __do_layout(self):
    method __attach_events (line 184) | def __attach_events(self):
    method OnOK (line 190) | def OnOK(self, events):
    method OnCancel (line 217) | def OnCancel(self, events):
    method OnTimeout (line 220) | def OnTimeout(self, events):
  class MyApp (line 229) | class MyApp(wx.App):
    method OnInit (line 231) | def OnInit(self):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/wxTerminal.py
  class SerialRxEvent (line 20) | class SerialRxEvent(wx.PyCommandEvent):
    method __init__ (line 22) | def __init__(self, windowID, data):
    method Clone (line 26) | def Clone(self):
  class TerminalSetup (line 41) | class TerminalSetup:
    method __init__ (line 44) | def __init__(self):
  class TerminalSettingsDialog (line 49) | class TerminalSettingsDialog(wx.Dialog):
    method __init__ (line 52) | def __init__(self, *args, **kwds):
    method __set_properties (line 72) | def __set_properties(self):
    method __do_layout (line 79) | def __do_layout(self):
    method __attach_events (line 98) | def __attach_events(self):
    method OnOK (line 102) | def OnOK(self, events):
    method OnCancel (line 109) | def OnCancel(self, events):
  class TerminalFrame (line 116) | class TerminalFrame(wx.Frame):
    method __init__ (line 119) | def __init__(self, *args, **kwds):
    method StartThread (line 152) | def StartThread(self):
    method StopThread (line 159) | def StopThread(self):
    method __set_properties (line 166) | def __set_properties(self):
    method __do_layout (line 172) | def __do_layout(self):
    method __attach_events (line 181) | def __attach_events(self):
    method OnExit (line 192) | def OnExit(self, event):
    method OnClose (line 196) | def OnClose(self, event):
    method OnSaveAs (line 202) | def OnSaveAs(self, event):
    method OnClear (line 218) | def OnClear(self, event):
    method OnPortSettings (line 222) | def OnPortSettings(self, event=None):
    method OnTermSettings (line 262) | def OnTermSettings(self, event):
    method OnKey (line 269) | def OnKey(self, event):
    method OnSerialRead (line 291) | def OnSerialRead(self, event):
    method ComPortThread (line 298) | def ComPortThread(self):
  class MyApp (line 321) | class MyApp(wx.App):
    method OnInit (line 322) | def OnInit(self):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/__init__.py
  function serial_for_url (line 32) | def serial_for_url(url, *args, **kwargs):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/rfc2217.py
  class TelnetOption (line 225) | class TelnetOption(object):
    method __init__ (line 228) | def __init__(self, connection, name, option, send_yes, send_no, ack_ye...
    method __repr__ (line 250) | def __repr__(self):
    method process_incoming (line 254) | def process_incoming(self, command):
  class TelnetSubnegotiation (line 291) | class TelnetSubnegotiation(object):
    method __init__ (line 295) | def __init__(self, connection, name, option, ack_option=None):
    method __repr__ (line 304) | def __repr__(self):
    method set (line 308) | def set(self, value):
    method isReady (line 318) | def isReady(self):
    method wait (line 327) | def wait(self, timeout=3):
    method checkAnswer (line 339) | def checkAnswer(self, suboption):
  class RFC2217Serial (line 351) | class RFC2217Serial(SerialBase):
    method open (line 357) | def open(self):
    method _reconfigurePort (line 449) | def _reconfigurePort(self):
    method close (line 493) | def close(self):
    method makeDeviceName (line 510) | def makeDeviceName(self, port):
    method fromURL (line 513) | def fromURL(self, url):
    method inWaiting (line 550) | def inWaiting(self):
    method read (line 555) | def read(self, size=1):
    method write (line 570) | def write(self, data):
    method flushInput (line 585) | def flushInput(self):
    method flushOutput (line 593) | def flushOutput(self):
    method sendBreak (line 599) | def sendBreak(self, duration=0.25):
    method setBreak (line 607) | def setBreak(self, level=True):
    method setRTS (line 618) | def setRTS(self, level=True):
    method setDTR (line 628) | def setDTR(self, level=True):
    method getCTS (line 638) | def getCTS(self):
    method getDSR (line 643) | def getDSR(self):
    method getRI (line 648) | def getRI(self):
    method getCD (line 653) | def getCD(self):
    method _telnetReadLoop (line 663) | def _telnetReadLoop(self):
    method _telnetProcessCommand (line 729) | def _telnetProcessCommand(self, command):
    method _telnetNegotiateOption (line 735) | def _telnetNegotiateOption(self, command, option):
    method _telnetProcessSubnegotiation (line 755) | def _telnetProcessSubnegotiation(self, suboption):
    method _internal_raw_write (line 787) | def _internal_raw_write(self, data):
    method telnetSendOption (line 795) | def telnetSendOption(self, action, option):
    method rfc2217SendSubnegotiation (line 799) | def rfc2217SendSubnegotiation(self, option, value=''):
    method rfc2217SendPurge (line 804) | def rfc2217SendPurge(self, value):
    method rfc2217SetControl (line 809) | def rfc2217SetControl(self, value):
    method rfc2217FlowServerReady (line 820) | def rfc2217FlowServerReady(self):
    method getModemState (line 826) | def getModemState(self):
  class Serial (line 866) | class Serial(RFC2217Serial, FileLike):
  class Serial (line 870) | class Serial(RFC2217Serial, io.RawIOBase):
  class PortManager (line 877) | class PortManager(object):
    method __init__ (line 882) | def __init__(self, serial_port, connection, logger=None):
    method _client_ok (line 917) | def _client_ok(self):
    method telnetSendOption (line 935) | def telnetSendOption(self, action, option):
    method rfc2217SendSubnegotiation (line 939) | def rfc2217SendSubnegotiation(self, option, value=''):
    method check_modem_lines (line 947) | def check_modem_lines(self, force_notification=False):
    method escape (line 981) | def escape(self, data):
    method filter (line 997) | def filter(self, data):
    method _telnetProcessCommand (line 1055) | def _telnetProcessCommand(self, command):
    method _telnetNegotiateOption (line 1061) | def _telnetNegotiateOption(self, command, option):
    method _telnetProcessSubnegotiation (line 1081) | def _telnetProcessSubnegotiation(self, suboption):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/serialcli.py
  function device (line 15) | def device(portnum):
  function as_byte_array (line 23) | def as_byte_array(string):
  class IronSerial (line 26) | class IronSerial(SerialBase):
    method open (line 32) | def open(self):
    method _reconfigurePort (line 54) | def _reconfigurePort(self):
    method close (line 127) | def close(self):
    method makeDeviceName (line 139) | def makeDeviceName(self, port):
    method inWaiting (line 147) | def inWaiting(self):
    method read (line 152) | def read(self, size=1):
    method write (line 169) | def write(self, data):
    method flushInput (line 182) | def flushInput(self):
    method flushOutput (line 187) | def flushOutput(self):
    method sendBreak (line 193) | def sendBreak(self, duration=0.25):
    method setBreak (line 201) | def setBreak(self, level=True):
    method setRTS (line 206) | def setRTS(self, level=True):
    method setDTR (line 211) | def setDTR(self, level=True):
    method getCTS (line 216) | def getCTS(self):
    method getDSR (line 221) | def getDSR(self):
    method getRI (line 226) | def getRI(self):
    method getCD (line 232) | def getCD(self):
  class Serial (line 248) | class Serial(IronSerial, FileLike):
  class Serial (line 252) | class Serial(IronSerial, io.RawIOBase):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/serialjava.py
  function my_import (line 12) | def my_import(name):
  function detect_java_comm (line 20) | def detect_java_comm(names):
  function device (line 41) | def device(portnumber):
  class JavaSerial (line 52) | class JavaSerial(SerialBase):
    method open (line 56) | def open(self):
    method _reconfigurePort (line 77) | def _reconfigurePort(self):
    method close (line 132) | def close(self):
    method makeDeviceName (line 142) | def makeDeviceName(self, port):
    method inWaiting (line 147) | def inWaiting(self):
    method read (line 152) | def read(self, size=1):
    method write (line 168) | def write(self, data):
    method flushInput (line 176) | def flushInput(self):
    method flushOutput (line 181) | def flushOutput(self):
    method sendBreak (line 187) | def sendBreak(self, duration=0.25):
    method setBreak (line 192) | def setBreak(self, level=1):
    method setRTS (line 197) | def setRTS(self, level=1):
    method setDTR (line 202) | def setDTR(self, level=1):
    method getCTS (line 207) | def getCTS(self):
    method getDSR (line 212) | def getDSR(self):
    method getRI (line 217) | def getRI(self):
    method getCD (line 222) | def getCD(self):
  class Serial (line 235) | class Serial(JavaSerial, FileLike):
  class Serial (line 239) | class Serial(JavaSerial, io.RawIOBase):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/serialposix.py
  function device (line 36) | def device(port):
  function set_special_baudrate (line 42) | def set_special_baudrate(port, baudrate):
  function device (line 98) | def device(port):
  function set_special_baudrate (line 101) | def set_special_baudrate(port, baudrate):
  function device (line 108) | def device(port):
  function set_special_baudrate (line 111) | def set_special_baudrate(port, baudrate):
  function device (line 120) | def device(port):
  function set_special_baudrate (line 123) | def set_special_baudrate(port, baudrate):
  function set_special_baudrate (line 133) | def set_special_baudrate(port, baudrate):
  function set_special_baudrate (line 140) | def set_special_baudrate(port, baudrate):
  function device (line 143) | def device(port):
  function device (line 151) | def device(port):
  function set_special_baudrate (line 154) | def set_special_baudrate(port, baudrate):
  function device (line 161) | def device(port):
  function set_special_baudrate (line 164) | def set_special_baudrate(port, baudrate):
  function device (line 171) | def device(port):
  function set_special_baudrate (line 174) | def set_special_baudrate(port, baudrate):
  function device (line 181) | def device(port):
  function set_special_baudrate (line 184) | def set_special_baudrate(port, baudrate):
  function device (line 191) | def device(port):
  function set_special_baudrate (line 194) | def set_special_baudrate(port, baudrate):
  function device (line 218) | def device(portum):
  function set_special_baudrate (line 220) | def set_special_baudrate(port, baudrate):
  class PosixSerial (line 260) | class PosixSerial(SerialBase):
    method open (line 265) | def open(self):
    method _reconfigurePort (line 297) | def _reconfigurePort(self):
    method close (line 419) | def close(self):
    method makeDeviceName (line 427) | def makeDeviceName(self, port):
    method inWaiting (line 432) | def inWaiting(self):
    method read (line 439) | def read(self, size=1):
    method write (line 464) | def write(self, data):
    method flush (line 492) | def flush(self):
    method flushInput (line 497) | def flushInput(self):
    method flushOutput (line 502) | def flushOutput(self):
    method sendBreak (line 508) | def sendBreak(self, duration=0.25):
    method setBreak (line 513) | def setBreak(self, level=1):
    method setRTS (line 521) | def setRTS(self, level=1):
    method setDTR (line 529) | def setDTR(self, level=1):
    method getCTS (line 537) | def getCTS(self):
    method getDSR (line 543) | def getDSR(self):
    method getRI (line 549) | def getRI(self):
    method getCD (line 555) | def getCD(self):
    method drainOutput (line 563) | def drainOutput(self):
    method nonblocking (line 568) | def nonblocking(self):
    method fileno (line 573) | def fileno(self):
    method flowControl (line 579) | def flowControl(self, enable):
  class Serial (line 596) | class Serial(PosixSerial, FileLike):
  class Serial (line 600) | class Serial(PosixSerial, io.RawIOBase):
  class PosixPollSerial (line 603) | class PosixPollSerial(Serial):
    method read (line 608) | def read(self, size=1):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/serialutil.py
  class bytearray (line 19) | class bytearray(list):
    method __str__ (line 21) | def __str__(self): return ''.join(self)
    method __repr__ (line 22) | def __repr__(self): return 'bytearray(%r)' % ''.join(self)
    method append (line 24) | def append(self, item):
    method __iadd__ (line 30) | def __iadd__(self, other):
    method __getslice__ (line 35) | def __getslice__(self, i, j):
    method __getitem__ (line 38) | def __getitem__(self, item):
    method __eq__ (line 44) | def __eq__(self, other):
  function to_bytes (line 51) | def to_bytes(seq):
  class SerialException (line 79) | class SerialException(IOError):
  class SerialTimeoutException (line 83) | class SerialTimeoutException(SerialException):
  class FileLike (line 91) | class FileLike(object):
    method __init__ (line 105) | def __init__(self):
    method close (line 108) | def close(self):
    method __del__ (line 112) | def __del__(self):
    method writelines (line 124) | def writelines(self, sequence):
    method flush (line 128) | def flush(self):
    method next (line 133) | def next(self):
    method __iter__ (line 138) | def __iter__(self):
    method readline (line 141) | def readline(self, size=None, eol=LF):
    method readlines (line 158) | def readlines(self, sizehint=None, eol=LF):
    method xreadlines (line 175) | def xreadlines(self, sizehint=None):
    method seek (line 187) | def seek(self, pos, whence=0):
    method tell (line 190) | def tell(self):
    method truncate (line 193) | def truncate(self, n=None):
    method isatty (line 196) | def isatty(self):
  class SerialBase (line 200) | class SerialBase(object):
    method __init__ (line 213) | def __init__(self,
    method isOpen (line 263) | def isOpen(self):
    method getSupportedBaudrates (line 272) | def getSupportedBaudrates(self):
    method getSupportedByteSizes (line 275) | def getSupportedByteSizes(self):
    method getSupportedStopbits (line 278) | def getSupportedStopbits(self):
    method getSupportedParities (line 281) | def getSupportedParities(self):
    method setPort (line 286) | def setPort(self, port):
    method getPort (line 303) | def getPort(self):
    method setBaudrate (line 312) | def setBaudrate(self, baudrate):
    method getBaudrate (line 323) | def getBaudrate(self):
    method setByteSize (line 330) | def setByteSize(self, bytesize):
    method getByteSize (line 336) | def getByteSize(self):
    method setParity (line 343) | def setParity(self, parity):
    method getParity (line 349) | def getParity(self):
    method setStopbits (line 356) | def setStopbits(self, stopbits):
    method getStopbits (line 362) | def getStopbits(self):
    method setTimeout (line 369) | def setTimeout(self, timeout):
    method getTimeout (line 380) | def getTimeout(self):
    method setWriteTimeout (line 387) | def setWriteTimeout(self, timeout):
    method getWriteTimeout (line 399) | def getWriteTimeout(self):
    method setXonXoff (line 406) | def setXonXoff(self, xonxoff):
    method getXonXoff (line 411) | def getXonXoff(self):
    method setRtsCts (line 417) | def setRtsCts(self, rtscts):
    method getRtsCts (line 422) | def getRtsCts(self):
    method setDsrDtr (line 428) | def setDsrDtr(self, dsrdtr=None):
    method getDsrDtr (line 438) | def getDsrDtr(self):
    method setInterCharTimeout (line 444) | def setInterCharTimeout(self, interCharTimeout):
    method getInterCharTimeout (line 456) | def getInterCharTimeout(self):
    method getSettingsDict (line 467) | def getSettingsDict(self):
    method applySettingsDict (line 472) | def applySettingsDict(self, d):
    method __repr__ (line 482) | def __repr__(self):
    method readable (line 503) | def readable(self): return True
    method writable (line 504) | def writable(self): return True
    method seekable (line 505) | def seekable(self): return False
    method readinto (line 506) | def readinto(self, b):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/serialwin32.py
  function device (line 17) | def device(portnum):
  class Win32Serial (line 22) | class Win32Serial(SerialBase):
    method __init__ (line 28) | def __init__(self, *args, **kwargs):
    method open (line 33) | def open(self):
    method _reconfigurePort (line 86) | def _reconfigurePort(self):
    method close (line 191) | def close(self):
    method makeDeviceName (line 204) | def makeDeviceName(self, port):
    method inWaiting (line 209) | def inWaiting(self):
    method read (line 217) | def read(self, size=1):
    method write (line 252) | def write(self, data):
    method flushInput (line 276) | def flushInput(self):
    method flushOutput (line 281) | def flushOutput(self):
    method sendBreak (line 287) | def sendBreak(self, duration=0.25):
    method setBreak (line 295) | def setBreak(self, level=1):
    method setRTS (line 303) | def setRTS(self, level=1):
    method setDTR (line 313) | def setDTR(self, level=1):
    method _GetCommModemStatus (line 323) | def _GetCommModemStatus(self):
    method getCTS (line 328) | def getCTS(self):
    method getDSR (line 333) | def getDSR(self):
    method getRI (line 338) | def getRI(self):
    method getCD (line 343) | def getCD(self):
    method setXON (line 350) | def setXON(self, level=True):
    method outWaiting (line 358) | def outWaiting(self):
    method setRtsToggle (line 367) | def setRtsToggle(self, rtsToggle):
    method getRtsToggle (line 372) | def getRtsToggle(self):
  class Serial (line 386) | class Serial(Win32Serial, FileLike):
  class Serial (line 390) | class Serial(Win32Serial, io.RawIOBase):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/sermsdos.py
  function device (line 63) | def device(portnum):
  class Serial (line 66) | class Serial(serialutil.FileLike):
    method __init__ (line 81) | def __init__(self,
    method __del__ (line 121) | def __del__(self):
    method close (line 124) | def close(self):
    method _config (line 127) | def _config(self, port, baud, parity, data, stop, retry,
    method setBaudrate (line 135) | def setBaudrate(self, baudrate):
    method inWaiting (line 140) | def inWaiting(self):
    method read (line 144) | def read(self, num = 1):
    method write (line 152) | def write(self, s):
    method flushInput (line 160) | def flushInput(self):
    method flushOutput (line 163) | def flushOutput(self):
    method sendBreak (line 166) | def sendBreak(self):
    method setRTS (line 169) | def setRTS(self,level=1):
    method setDTR (line 173) | def setDTR(self,level=1):
    method getCTS (line 177) | def getCTS(self):
    method getDSR (line 181) | def getDSR(self):
    method getRI (line 185) | def getRI(self):
    method getCD (line 189) | def getCD(self):
    method __repr__ (line 193) | def __repr__(self):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/tools/list_ports.py
  function grep (line 35) | def grep(regexp):
  function main (line 46) | def main():

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/tools/list_ports_posix.py
  function popen (line 9) | def popen(argv):
  function popen (line 16) | def popen(argv):
  function read_line (line 32) | def read_line(filename):
  function re_group (line 42) | def re_group(regexp, text):
  function usb_sysfs_hw_string (line 52) | def usb_sysfs_hw_string(sysfs_path):
  function usb_lsusb_string (line 66) | def usb_lsusb_string(sysfs_path):
  function describe (line 82) | def describe(device):
  function hwinfo (line 100) | def hwinfo(device):
  function comports (line 120) | def comports():
  function comports (line 125) | def comports():
  function comports (line 130) | def comports():
  function comports (line 138) | def comports():
  function comports (line 143) | def comports():
  function comports (line 149) | def comports():
  function comports (line 155) | def comports():
  function comports (line 161) | def comports():
  function comports (line 167) | def comports():
  function comports (line 173) | def comports():

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/tools/list_ports_windows.py
  function ValidHandle (line 4) | def ValidHandle(value, func, arguments):
  function byte_buffer (line 35) | def byte_buffer(length):
  function string (line 39) | def string(buffer):
  class GUID (line 47) | class GUID(ctypes.Structure):
    method __str__ (line 54) | def __str__(self):
  class SP_DEVINFO_DATA (line 63) | class SP_DEVINFO_DATA(ctypes.Structure):
    method __str__ (line 70) | def __str__(self):
  class SP_DEVICE_INTERFACE_DATA (line 74) | class SP_DEVICE_INTERFACE_DATA(ctypes.Structure):
    method __str__ (line 81) | def __str__(self):
  function comports (line 141) | def comports():

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/tools/miniterm.py
  function key_description (line 17) | def key_description(character):
  function get_help_text (line 28) | def get_help_text():
  function character (line 69) | def character(b):
  function character (line 72) | def character(b):
  class Console (line 80) | class Console(object):
    method __init__ (line 81) | def __init__(self):
    method setup (line 84) | def setup(self):
    method cleanup (line 87) | def cleanup(self):
    method getkey (line 90) | def getkey(self):
    method __init__ (line 105) | def __init__(self):
    method setup (line 108) | def setup(self):
    method getkey (line 116) | def getkey(self):
    method cleanup (line 120) | def cleanup(self):
  class Console (line 104) | class Console(object):
    method __init__ (line 81) | def __init__(self):
    method setup (line 84) | def setup(self):
    method cleanup (line 87) | def cleanup(self):
    method getkey (line 90) | def getkey(self):
    method __init__ (line 105) | def __init__(self):
    method setup (line 108) | def setup(self):
    method getkey (line 116) | def getkey(self):
    method cleanup (line 120) | def cleanup(self):
  function cleanup_console (line 125) | def cleanup_console():
  class Miniterm (line 143) | class Miniterm(object):
    method __init__ (line 144) | def __init__(self, port, baudrate, parity, rtscts, xonxoff, echo=False...
    method _start_reader (line 159) | def _start_reader(self):
    method _stop_reader (line 167) | def _stop_reader(self):
    method start (line 173) | def start(self):
    method stop (line 181) | def stop(self):
    method join (line 184) | def join(self, transmit_only=False):
    method dump_port_settings (line 189) | def dump_port_settings(self):
    method reader (line 216) | def reader(self):
    method writer (line 256) | def writer(self):
  function main (line 439) | def main():

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/urlhandler/protocol_hwgrep.py
  class Serial (line 17) | class Serial(serial.Serial):
    method setPort (line 20) | def setPort(self, value):
    method fromURL (line 27) | def fromURL(self, url):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/urlhandler/protocol_loop.py
  class LoopbackSerial (line 32) | class LoopbackSerial(SerialBase):
    method open (line 38) | def open(self):
    method _reconfigurePort (line 65) | def _reconfigurePort(self):
    method close (line 74) | def close(self):
    method makeDeviceName (line 81) | def makeDeviceName(self, port):
    method fromURL (line 84) | def fromURL(self, url):
    method inWaiting (line 108) | def inWaiting(self):
    method read (line 117) | def read(self, size=1):
    method write (line 142) | def write(self, data):
    method flushInput (line 163) | def flushInput(self):
    method flushOutput (line 174) | def flushOutput(self):
    method sendBreak (line 181) | def sendBreak(self, duration=0.25):
    method setBreak (line 186) | def setBreak(self, level=True):
    method setRTS (line 193) | def setRTS(self, level=True):
    method setDTR (line 200) | def setDTR(self, level=True):
    method getCTS (line 207) | def getCTS(self):
    method getDSR (line 214) | def getDSR(self):
    method getRI (line 221) | def getRI(self):
    method getCD (line 228) | def getCD(self):
  class Serial (line 246) | class Serial(LoopbackSerial, FileLike):
  class Serial (line 250) | class Serial(LoopbackSerial, io.RawIOBase):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/urlhandler/protocol_socket.py
  class SocketSerial (line 34) | class SocketSerial(SerialBase):
    method open (line 40) | def open(self):
    method _reconfigurePort (line 67) | def _reconfigurePort(self):
    method close (line 75) | def close(self):
    method makeDeviceName (line 90) | def makeDeviceName(self, port):
    method fromURL (line 93) | def fromURL(self, url):
    method inWaiting (line 124) | def inWaiting(self):
    method read (line 132) | def read(self, size=1):
    method write (line 153) | def write(self, data):
    method flushInput (line 164) | def flushInput(self):
    method flushOutput (line 170) | def flushOutput(self):
    method sendBreak (line 177) | def sendBreak(self, duration=0.25):
    method setBreak (line 184) | def setBreak(self, level=True):
    method setRTS (line 191) | def setRTS(self, level=True):
    method setDTR (line 197) | def setDTR(self, level=True):
    method getCTS (line 203) | def getCTS(self):
    method getDSR (line 210) | def getDSR(self):
    method getRI (line 217) | def getRI(self):
    method getCD (line 224) | def getCD(self):
  class Serial (line 242) | class Serial(SocketSerial, FileLike):
  class Serial (line 246) | class Serial(SocketSerial, io.RawIOBase):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/win32.py
  function is_64bit (line 14) | def is_64bit():
  class _SECURITY_ATTRIBUTES (line 29) | class _SECURITY_ATTRIBUTES(Structure):
  class _OVERLAPPED (line 58) | class _OVERLAPPED(Structure):
  class _COMSTAT (line 62) | class _COMSTAT(Structure):
  class _DCB (line 66) | class _DCB(Structure):
  class _COMMTIMEOUTS (line 70) | class _COMMTIMEOUTS(Structure):
  class N11_OVERLAPPED4DOLLAR_48E (line 219) | class N11_OVERLAPPED4DOLLAR_48E(Union):
  class N11_OVERLAPPED4DOLLAR_484DOLLAR_49E (line 221) | class N11_OVERLAPPED4DOLLAR_484DOLLAR_49E(Structure):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/test/test.py
  function data (line 35) | def data(string):
  function data (line 39) | def data(string): return string
  function segments (line 43) | def segments(data, size=16):
  class Test4_Nonblocking (line 48) | class Test4_Nonblocking(unittest.TestCase):
    method setUp (line 52) | def setUp(self):
    method tearDown (line 55) | def tearDown(self):
    method test0_Messy (line 58) | def test0_Messy(self):
    method test1_ReadEmpty (line 63) | def test1_ReadEmpty(self):
    method test2_Loopback (line 67) | def test2_Loopback(self):
    method test2_LoopbackTimeout (line 79) | def test2_LoopbackTimeout(self):
  class Test3_Timeout (line 89) | class Test3_Timeout(Test4_Nonblocking):
    method test0_Messy (line 93) | def test0_Messy(self):
  class SendEvent (line 99) | class SendEvent(threading.Thread):
    method __init__ (line 100) | def __init__(self, serial, delay=3):
    method run (line 108) | def run(self):
    method isSet (line 115) | def isSet(self):
    method stop (line 118) | def stop(self):
  class Test1_Forever (line 122) | class Test1_Forever(unittest.TestCase):
    method setUp (line 126) | def setUp(self):
    method tearDown (line 130) | def tearDown(self):
    method test2_ReadEmpty (line 134) | def test2_ReadEmpty(self):
  class Test2_Forever (line 142) | class Test2_Forever(unittest.TestCase):
    method setUp (line 144) | def setUp(self):
    method tearDown (line 147) | def tearDown(self):
    method test1_inWaitingEmpty (line 150) | def test1_inWaitingEmpty(self):
    method test2_Loopback (line 154) | def test2_Loopback(self):
  class Test0_DataWires (line 167) | class Test0_DataWires(unittest.TestCase):
    method setUp (line 169) | def setUp(self):
    method tearDown (line 172) | def tearDown(self):
    method test1_RTS (line 175) | def test1_RTS(self):
    method test2_DTR (line 184) | def test2_DTR(self):
    method test3_RI (line 193) | def test3_RI(self):
  class Test_MoreTimeouts (line 198) | class Test_MoreTimeouts(unittest.TestCase):
    method setUp (line 200) | def setUp(self):
    method tearDown (line 204) | def tearDown(self):
    method test_WriteTimeout (line 207) | def test_WriteTimeout(self):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/test/test_advanced.py
  class Test_ChangeAttributes (line 31) | class Test_ChangeAttributes(unittest.TestCase):
    method setUp (line 34) | def setUp(self):
    method tearDown (line 38) | def tearDown(self):
    method test_PortSetting (line 41) | def test_PortSetting(self):
    method test_DoubleOpen (line 70) | def test_DoubleOpen(self):
    method test_BaudrateSetting (line 77) | def test_BaudrateSetting(self):
    method disabled_test_BaudrateSetting2 (line 92) | def disabled_test_BaudrateSetting2(self):
    method test_BytesizeSetting (line 99) | def test_BytesizeSetting(self):
    method test_ParitySetting (line 110) | def test_ParitySetting(self):
    method test_StopbitsSetting (line 121) | def test_StopbitsSetting(self):
    method test_TimeoutSetting (line 132) | def test_TimeoutSetting(self):
    method test_XonXoffSetting (line 143) | def test_XonXoffSetting(self):
    method test_RtsCtsSetting (line 153) | def test_RtsCtsSetting(self):
    method disabled_test_UnconfiguredPort (line 165) | def disabled_test_UnconfiguredPort(self):
    method test_PortOpenClose (line 169) | def test_PortOpenClose(self):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/test/test_high_load.py
  class TestHighLoad (line 39) | class TestHighLoad(unittest.TestCase):
    method setUp (line 45) | def setUp(self):
    method tearDown (line 48) | def tearDown(self):
    method test0_WriteReadLoopback (line 51) | def test0_WriteReadLoopback(self):
    method test1_WriteWriteReadLoopback (line 59) | def test1_WriteWriteReadLoopback(self):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/test/test_iolib.py
  function unicode (line 49) | def unicode(x): return x
  class Test_SerialAndIO (line 55) | class Test_SerialAndIO(unittest.TestCase):
    method setUp (line 57) | def setUp(self):
    method tearDown (line 61) | def tearDown(self):
    method test_hello_raw (line 64) | def test_hello_raw(self):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/test/test_readline.py
  function data (line 37) | def data(string):
  function data (line 40) | def data(string): return string
  class Test_Readline (line 44) | class Test_Readline(unittest.TestCase):
    method setUp (line 47) | def setUp(self):
    method tearDown (line 50) | def tearDown(self):
    method test_readline (line 53) | def test_readline(self):
    method test_readlines (line 62) | def test_readlines(self):
    method test_xreadlines (line 70) | def test_xreadlines(self):
    method test_for_in (line 79) | def test_for_in(self):
    method test_alternate_eol (line 90) | def test_alternate_eol(self):

FILE: ICARUS-LX150/MiningSoftware/pyserial-2.6/test/test_url.py
  class Test_URL (line 24) | class Test_URL(unittest.TestCase):
    method test_loop (line 27) | def test_loop(self):
    method test_bad_url (line 31) | def test_bad_url(self):
    method test_custom_url (line 35) | def test_custom_url(self):

FILE: ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/_tests/test_cgiwrapper.py
  class Service (line 25) | class Service(object):
    method echo (line 27) | def echo(self, arg):
  class TestCGIWrapper (line 31) | class  TestCGIWrapper(unittest.TestCase):
    method setUp (line 33) | def setUp(self):
    method tearDown (line 36) | def tearDown(self):
    method test_runCGIHandler (line 39) | def test_runCGIHandler(self):

FILE: ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/_tests/test_json.py
  class TestDumps (line 28) | class  TestDumps(unittest.TestCase):
    method setUp (line 29) | def setUp(self):
    method tearDown (line 32) | def tearDown(self):
    method assertJSON (line 36) | def assertJSON(self, json, expectedJSON):
    method test_Number (line 40) | def test_Number(self):
    method test_None (line 47) | def test_None(self):
    method test_Boolean (line 51) | def test_Boolean(self):
    method test_Float (line 57) | def test_Float(self):
    method test_String (line 67) | def test_String(self):
    method test_StringEscapedChars (line 74) | def test_StringEscapedChars(self):
    method test_StringEscapedUnicodeChars (line 78) | def test_StringEscapedUnicodeChars(self):
    method test_Array (line 82) | def test_Array(self):
    method test_Dictionary (line 86) | def test_Dictionary(self):
    method test_FailOther (line 90) | def test_FailOther(self):
  class TestLoads (line 96) | class  TestLoads(unittest.TestCase):
    method setUp (line 97) | def setUp(self):
    method tearDown (line 100) | def tearDown(self):
    method test_String (line 104) | def test_String(self):
    method test_StringEscapedChars (line 110) | def test_StringEscapedChars(self):
    method test_StringEscapedUnicodeChars (line 115) | def test_StringEscapedUnicodeChars(self):
    method test_Array (line 120) | def test_Array(self):
    method test_Dictionary (line 125) | def test_Dictionary(self):
    method test_Int (line 131) | def test_Int(self):
    method test_NegativeInt (line 137) | def test_NegativeInt(self):
    method test_NumberAtEndOfArray (line 142) | def test_NumberAtEndOfArray(self):
    method test_StrAtEndOfArray (line 147) | def test_StrAtEndOfArray(self):
    method test_Float (line 152) | def test_Float(self):
    method test_Exponential (line 157) | def test_Exponential(self):
    method test_True (line 162) | def test_True(self):
    method test_False (line 167) | def test_False(self):
    method test_None (line 172) | def test_None(self):
    method test_NestedDictAllTypes (line 177) | def test_NestedDictAllTypes(self):

FILE: ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/_tests/test_modpywrapper.py
  class Service (line 25) | class Service(object):
    method echo (line 27) | def echo(self, arg):
  class ApacheRequestMockup (line 31) | class ApacheRequestMockup(object):
    method __init__ (line 33) | def __init__(self, filename, fin, fout):
    method write (line 38) | def write(self,data):
    method flush (line 41) | def flush(self):
    method read (line 44) | def read(self):
  class ModPyMockup (line 47) | class ModPyMockup(object):
    method __init__ (line 48) | def __init__(self):
  class ApacheModuleMockup (line 51) | class ApacheModuleMockup(object):
    method __getattr__ (line 52) | def __getattr__(self, name):
    method import_module (line 55) | def import_module(self, moduleName, log=1):
  class TestModPyWrapper (line 60) | class  TestModPyWrapper(unittest.TestCase):
    method setUp (line 62) | def setUp(self):
    method tearDown (line 66) | def tearDown(self):
    method test_runHandler (line 69) | def test_runHandler(self):
    method test_ServiceImplementationNotFound (line 83) | def test_ServiceImplementationNotFound(self):

FILE: ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/_tests/test_proxy.py
  class TestProxy (line 29) | class  TestProxy(unittest.TestCase):
    method urlopen (line 31) | def urlopen(self, url, data):
    method setUp (line 35) | def setUp(self):
    method tearDown (line 40) | def tearDown(self):
    method test_ProvidesProxyMethod (line 43) | def test_ProvidesProxyMethod(self):
    method test_MethodCallCallsService (line 47) | def test_MethodCallCallsService(self):

FILE: ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/_tests/test_serviceHandler.py
  class Service (line 30) | class Service(object):
    method echo (line 32) | def echo(self, arg):
    method not_a_serviceMethod (line 35) | def not_a_serviceMethod(self):
    method raiseError (line 39) | def raiseError(self):
  class Handler (line 42) | class Handler(jsonrpc.ServiceHandler):
    method __init__ (line 43) | def __init__(self, service):
    method translateRequest (line 46) | def translateRequest(self, data):
    method findServiceEndpoint (line 50) | def findServiceEndpoint(self, name):
    method invokeServiceEndpoint (line 54) | def invokeServiceEndpoint(self, meth, params):
    method translateResult (line 58) | def translateResult(self, result, error, id_):
  class TestServiceHandler (line 64) | class  TestServiceHandler(unittest.TestCase):
    method setUp (line 66) | def setUp(self):
    method tearDown (line 69) | def tearDown(self):
    method test_RequestProcessing (line 72) | def test_RequestProcessing(self):
    method test_translateRequest (line 82) | def test_translateRequest(self):
    method test_findServiceEndpoint (line 90) | def test_findServiceEndpoint(self):
    method test_invokeEndpoint (line 97) | def test_invokeEndpoint(self):
    method test_translateResults (line 103) | def test_translateResults(self):
    method test_translateError (line 108) | def test_translateError(self):
    method test_translateUnencodableResults (line 114) | def test_translateUnencodableResults(self):
    method test_handleRequestEcho (line 119) | def test_handleRequestEcho(self):
    method test_handleRequestMethodNotFound (line 125) | def test_handleRequestMethodNotFound(self):
    method test_handleRequestMethodNotAllowed (line 131) | def test_handleRequestMethodNotAllowed(self):
    method test_handleRequestMethodRaiseError (line 137) | def test_handleRequestMethodRaiseError(self):
    method test_handleBadRequestData (line 143) | def test_handleBadRequestData(self):
    method test_handleBadRequestObject (line 149) | def test_handleBadRequestObject(self):

FILE: ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/cgiwrapper.py
  class CGIServiceHandler (line 4) | class CGIServiceHandler(ServiceHandler):
    method __init__ (line 5) | def __init__(self, service):
    method handleRequest (line 11) | def handleRequest(self, fin=None, fout=None, env=None):
  function handleCGI (line 44) | def handleCGI(service=None, fin=None, fout=None, env=None):

FILE: ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/json.py
  class JSONEncodeException (line 49) | class JSONEncodeException(Exception):
    method __init__ (line 50) | def __init__(self, obj):
    method __str__ (line 54) | def __str__(self):
  class JSONDecodeException (line 58) | class JSONDecodeException(Exception):
    method __init__ (line 59) | def __init__(self, message):
    method __str__ (line 63) | def __str__(self):
  function escapeChar (line 67) | def escapeChar(match):
  function dumps (line 79) | def dumps(obj):
  function dumpParts (line 82) | def dumpParts (obj):
  function loads (line 123) | def loads(s):

FILE: ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/modpywrapper.py
  class ServiceImplementaionNotFound (line 5) | class ServiceImplementaionNotFound(ServiceException):
  class ModPyServiceHandler (line 9) | class ModPyServiceHandler(ServiceHandler):
    method __init__ (line 10) | def __init__(self, req):
    method findServiceEndpoint (line 15) | def findServiceEndpoint(self, name):
    method handleRequest (line 40) | def handleRequest(self, data):
  function handler (line 47) | def handler(req):

FILE: ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/proxy.py
  class JSONRPCException (line 25) | class JSONRPCException(Exception):
    method __init__ (line 26) | def __init__(self, rpcError):
  class ServiceProxy (line 30) | class ServiceProxy(object):
    method __init__ (line 31) | def __init__(self, serviceURL, serviceName=None):
    method __getattr__ (line 35) | def __getattr__(self, name):
    method __call__ (line 40) | def __call__(self, *args):

FILE: ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/serviceHandler.py
  function ServiceMethod (line 25) | def ServiceMethod(fn):
  class ServiceException (line 29) | class ServiceException(Exception):
  class ServiceRequestNotTranslatable (line 32) | class ServiceRequestNotTranslatable(ServiceException):
  class BadServiceRequest (line 35) | class BadServiceRequest(ServiceException):
  class ServiceMethodNotFound (line 38) | class ServiceMethodNotFound(ServiceException):
    method __init__ (line 39) | def __init__(self, name):
  class ServiceHandler (line 42) | class ServiceHandler(object):
    method __init__ (line 44) | def __init__(self, service):
    method handleRequest (line 47) | def handleRequest(self, json):
    method translateRequest (line 82) | def translateRequest(self, data):
    method findServiceEndpoint (line 89) | def findServiceEndpoint(self, name):
    method invokeServiceEndpoint (line 99) | def invokeServiceEndpoint(self, meth, args):
    method translateResult (line 102) | def translateResult(self, rslt, err, id_):

FILE: experimental/LX150-EIGHT-A/sgen.c
  function main (line 2) | int main()

FILE: experimental/LX150-EIGHT-B/ltcminer-dynclock.py
  function stats (line 38) | def stats(count, starttime):
  class Reader (line 64) | class Reader(Thread):
    method __init__ (line 65) | def __init__(self):
    method run (line 73) | def run(self):
  class Writer (line 85) | class Writer(Thread):
    method __init__ (line 86) | def __init__(self,dynclock_hex):
    method run (line 99) | def run(self):
  class Submitter (line 149) | class Submitter(Thread):
    method __init__ (line 150) | def __init__(self, block, nonce):
    method run (line 156) | def run(self):
  class Display_stats (line 177) | class Display_stats(Thread):
    method __init__ (line 178) | def __init__(self):
    method run (line 187) | def run(self):

FILE: experimental/LX150-EIGHT-B/ltcminer-test-dynclock.py
  function stats (line 32) | def stats(count, starttime):
  class Reader (line 58) | class Reader(Thread):
    method __init__ (line 59) | def __init__(self):
    method run (line 67) | def run(self):
  class Writer (line 79) | class Writer(Thread):
    method __init__ (line 80) | def __init__(self,dynclock_hex):
    method run (line 98) | def run(self):
  class Submitter (line 176) | class Submitter(Thread):
    method __init__ (line 177) | def __init__(self, block, nonce):
    method run (line 183) | def run(self):
  class Display_stats (line 211) | class Display_stats(Thread):
    method __init__ (line 212) | def __init__(self):
    method run (line 221) | def run(self):

FILE: experimental/LX150-EIGHT-B/sgen.c
  function main (line 2) | int main()

FILE: experimental/LX150-EIGHT-C/sgen.c
  function main (line 2) | int main()

FILE: experimental/LX150-SIXTYFOUR-A/sgen.c
  function main (line 2) | int main()

FILE: experimental/Ztex-1-15y/cgminer-3.1.1/cgminer.c
  type strategies (line 77) | struct strategies
  type list_head (line 125) | struct list_head
  type cgpu_info (line 129) | struct cgpu_info
  type thr_info (line 175) | struct thr_info
  type thr_info (line 176) | struct thr_info
  type timeval (line 220) | struct timeval
  type pool (line 237) | struct pool
  type pool (line 238) | struct pool
  type pool_strategy (line 241) | enum pool_strategy
  type timeval (line 259) | struct timeval
  type block (line 265) | struct block {
  type block (line 271) | struct block
  type stratum_share (line 278) | struct stratum_share {
  type stratum_share (line 286) | struct stratum_share
  type sigaction (line 307) | struct sigaction
  type thread_q (line 309) | struct thread_q
  type work (line 312) | struct work
  type schedtime (line 314) | struct schedtime {
  type schedtime (line 319) | struct schedtime
  type schedtime (line 320) | struct schedtime
  function time_before (line 323) | static bool time_before(struct tm *tm1, struct tm *tm2)
  function should_run (line 332) | static bool should_run(void)
  function get_datestamp (line 370) | void get_datestamp(char *f, struct timeval *tv)
  function get_timestamp (line 385) | void get_timestamp(char *f, struct timeval *tv)
  function applog_and_exit (line 397) | static void applog_and_exit(const char *fmt, ...)
  type thr_info (line 410) | struct thr_info
  type thr_info (line 412) | struct thr_info
  type cgpu_info (line 421) | struct cgpu_info
  type thr_info (line 423) | struct thr_info
  type cgpu_info (line 428) | struct cgpu_info
  type cgpu_info (line 430) | struct cgpu_info
  function sharelog (line 439) | static void sharelog(const char*disposition, const struct work*work)
  type pool (line 486) | struct pool
  type pool (line 488) | struct pool
  type pool (line 490) | struct pool
  type pool (line 494) | struct pool
  function pool_tset (line 514) | static bool pool_tset(struct pool *pool, bool *var)
  function pool_tclear (line 526) | bool pool_tclear(struct pool *pool, bool *var)
  type pool (line 538) | struct pool
  type pool (line 540) | struct pool
  type pool_strategy (line 608) | enum pool_strategy
  type pool_strategy (line 614) | enum pool_strategy
  type pool_strategy (line 626) | enum pool_strategy
  function detect_stratum (line 634) | bool detect_stratum(struct pool *pool, char *url)
  type pool (line 651) | struct pool
  type pool (line 681) | struct pool
  type pool (line 697) | struct pool
  type pool (line 713) | struct pool
  type schedtime (line 743) | struct schedtime
  function load_temp_cutoffs (line 791) | static void load_temp_cutoffs()
  type opt_table (line 903) | struct opt_table
  type opt_table (line 1242) | struct opt_table
  function load_default_config (line 1352) | static void load_default_config(void)
  type opt_table (line 1417) | struct opt_table
  function jobj_binary (line 1447) | static bool jobj_binary(const json_t *obj, const char *key,
  function ztex_checkNonce (line 1471) | uint32_t ztex_checkNonce(struct work *work, uint32_t nonce)
  function calc_midstate (line 1491) | static void calc_midstate(struct work *work)
  type work (line 1504) | struct work
  type work (line 1506) | struct work
  type work (line 1506) | struct work
  function clean_work (line 1520) | void clean_work(struct work *work)
  function free_work (line 1532) | void free_work(struct work *work)
  function __build_gbt_coinbase (line 1540) | static void __build_gbt_coinbase(struct pool *pool)
  function __build_gbt_txns (line 1571) | static bool __build_gbt_txns(struct pool *pool, json_t *res_val)
  type pool (line 1616) | struct pool
  type work (line 1647) | struct work
  type pool (line 1648) | struct pool
  type work (line 1648) | struct work
  function update_gbt (line 1650) | static void update_gbt(struct pool *pool)
  function gen_gbt_work (line 1688) | static void gen_gbt_work(struct pool *pool, struct work *work)
  function gbt_decode (line 1745) | static bool gbt_decode(struct pool *pool, json_t *res_val)
  function getwork_decode (line 1818) | static bool getwork_decode(json_t *res_val, struct work *work)
  function work_decode (line 1838) | static bool work_decode(struct pool *pool, struct work *work, json_t *val)
  function dev_from_id (line 1868) | int dev_from_id(int thr_id)
  function decay_time (line 1879) | void decay_time(double *f, double fadd)
  function __total_staged (line 1895) | static int __total_staged(void)
  function total_staged (line 1900) | static int total_staged(void)
  type cgpu_info (line 1923) | struct cgpu_info
  function unlock_curses (line 1927) | static inline void unlock_curses(void)
  function lock_curses (line 1932) | static inline void lock_curses(void)
  function curses_active_locked (line 1937) | static bool curses_active_locked(void)
  function tailsprintf (line 1949) | void tailsprintf(char *f, const char *fmt, ...)
  function suffix_string (line 1960) | static void suffix_string(uint64_t val, char *buf, int sigdigits)
  function get_statline (line 2015) | static void get_statline(char *buf, struct cgpu_info *cgpu)
  function text_print_status (line 2038) | static void text_print_status(int thr_id)
  function curses_print_status (line 2052) | static void curses_print_status(void)
  function adj_width (line 2086) | static void adj_width(int var, int *length)
  function curses_print_devstatus (line 2094) | static void curses_print_devstatus(int thr_id)
  function print_status (line 2158) | static void print_status(int thr_id)
  function change_logwinsize (line 2166) | static inline void change_logwinsize(void)
  function check_winsizes (line 2191) | static void check_winsizes(void)
  function switch_compact (line 2214) | static void switch_compact(void)
  function wlog (line 2227) | void wlog(const char *f, ...)
  function wlogprint (line 2237) | void wlogprint(const char *f, ...)
  function log_curses_only (line 2251) | bool log_curses_only(int prio, const char *f, va_list ap)
  function clear_logwin (line 2271) | void clear_logwin(void)
  function enable_pool (line 2281) | static void enable_pool(struct pool *pool)
  function disable_pool (line 2290) | static void disable_pool(struct pool *pool)
  function reject_pool (line 2298) | static void reject_pool(struct pool *pool)
  function share_result (line 2310) | static void
  function submit_upstream_work (line 2436) | static bool submit_upstream_work(struct work *work, CURL *curl, bool res...
  function pool_unworkable (line 2603) | static bool pool_unworkable(struct pool *pool)
  type pool (line 2619) | struct pool
  type pool (line 2619) | struct pool
  type pool (line 2622) | struct pool
  type pool (line 2625) | struct pool
  type pool (line 2640) | struct pool
  type pool (line 2643) | struct pool
  function calc_diff (line 2679) | static void calc_diff(struct work *work, int known)
  function get_benchmark_work (line 2726) | static void get_benchmark_work(struct work *work)
  function get_upstream_work (line 2744) | static bool get_upstream_work(struct work *work, CURL *curl)
  function disable_curses (line 2800) | static void disable_curses(void)
  function __kill_work (line 2831) | static void __kill_work(void)
  function kill_work (line 2899) | void kill_work(void)
  function app_restart (line 2914) | void app_restart(void)
  function sighandler (line 2932) | static void sighandler(int __maybe_unused sig)
  function recruit_curl (line 2942) | static void recruit_curl(struct pool *pool)
  type curl_ent (line 2962) | struct curl_ent
  type pool (line 2962) | struct pool
  type curl_ent (line 2966) | struct curl_ent
  function push_curl_entry (line 2991) | static void push_curl_entry(struct curl_ent *ce, struct pool *pool)
  type work (line 3000) | struct work
  function should_roll (line 3002) | static inline bool should_roll(struct work *work)
  function can_roll (line 3027) | static inline bool can_roll(struct work *work)
  function roll_work (line 3033) | static void roll_work(struct work *work)
  function __copy_work (line 3054) | void __copy_work(struct work *work, struct work *base_work)
  type work (line 3077) | struct work
  type work (line 3077) | struct work
  type work (line 3079) | struct work
  type work (line 3086) | struct work
  type work (line 3086) | struct work
  type work (line 3088) | struct work
  type timeval (line 3091) | struct timeval
  type work (line 3101) | struct work
  function clone_available (line 3103) | static bool clone_available(void)
  function pool_died (line 3132) | static void pool_died(struct pool *pool)
  function stale_work (line 3144) | static bool stale_work(struct work *work, bool share)
  function share_diff (line 3212) | static uint64_t share_diff(const struct work *work)
  function regen_hash (line 3244) | static void regen_hash(struct work *work)
  function rebuild_hash (line 3256) | static void rebuild_hash(struct work *work)
  type pool (line 3281) | struct pool
  type work (line 3285) | struct work
  type work (line 3285) | struct work
  type pool (line 3286) | struct pool
  type curl_ent (line 3288) | struct curl_ent
  type stratum_share (line 3318) | struct stratum_share
  type stratum_share (line 3318) | struct stratum_share
  type pool (line 3416) | struct pool
  type pool (line 3418) | struct pool
  type pool (line 3422) | struct pool
  type pool (line 3437) | struct pool
  function pool_unusable (line 3440) | static bool pool_unusable(struct pool *pool)
  function switch_pools (line 3449) | void switch_pools(struct pool *selected)
  function discard_work (line 3529) | void discard_work(struct work *work)
  function wake_gws (line 3541) | static void wake_gws(void)
  function discard_stale (line 3548) | static void discard_stale(void)
  function restart_wait (line 3573) | int restart_wait(unsigned int mstime)
  function restart_threads (line 3593) | static void restart_threads(void)
  function set_curblock (line 3615) | static void set_curblock(char *hexstr, unsigned char *hash)
  function block_exists (line 3637) | static bool block_exists(char *hexstr)
  function from_existing_block (line 3651) | static inline bool from_existing_block(struct work *work)
  function block_sort (line 3661) | static int block_sort(struct block *blocka, struct block *blockb)
  function set_blockdiff (line 3666) | static void set_blockdiff(const struct work *work)
  function test_work_current (line 3713) | static bool test_work_current(struct work *work)
  function tv_sort (line 3787) | static int tv_sort(struct work *worka, struct work *workb)
  function work_rollable (line 3792) | static bool work_rollable(struct work *work)
  function hash_push (line 3797) | static bool hash_push(struct work *work)
  type thr_info (line 3817) | struct thr_info
  type work (line 3825) | struct work
  function stage_work (line 3851) | static void stage_work(struct work *work)
  function curses_int (line 3860) | int curses_int(const char *query)
  function display_pool_summary (line 3877) | static void display_pool_summary(struct pool *pool)
  function remove_pool (line 3908) | void remove_pool(struct pool *pool)
  type JE (line 3932) | struct JE {
  function json_escape_free (line 3937) | static void json_escape_free()
  type JE (line 3954) | struct JE
  function write_config (line 3978) | void write_config(FILE *fcfg)
  function zero_bestshare (line 4161) | void zero_bestshare(void)
  function zero_stats (line 4175) | void zero_stats(void)
  function display_pools (line 4236) | static void display_pools(void)
  function display_options (line 4380) | static void display_options(void)
  function default_save_file (line 4474) | void default_save_file(char *filename)
  function set_options (line 4497) | static void set_options(void)
  type thr_info (line 4616) | struct thr_info
  function thread_reportin (line 4630) | void thread_reportin(struct thr_info *thr)
  function thread_reportout (line 4638) | static inline void thread_reportout(struct thr_info *thr)
  function hashmeter (line 4643) | static void hashmeter(int thr_id, struct timeval *diff,
  function stratum_share_result (line 4757) | static void stratum_share_result(json_t *val, json_t *res_val, json_t *e...
  function parse_stratum_response (line 4776) | static bool parse_stratum_response(struct pool *pool, char *s)
  function clear_stratum_shares (line 4838) | void clear_stratum_shares(struct pool *pool)
  function clear_pool_work (line 4866) | static void clear_pool_work(struct pool *pool)
  function cp_prio (line 4882) | static int cp_prio(void)
  function cnx_needed (line 4895) | static bool cnx_needed(struct pool *pool)
  type pool (line 4930) | struct pool
  type pool (line 4931) | struct pool
  type pool (line 4932) | struct pool
  type work (line 4932) | struct work
  function stratum_resumed (line 4934) | static void stratum_resumed(struct pool *pool)
  function supports_resume (line 4944) | static bool supports_resume(struct pool *pool)
  type pool (line 4961) | struct pool
  type pool (line 4961) | struct pool
  type timeval (line 4970) | struct timeval
  type work (line 5046) | struct work
  function init_stratum_thread (line 5069) | static void init_stratum_thread(struct pool *pool)
  function stratum_works (line 5077) | static bool stratum_works(struct pool *pool)
  function pool_active (line 5089) | static bool pool_active(struct pool *pool, bool pinging)
  function pool_resus (line 5272) | static void pool_resus(struct pool *pool)
  type work (line 5281) | struct work
  type work (line 5283) | struct work
  type work (line 5316) | struct work
  type work (line 5316) | struct work
  type work (line 5319) | struct work
  function gen_hash (line 5348) | static void gen_hash(unsigned char *data, unsigned char *hash, int len)
  function set_target (line 5360) | void set_target(unsigned char *dest_target, double diff)
  function gen_stratum_work (line 5401) | static void gen_stratum_work(struct pool *pool, struct work *work)
  type work (line 5494) | struct work
  type thr_info (line 5494) | struct thr_info
  type work (line 5496) | struct work
  function submit_work_async (line 5519) | void submit_work_async(struct work *work_in, struct timeval *tv_work_found)
  function inc_hw_errors (line 5531) | void inc_hw_errors(struct thr_info *thr)
  function submit_nonce (line 5541) | void submit_nonce(struct thr_info *thr, struct work *work, uint32_t nonce)
  function abandon_work (line 5583) | static inline bool abandon_work(struct work *work, struct timeval *wdiff...
  function mt_disable (line 5593) | static void mt_disable(struct thr_info *mythr, const int thr_id,
  function hash_sole_work (line 5611) | static void hash_sole_work(struct thr_info *mythr)
  function fill_queue (line 5774) | static void fill_queue(struct thr_info *mythr, struct cgpu_info *cgpu, s...
  type work (line 5802) | struct work
  type cgpu_info (line 5802) | struct cgpu_info
  type work (line 5804) | struct work
  type work (line 5825) | struct work
  type work (line 5825) | struct work
  type work (line 5827) | struct work
  type work (line 5845) | struct work
  type cgpu_info (line 5845) | struct cgpu_info
  type work (line 5847) | struct work
  function work_completed (line 5858) | void work_completed(struct cgpu_info *cgpu, struct work *work)
  function flush_queue (line 5869) | static void flush_queue(struct cgpu_info *cgpu)
  function hash_queued_work (line 5894) | void hash_queued_work(struct thr_info *mythr)
  type thr_info (line 5941) | struct thr_info
  type cgpu_info (line 5943) | struct cgpu_info
  type device_drv (line 5944) | struct device_drv
  function convert_to_work (line 5979) | static void convert_to_work(json_t *val, int rolltime, struct pool *pool...
  type pool (line 6034) | struct pool
  type pool (line 6034) | struct pool
  type pool (line 6041) | struct pool
  function wait_lpcurrent (line 6052) | static void wait_lpcurrent(struct pool *pool)
  type pool (line 6066) | struct pool
  type pool (line 6066) | struct pool
  type timeval (line 6069) | struct timeval
  type pool (line 6070) | struct pool
  function reinit_device (line 6191) | void reinit_device(struct cgpu_info *cgpu)
  type timeval (line 6196) | struct timeval
  function reap_curl (line 6199) | static void reap_curl(struct pool *pool)
  type timeval (line 6234) | struct timeval
  type pool (line 6242) | struct pool
  type timeval (line 6299) | struct timeval
  type timeval (line 6305) | struct timeval
  type timeval (line 6310) | struct timeval
  type thr_info (line 6359) | struct thr_info
  type cgpu_info (line 6372) | struct cgpu_info
  type thr_info (line 6373) | struct thr_info
  type dev_enable (line 6374) | enum dev_enable
  function log_print_status (line 6447) | static void log_print_status(struct cgpu_info *cgpu)
  function print_summary (line 6455) | void print_summary(void)
  function clean_up (line 6540) | static void clean_up(void)
  function quit (line 6559) | void quit(int status, const char *format, ...)
  type pool (line 6604) | struct pool
  type pool (line 6604) | struct pool
  function add_pool_details (line 6633) | bool add_pool_details(struct pool *pool, bool live, char *url, char *use...
  function input_pool (line 6659) | static bool input_pool(bool live)
  function fork_monitor (line 6712) | static void fork_monitor()
  function enable_curses (line 6781) | void enable_curses(void) {
  type device_drv (line 6807) | struct device_drv
  type device_drv (line 6811) | struct device_drv
  type device_drv (line 6815) | struct device_drv
  type device_drv (line 6819) | struct device_drv
  type device_drv (line 6823) | struct device_drv
  type device_drv (line 6827) | struct device_drv
  function noop_reinit_device (line 6834) | static void noop_reinit_device(struct cgpu_info __maybe_unused *cgpu)
  function blank_get_statline_before (line 6838) | void blank_get_statline_before(char *buf, struct cgpu_info __maybe_unuse...
  function noop_get_statline (line 6843) | static void noop_get_statline(char __maybe_unused *buf, struct cgpu_info...
  function noop_get_stats (line 6847) | static bool noop_get_stats(struct cgpu_info __maybe_unused *cgpu)
  function noop_thread_prepare (line 6852) | static bool noop_thread_prepare(struct thr_info __maybe_unused *thr)
  function noop_can_limit_work (line 6857) | static uint64_t noop_can_limit_work(struct thr_info __maybe_unused *thr)
  function noop_thread_init (line 6862) | static bool noop_thread_init(struct thr_info __maybe_unused *thr)
  function noop_prepare_work (line 6867) | static bool noop_prepare_work(struct thr_info __maybe_unused *thr, struc...
  function noop_hw_error (line 6872) | static void noop_hw_error(struct thr_info __maybe_unused *thr)
  function noop_thread_shutdown (line 6876) | static void noop_thread_shutdown(struct thr_info __maybe_unused *thr)
  function noop_thread_enable (line 6880) | static void noop_thread_enable(struct thr_info __maybe_unused *thr)
  function fill_device_drv (line 6888) | void fill_device_drv(struct cgpu_info *cgpu)
  function enable_device (line 6926) | void enable_device(struct cgpu_info *cgpu)
  type _cgpu_devid_counter (line 6956) | struct _cgpu_devid_counter {
  function add_cgpu (line 6962) | bool add_cgpu(struct cgpu_info *cgpu)
  type device_drv (line 6992) | struct device_drv
  type device_drv (line 6992) | struct device_drv
  type device_drv (line 6994) | struct device_drv
  function hotplug_process (line 7008) | static void hotplug_process()
  function probe_pools (line 7116) | static void probe_pools(void)
  function main (line 7128) | int main(int argc, char *argv[])

FILE: experimental/Ztex-1-15y/cgminer-3.1.1/driver-icarus.c
  type timeval (line 135) | struct timeval
  type ICARUS_HISTORY (line 143) | struct ICARUS_HISTORY {
  type timing_mode (line 154) | enum timing_mode { MODE_DEFAULT, MODE_SHORT, MODE_LONG, MODE_VALUE }
  type ICARUS_INFO (line 162) | struct ICARUS_INFO {
  type ICARUS_INFO (line 198) | struct ICARUS_INFO
  type device_drv (line 218) | struct device_drv
  function rev (line 220) | static void rev(unsigned char *s, size_t l)
  function icarus_gets (line 240) | static int icarus_gets(unsigned char *buf, int fd, struct timeval *tv_fi...
  function icarus_write (line 287) | static int icarus_write(int fd, const void *buf, size_t bufLen)
  function cairnsmore_send_cmd (line 306) | static bool cairnsmore_send_cmd(int fd, uint8_t cmd, uint8_t data, bool ...
  function V01_cairnsmore_send_cmd (line 337) | static bool V01_cairnsmore_send_cmd(int fd, uint8_t cmd, uint8_t data, b...
  function do_icarus_close (line 363) | static void do_icarus_close(struct thr_info *thr)
  type timing_mode (line 370) | enum timing_mode
  function set_timing_mode (line 386) | static void set_timing_mode(int this_option_offset, struct cgpu_info *ic...
  function mask (line 470) | static uint32_t mask(int work_division)
  function get_options (line 497) | static void get_options(int this_option_offset, int *baud, int *work_div...
  function get_clocks (line 581) | static void get_clocks(int this_option_offset, int *cainsmore_clock)
  function icarus_detect_one (line 624) | static bool icarus_detect_one(const char *devpath)
  function icarus_detect (line 774) | static void icarus_detect()
  function icarus_prepare (line 779) | static bool icarus_prepare(struct thr_info *thr)
  function icarus_scanhash (line 803) | static int64_t icarus_scanhash(struct thr_info *thr, struct work *work,
  type api_data (line 1091) | struct api_data
  type cgpu_info (line 1091) | struct cgpu_info
  type api_data (line 1093) | struct api_data
  type ICARUS_INFO (line 1094) | struct ICARUS_INFO
  function icarus_shutdown (line 1120) | static void icarus_shutdown(struct thr_info *thr)
  type device_drv (line 1125) | struct device_drv

FILE: experimental/Ztex-1-15y/cgminer-3.1.1/driver-ztex.c
  type device_drv (line 35) | struct device_drv
  type thr_info (line 40) | struct thr_info
  type thr_info (line 41) | struct thr_info
  function ztex_selectFpga (line 43) | static void ztex_selectFpga(struct libztex_device* ztex)
  function ztex_releaseFpga (line 52) | static void ztex_releaseFpga(struct libztex_device* ztex)
  function ztex_detect (line 60) | static void ztex_detect(void)
  function ztex_updateFreq (line 107) | static bool ztex_updateFreq(struct libztex_device* ztex)
  function ztex_scanhash (line 178) | static int64_t ztex_scanhash(struct thr_info *thr, struct work *work,
  function ztex_statline_before (line 396) | static void ztex_statline_before(char *buf, struct cgpu_info *cgpu)
  function ztex_prepare (line 404) | static bool ztex_prepare(struct thr_info *thr)
  function ztex_shutdown (line 519) | static void ztex_shutdown(struct thr_info *thr)
  function ztex_disable (line 530) | static void ztex_disable(struct thr_info *thr)
  type device_drv (line 540) | struct device_drv

FILE: experimental/Ztex-1-15y/cgminer-3.1.1/libztex.c
  function libztex_get_string_descriptor_ascii (line 52) | static int libztex_get_string_descriptor_ascii(libusb_device_handle *dev...
  type check_result (line 95) | enum check_result
  function libztex_firmwareReset (line 103) | static bool libztex_firmwareReset(struct libusb_device_handle *hndl, boo...
  function libztex_checkDevice (line 116) | static enum check_result libztex_checkDevice(struct libusb_device *dev)
  function libztex_checkCapability (line 289) | static bool libztex_checkCapability(struct libztex_device *ztex, int i, ...
  function libztex_detectBitstreamBitOrder (line 299) | static char libztex_detectBitstreamBitOrder(const unsigned char *buf, in...
  function libztex_swapBits (line 313) | static void libztex_swapBits(unsigned char *buf, int size)
  function libztex_getFpgaState (line 331) | static int libztex_getFpgaState(struct libztex_device *ztex, struct libz...
  function libztex_configureFpgaHS (line 352) | static int libztex_configureFpgaHS(struct libztex_device *ztex, const ch...
  function libztex_configureFpgaLS (line 429) | static int libztex_configureFpgaLS(struct libztex_device *ztex, const ch...
  function libztex_configureFpga (line 494) | int libztex_configureFpga(struct libztex_device *ztex)
  function libztex_numberOfFpgas (line 507) | int libztex_numberOfFpgas(struct libztex_device *ztex)
  function libztex_selectFpga (line 531) | int libztex_selectFpga(struct libztex_device *ztex)
  function libztex_setFreq (line 552) | int libztex_setFreq(struct libztex_device *ztex, uint16_t freq)
  function libztex_resetFpga (line 576) | int libztex_resetFpga(struct libztex_device *ztex)
  function libztex_suspend (line 581) | int libztex_suspend(struct libztex_device *ztex)
  function libztex_prepare_device (line 590) | int libztex_prepare_device(struct libusb_device *dev, struct libztex_dev...
  function libztex_destroy_device (line 737) | void libztex_destroy_device(struct libztex_device* ztex)
  function libztex_scanDevices (line 750) | int libztex_scanDevices(struct libztex_dev_list*** devs_p)
  function libztex_sendHashData (line 851) | int libztex_sendHashData(struct libztex_device *ztex, unsigned char *sen...
  function libztex_readHashData (line 873) | int libztex_readHashData(struct libztex_device *ztex, struct libztex_has...
  function libztex_freeDevList (line 928) | void libztex_freeDevList(struct libztex_dev_list **devs)

FILE: experimental/Ztex-1-15y/cgminer-3.1.1/libztex.h
  type libztex_fpgastate (line 37) | struct libztex_fpgastate {
  type libztex_device (line 46) | struct libztex_device {
  type libztex_dev_list (line 86) | struct libztex_dev_list {
  type libztex_hash_data (line 91) | struct libztex_hash_data {
  type libztex_dev_list (line 97) | struct libztex_dev_list
  type libztex_dev_list (line 98) | struct libztex_dev_list
  type libusb_device (line 99) | struct libusb_device
  type libztex_device (line 99) | struct libztex_device
  type libztex_device (line 100) | struct libztex_device
  type libztex_device (line 101) | struct libztex_device
  type libztex_device (line 102) | struct libztex_device
  type libztex_device (line 103) | struct libztex_device
  type libztex_device (line 104) | struct libztex_device
  type libztex_hash_data (line 104) | struct libztex_hash_data
  type libztex_device (line 105) | struct libztex_device
  type libztex_device (line 106) | struct libztex_device
  type libztex_device (line 107) | struct libztex_device

FILE: experimental/Ztex-1-15y/cgminer-3.1.1/miner.h
  function fsync (line 63) | static inline int fsync (int fd)
  type drv_driver (line 212) | enum drv_driver {
  type alive (line 223) | enum alive {
  type pool_strategy (line 232) | enum pool_strategy {
  type strategies (line 242) | struct strategies {
  type cgpu_info (line 246) | struct cgpu_info
  type gpu_adl (line 249) | struct gpu_adl {
  type cgpu_info (line 286) | struct cgpu_info
  type api_data (line 288) | struct api_data
  type thr_info (line 289) | struct thr_info
  type work (line 290) | struct work
  type device_drv (line 292) | struct device_drv {
  type device_drv (line 342) | struct device_drv
  type device_drv (line 342) | struct device_drv
  type dev_enable (line 344) | enum dev_enable {
  type cl_kernels (line 350) | enum cl_kernels {
  type dev_reason (line 359) | enum dev_reason {
  type cgminer_stats (line 387) | struct cgminer_stats {
  type cgminer_pool_stats (line 395) | struct cgminer_pool_stats {
  type cgpu_info (line 419) | struct cgpu_info {
  type cgpu_info (line 550) | struct cgpu_info
  type thread_q (line 552) | struct thread_q {
  type thr_info (line 561) | struct thr_info {
  type string_elist (line 580) | struct string_elist {
  function string_elist_add (line 587) | static inline void string_elist_add(const char *s, struct list_head *head)
  function string_elist_del (line 597) | static inline void string_elist_del(struct string_elist *item)
  function swab32 (line 605) | static inline uint32_t swab32(uint32_t v)
  function swap256 (line 610) | static inline void swap256(void *dest_p, const void *src_p)
  function swab256 (line 625) | static inline void swab256(void *dest_p, const void *src_p)
  function flip32 (line 640) | static inline void flip32(void *dest_p, const void *src_p)
  function flip64 (line 650) | static inline void flip64(void *dest_p, const void *src_p)
  function flip80 (line 660) | static inline void flip80(void *dest_p, const void *src_p)
  function flip128 (line 670) | static inline void flip128(void *dest_p, const void *src_p)
  function endian_flip32 (line 682) | static inline void endian_flip32(void *dest_p, const void *src_p)
  function endian_flip128 (line 687) | static inline void endian_flip128(void *dest_p, const void *src_p)
  function endian_flip32 (line 692) | static inline void
  function endian_flip128 (line 697) | static inline void
  function mutex_lock (line 705) | static inline void mutex_lock(pthread_mutex_t *lock)
  function mutex_unlock (line 711) | static inline void mutex_unlock(pthread_mutex_t *lock)
  function mutex_trylock (line 717) | static inline int mutex_trylock(pthread_mutex_t *lock)
  function wr_lock (line 722) | static inline void wr_lock(pthread_rwlock_t *lock)
  function rd_lock (line 728) | static inline void rd_lock(pthread_rwlock_t *lock)
  function rw_unlock (line 734) | static inline void rw_unlock(pthread_rwlock_t *lock)
  function rd_unlock (line 740) | static inline void rd_unlock(pthread_rwlock_t *lock)
  function wr_unlock (line 745) | static inline void wr_unlock(pthread_rwlock_t *lock)
  function mutex_init (line 750) | static inline void mutex_init(pthread_mutex_t *lock)
  function rwlock_init (line 756) | static inline void rwlock_init(pthread_rwlock_t *lock)
  type cglock (line 763) | struct cglock {
  type cglock_t (line 768) | typedef struct cglock cglock_t;
  function cglock_init (line 770) | static inline void cglock_init(cglock_t *lock)
  function cg_rlock (line 777) | static inline void cg_rlock(cglock_t *lock)
  function cg_ilock (line 785) | static inline void cg_ilock(cglock_t *lock)
  function cg_ulock (line 791) | static inline void cg_ulock(cglock_t *lock)
  function cg_wlock (line 797) | static inline void cg_wlock(cglock_t *lock)
  function cg_dlock (line 804) | static inline void cg_dlock(cglock_t *lock)
  function cg_runlock (line 810) | static inline void cg_runlock(cglock_t *lock)
  function cg_wunlock (line 815) | static inline void cg_wunlock(cglock_t *lock)
  type pool (line 821) | struct pool
  type pool (line 864) | struct pool
  type pool (line 866) | struct pool
  type thr_info (line 870) | struct thr_info
  type thr_info (line 898) | struct thr_info
  type pool (line 899) | struct pool
  type cgpu_info (line 905) | struct cgpu_info
  type pool (line 917) | struct pool
  type pool (line 919) | struct pool
  type pool (line 921) | struct pool
  type pool (line 922) | struct pool
  type list_head (line 938) | struct list_head
  type thr_info (line 944) | struct thr_info
  type thr_info (line 945) | struct thr_info
  type cgpu_info (line 946) | struct cgpu_info
  type cgpu_info (line 956) | struct cgpu_info
  type pool (line 958) | struct pool
  type strategies (line 959) | struct strategies
  type pool_strategy (line 960) | enum pool_strategy
  type timeval (line 976) | struct timeval
  type dev_blk_ctx (line 979) | typedef struct {
  type dev_blk_ctx (line 1007) | typedef struct {
  type curl_ent (line 1012) | struct curl_ent {
  type pool_enable (line 1020) | enum pool_enable {
  type stratum_work (line 1026) | struct stratum_work {
  type pool (line 1049) | struct pool {
  type work (line 1161) | struct work {
  type modminer_fpga_state (line 1223) | struct modminer_fpga_state {
  type timeval (line 1250) | struct timeval
  type thr_info (line 1251) | struct thr_info
  type thr_info (line 1252) | struct thr_info
  type work (line 1252) | struct work
  type work (line 1253) | struct work
  type cgpu_info (line 1253) | struct cgpu_info
  type work (line 1254) | struct work
  type work (line 1254) | struct work
  type work (line 1255) | struct work
  type cgpu_info (line 1255) | struct cgpu_info
  type cgpu_info (line 1256) | struct cgpu_info
  type work (line 1256) | struct work
  type thr_info (line 1257) | struct thr_info
  type pool (line 1263) | struct pool
  type work (line 1264) | struct work
  type pool (line 1265) | struct pool
  type pool (line 1272) | struct pool
  type thread_q (line 1273) | struct thread_q
  type thread_q (line 1274) | struct thread_q
  type thread_q (line 1275) | struct thread_q
  type thread_q (line 1276) | struct thread_q
  type timespec (line 1276) | struct timespec
  type thread_q (line 1277) | struct thread_q
  type thread_q (line 1278) | struct thread_q
  type work (line 1282) | struct work
  type work (line 1283) | struct work
  type work (line 1284) | struct work
  type work (line 1284) | struct work
  type work (line 1285) | struct work
  type work (line 1285) | struct work
  type thr_info (line 1286) | struct thr_info
  type cgpu_info (line 1287) | struct cgpu_info
  type api_data_type (line 1289) | enum api_data_type {
  type api_data (line 1312) | struct api_data {
  type api_data (line 1321) | struct api_data
  type api_data (line 1321) | struct api_data
  type api_data (line 1322) | struct api_data
  type api_data (line 1322) | struct api_data
  type api_data (line 1323) | struct api_data
  type api_data (line 1323) | struct api_data
  type api_data (line 1324) | struct api_data
  type api_data (line 1324) | struct api_data
  type api_data (line 1325) | struct api_data
  type api_data (line 1325) | struct api_data
  type api_data (line 1326) | struct api_data
  type api_data (line 1326) | struct api_data
  type api_data (line 1327) | struct api_data
  type api_data (line 1327) | struct api_data
  type api_data (line 1328) | struct api_data
  type api_data (line 1328) | struct api_data
  type api_data (line 1329) | struct api_data
  type api_data (line 1329) | struct api_data
  type api_data (line 1330) | struct api_data
  type api_data (line 1330) | struct api_data
  type api_data (line 1331) | struct api_data
  type api_data (line 1331) | struct api_data
  type timeval (line 1331) | struct timeval
  type api_data (line 1332) | struct api_data
  type api_data (line 1332) | struct api_data
  type api_data (line 1333) | struct api_data
  type api_data (line 1333) | struct api_data
  type api_data (line 1334) | struct api_data
  type api_data (line 1334) | struct api_data
  type api_data (line 1335) | struct api_data
  type api_data (line 1335) | struct api_data
  type api_data (line 1336) | struct api_data
  type api_data (line 1336) | struct api_data
  type api_data (line 1337) | struct api_data
  type api_data (line 1337) | struct api_data
  type api_data (line 1338) | struct api_data
  type api_data (line 1338) | struct api_data
  type api_data (line 1339) | struct api_data
  type api_data (line 1339) | struct api_data
  type api_data (line 1340) | struct api_data
  type api_data (line 1340) | struct api_data
Condensed preview — 256 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,613K chars).
[
  {
    "path": ".gitattributes",
    "chars": 483,
    "preview": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs     diff=csharp\n*.sln"
  },
  {
    "path": ".gitignore",
    "chars": 2643,
    "preview": "#################\n## Eclipse\n#################\n\n*.pydevproject\n.project\n.metadata\nbin/\ntmp/\n*.tmp\n*.bak\n*.swp\n*~.nib\nloc"
  },
  {
    "path": "BeMicro/README.txt",
    "chars": 1747,
    "preview": "BeMicro port by litecoin forum member \"Minor\" https://forum.litecoin.net/index.php?action=profile;u=15431\n\n+------------"
  },
  {
    "path": "BeMicro/ltcminer.qpf",
    "chars": 1247,
    "preview": "# -------------------------------------------------------------------------- #\n#\n# Copyright (C) 1991-2010 Altera Corpor"
  },
  {
    "path": "BeMicro/ltcminer.qsf",
    "chars": 6806,
    "preview": "# -------------------------------------------------------------------------- #\n#\n# Copyright (C) 1991-2010 Altera Corpor"
  },
  {
    "path": "BeMicro/ltcminer.sdc",
    "chars": 797,
    "preview": "##\n#\n# Copyright (c) 2011 fpgaminer@bitcoin-mining.com\n#\n#\n#\n# This program is free software: you can redistribute it an"
  },
  {
    "path": "DE0-Nano/ltcminer.qpf",
    "chars": 1247,
    "preview": "# -------------------------------------------------------------------------- #\n#\n# Copyright (C) 1991-2010 Altera Corpor"
  },
  {
    "path": "DE0-Nano/ltcminer.qsf",
    "chars": 6160,
    "preview": "# -------------------------------------------------------------------------- #\n#\n# Copyright (C) 1991-2010 Altera Corpor"
  },
  {
    "path": "DE0-Nano/ltcminer.sdc",
    "chars": 797,
    "preview": "##\n#\n# Copyright (c) 2011 fpgaminer@bitcoin-mining.com\n#\n#\n#\n# This program is free software: you can redistribute it an"
  },
  {
    "path": "DE2-115-Single/README.txt",
    "chars": 1055,
    "preview": "Single core version for DE2-115 using full sized scratchpad (UNTESTED)\n\nFor multipe cores simply replicate hashcore with"
  },
  {
    "path": "DE2-115-Single/ltcminer.qpf",
    "chars": 1264,
    "preview": "# -------------------------------------------------------------------------- #\n#\n# Copyright (C) 1991-2010 Altera Corpor"
  },
  {
    "path": "DE2-115-Single/ltcminer.qsf",
    "chars": 4691,
    "preview": "# -------------------------------------------------------------------------- #\n#\n# Copyright (C) 1991-2010 Altera Corpor"
  },
  {
    "path": "DE2-115-Single/ltcminer.sdc",
    "chars": 797,
    "preview": "##\n#\n# Copyright (c) 2011 fpgaminer@bitcoin-mining.com\n#\n#\n#\n# This program is free software: you can redistribute it an"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/README.txt",
    "chars": 2345,
    "preview": "Mining software for ltcminer.\n\nYou will need to install python 2.7, then ...\n\nFrom the fpgaminer/project/Verilog_Xilinx_"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/ltcminer-testmode.py",
    "chars": 8658,
    "preview": "#!/usr/bin/env python\n\n# by teknohog\n\n# Python wrapper for Xilinx Serial Miner\n\n# Host/user configuration is NOT USED in"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/ltcminer.py",
    "chars": 7560,
    "preview": "#!/usr/bin/env python\n\n# by teknohog\n\n# Python wrapper for Xilinx Serial Miner\n\n# CONFIGURATION - CHANGE THIS TO YOUR AC"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/CHANGES.txt",
    "chars": 13700,
    "preview": "========================\n pySerial Release Notes\n========================\n\nVersion 1.0     13 Feb 2002\n-----------------"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/LICENSE.txt",
    "chars": 2850,
    "preview": "Copyright (c) 2001-2011 Chris Liechti <cliechti@gmx.net>;\nAll Rights Reserved.\n\nThis is the Python license. In short, yo"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/MANIFEST.in",
    "chars": 968,
    "preview": "include README.txt\ninclude LICENSE.txt\ninclude CHANGES.txt\ninclude MANIFEST.in\ninclude setup.py\n\ninclude examples/enhanc"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/PKG-INFO",
    "chars": 1399,
    "preview": "Metadata-Version: 1.0\nName: pyserial\nVersion: 2.6\nSummary: Python Serial Port Extension\nHome-page: http://pyserial.sourc"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/README.txt",
    "chars": 1237,
    "preview": "==========\n pySerial\n==========\n\nOverview\n========\nThis module encapsulates the access for the serial port. It provides "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/Makefile",
    "chars": 2997,
    "preview": "# Makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS    =\nSPHINXBUILD "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/appendix.rst",
    "chars": 5896,
    "preview": "==========\n Appendix\n==========\n\nHow To\n======\n\nEnable :rfc:`2217` in programs using pySerial.\n    Patch the code where "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/conf.py",
    "chars": 6524,
    "preview": "# -*- coding: utf-8 -*-\n#\n# pySerial documentation build configuration file, created by\n# sphinx-quickstart on Tue Jul 2"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/examples.rst",
    "chars": 14262,
    "preview": ".. _examples:\n\n==========\n Examples\n==========\n\n.. _miniterm:\n\nMiniterm\n========\nThis is a console application that prov"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/index.rst",
    "chars": 979,
    "preview": ".. pySerial documentation master file\n\nWelcome to pySerial's documentation\n===================================\n\nThis mod"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/pyparallel.rst",
    "chars": 4310,
    "preview": "============\n pyParallel\n============\n\n.. note:: This module is in development (since years ;-)\n\nOverview\n========\nThis "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/pyserial.rst",
    "chars": 3803,
    "preview": "==========\n pySerial\n==========\n\nOverview\n========\nThis module encapsulates the access for the serial port. It provides "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/pyserial_api.rst",
    "chars": 29114,
    "preview": "==============\n pySerial API\n==============\n\n.. module:: serial\n\nClasses\n=======\n\nNative ports\n------------\n\n.. class:: "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/documentation/shortintro.rst",
    "chars": 3353,
    "preview": "====================\n Short introduction\n====================\n\nOpening serial ports\n====================\n\nOpen port 0 at"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/enhancedserial.py",
    "chars": 2169,
    "preview": "#!/usr/bin/env python\n\"\"\"Enhanced Serial Port class\npart of pyserial (http://pyserial.sf.net)  (C)2002 cliechti@gmx.net\n"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/port_publisher.py",
    "chars": 16973,
    "preview": "#! /usr/bin/env python\n\"\"\"\\\nMulti-port serial<->TCP/IP forwarder.\n- RFC 2217\n- check existence of serial port periodical"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/port_publisher.sh",
    "chars": 1054,
    "preview": "#! /bin/sh\n# daemon starter script\n# based on skeleton from Debian GNU/Linux\n# cliechti at gmx.net\n\nPATH=/usr/local/sbin"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/rfc2217_server.py",
    "chars": 6685,
    "preview": "#!/usr/bin/env python\n\n# (C) 2009 Chris Liechti <cliechti@gmx.net>\n# redirect data from a TCP/IP connection to a serial "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/scan.py",
    "chars": 762,
    "preview": "#! /usr/bin/env python\n\"\"\"\\\nScan for serial ports.\n\nPart of pySerial (http://pyserial.sf.net)\n(C) 2002-2003 <cliechti@gm"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/scanlinux.py",
    "chars": 481,
    "preview": "#! /usr/bin/env python\n\"\"\"\\\nScan for serial ports. Linux specific variant that also includes USB/Serial\nadapters.\n\nPart "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/scanwin32.py",
    "chars": 8092,
    "preview": "import ctypes\nimport re\n\ndef ValidHandle(value):\n    if value == 0:\n        raise ctypes.WinError()\n    return value\n\nNU"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/setup-miniterm-py2exe.py",
    "chars": 609,
    "preview": "# setup script for py2exe to create the miniterm.exe\n# $Id: setup-miniterm-py2exe.py,v 1.1 2005-09-21 19:51:19 cliechti "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/setup-rfc2217_server-py2exe.py",
    "chars": 518,
    "preview": "# setup script for py2exe to create the miniterm.exe\n# $Id: setup-rfc2217_server-py2exe.py 320 2009-08-07 18:22:49Z clie"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/setup-wxTerminal-py2exe.py",
    "chars": 917,
    "preview": "# This is a setup.py example script for the use with py2exe\nfrom distutils.core import setup\nimport py2exe\nimport sys, o"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/tcp_serial_redirect.py",
    "chars": 10530,
    "preview": "#!/usr/bin/env python\n\n# (C) 2002-2009 Chris Liechti <cliechti@gmx.net>\n# redirect data from a TCP/IP connection to a se"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/wxSerialConfigDialog.py",
    "chars": 11779,
    "preview": "#!/usr/bin/env python\n# generated by wxGlade 0.3.1 on Thu Oct 02 23:25:44 2003\n\n#from wxPython.wx import *\nimport wx\nimp"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/wxSerialConfigDialog.wxg",
    "chars": 13539,
    "preview": "<?xml version=\"1.0\"?>\n<!-- generated by wxGlade 0.3.1 on Fri Oct 03 01:53:04 2003 -->\n\n<application path=\"D:\\prog\\python"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/wxTerminal.py",
    "chars": 13531,
    "preview": "#!/usr/bin/env python\n# generated by wxGlade 0.3.1 on Fri Oct 03 23:23:45 2003\n\n#from wxPython.wx import *\nimport wx\nimp"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/examples/wxTerminal.wxg",
    "chars": 5645,
    "preview": "<?xml version=\"1.0\"?>\n<!-- generated by wxGlade 0.3.1 on Sat Oct 04 02:41:48 2003 -->\n\n<application path=\"D:\\prog\\python"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/__init__.py",
    "chars": 2796,
    "preview": "#!/usr/bin/env python \n\n# portable serial port access with python\n# this is a wrapper module for different platform impl"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/rfc2217.py",
    "chars": 58347,
    "preview": "#! python\n#\n# Python Serial Port Extension for Win32, Linux, BSD, Jython\n# see __init__.py\n#\n# This module implements a "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/serialcli.py",
    "chars": 10037,
    "preview": "#! python\n# Python Serial Port Extension for Win32, Linux, BSD, Jython and .NET/Mono\n# serial driver for .NET/Mono (Iron"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/serialjava.py",
    "chars": 9284,
    "preview": "#!jython\n#\n# Python Serial Port Extension for Win32, Linux, BSD, Jython\n# module for serial IO for Jython and JavaComm\n#"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/serialposix.py",
    "chars": 24436,
    "preview": "#!/usr/bin/env python\n#\n# Python Serial Port Extension for Win32, Linux, BSD, Jython\n# module for serial IO for POSIX co"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/serialutil.py",
    "chars": 19266,
    "preview": "#! python\n# Python Serial Port Extension for Win32, Linux, BSD, Jython\n# see __init__.py\n#\n# (C) 2001-2010 Chris Liechti"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/serialwin32.py",
    "chars": 16477,
    "preview": "#! python\n# Python Serial Port Extension for Win32, Linux, BSD, Jython\n# serial driver for win32\n# see __init__.py\n#\n# ("
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/sermsdos.py",
    "chars": 5848,
    "preview": "# sermsdos.py\n#\n# History:\n#\n#   3rd September 2002                      Dave Haynes\n#   1. First defined\n#\n# Although t"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/tools/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/tools/list_ports.py",
    "chars": 2975,
    "preview": "#!/usr/bin/env python\n\n# portable serial port access with python\n# this is a wrapper module for different platform imple"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/tools/list_ports_posix.py",
    "chars": 7176,
    "preview": "import glob\nimport sys\nimport os\nimport re\n\ntry:\n    import subprocess\nexcept ImportError:\n    def popen(argv):\n        "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/tools/list_ports_windows.py",
    "chars": 7703,
    "preview": "import ctypes\nimport re\n\ndef ValidHandle(value, func, arguments):\n    if value == 0:\n        raise ctypes.WinError()\n   "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/tools/miniterm.py",
    "chars": 26094,
    "preview": "#!/usr/bin/env python\n\n# Very simple serial terminal\n# (C)2002-2011 Chris Liechti <cliechti@gmx.net>\n\n# Input characters"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/urlhandler/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/urlhandler/protocol_hwgrep.py",
    "chars": 1526,
    "preview": "#! python\n#\n# Python Serial Port Extension for Win32, Linux, BSD, Jython\n# see __init__.py\n#\n# This module implements a "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/urlhandler/protocol_loop.py",
    "chars": 9513,
    "preview": "#! python\n#\n# Python Serial Port Extension for Win32, Linux, BSD, Jython\n# see __init__.py\n#\n# This module implements a "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/urlhandler/protocol_rfc2217.py",
    "chars": 307,
    "preview": "#! python\n#\n# Python Serial Port Extension for Win32, Linux, BSD, Jython\n# see ../__init__.py\n#\n# This is a thin wrapper"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/urlhandler/protocol_socket.py",
    "chars": 9675,
    "preview": "#! python\n#\n# Python Serial Port Extension for Win32, Linux, BSD, Jython\n# see __init__.py\n#\n# This module implements a "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/serial/win32.py",
    "chars": 10120,
    "preview": "from ctypes import *\nfrom ctypes.wintypes import HANDLE\nfrom ctypes.wintypes import BOOL\nfrom ctypes.wintypes import LPC"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/setup.py",
    "chars": 3215,
    "preview": "# setup.py for pySerial\n#\n# Windows installer:\n#   \"python setup.py bdist_wininst\"\n#\n# Direct install (all systems):\n#  "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/test/run_all_tests.py",
    "chars": 1382,
    "preview": "#! /usr/bin/env python\n\n\"\"\"\\\nUnitTest runner. This one searches for all files named test_*.py and collects\nall test case"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/test/test.py",
    "chars": 7824,
    "preview": "#! /usr/bin/env python\n# Python Serial Port Extension for Win32, Linux, BSD, Jython\n# see __init__.py\n#\n# (C) 2001-2008 "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/test/test_advanced.py",
    "chars": 7061,
    "preview": "#!/usr/bin/env python\n# needs at least python 2.2.3\n\n# Python Serial Port Extension for Win32, Linux, BSD, Jython\n# see "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/test/test_high_load.py",
    "chars": 2292,
    "preview": "#!/usr/bin/env python\n#Python Serial Port Extension for Win32, Linux, BSD, Jython\n#see __init__.py\n#\n#(C) 2001-2003 Chri"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/test/test_iolib.py",
    "chars": 2400,
    "preview": "#! /usr/bin/env python\n#\n# Python Serial Port Extension for Win32, Linux, BSD, Jython\n# see __init__.py\n#\n# (C) 2001-200"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/test/test_readline.py",
    "chars": 3293,
    "preview": "#! /usr/bin/env python\n# Python Serial Port Extension for Win32, Linux, BSD, Jython\n# see __init__.py\n#\n# (C) 2010 Chris"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/pyserial-2.6/test/test_url.py",
    "chars": 1624,
    "preview": "#! /usr/bin/env python\n# Python Serial Port Extension for Win32, Linux, BSD, Jython\n# see __init__.py\n#\n# (C) 2001-2008 "
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/__init__.py",
    "chars": 1125,
    "preview": "\n\"\"\"\n  Copyright (c) 2007 Jan-Klaas Kollhof\n\n  This file is part of jsonrpc.\n\n  jsonrpc is free software; you can redist"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/_tests/__init__.py",
    "chars": 800,
    "preview": "\n\"\"\"\n  Copyright (c) 2007 Jan-Klaas Kollhof\n\n  This file is part of jsonrpc.\n\n  jsonrpc is free software; you can redist"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/_tests/test_cgiwrapper.py",
    "chars": 1587,
    "preview": "\n\"\"\"\n  Copyright (c) 2007 Jan-Klaas Kollhof\n\n  This file is part of jsonrpc.\n\n  jsonrpc is free software; you can redist"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/_tests/test_json.py",
    "chars": 5750,
    "preview": "\n\"\"\"\n  Copyright (c) 2007 Jan-Klaas Kollhof\n\n  This file is part of jsonrpc.\n\n  jsonrpc is free software; you can redist"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/_tests/test_modpywrapper.py",
    "chars": 2646,
    "preview": "\n\"\"\"\n  Copyright (c) 2007 Jan-Klaas Kollhof\n\n  This file is part of jsonrpc.\n\n  jsonrpc is free software; you can redist"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/_tests/test_proxy.py",
    "chars": 1953,
    "preview": "\n\"\"\"\n  Copyright (c) 2007 Jan-Klaas Kollhof\n\n  This file is part of jsonrpc.\n\n  jsonrpc is free software; you can redist"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/_tests/test_serviceHandler.py",
    "chars": 6079,
    "preview": "\n\"\"\"\n  Copyright (c) 2007 Jan-Klaas Kollhof\n\n  This file is part of jsonrpc.\n\n  jsonrpc is free software; you can redist"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/cgiwrapper.py",
    "chars": 1461,
    "preview": "import sys, os\nfrom jsonrpc import ServiceHandler\n\nclass CGIServiceHandler(ServiceHandler):\n    def __init__(self, servi"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/json.py",
    "chars": 7252,
    "preview": "\n\"\"\"\n  Copyright (c) 2007 Jan-Klaas Kollhof\n\n  This file is part of jsonrpc.\n\n  jsonrpc is free software; you can redist"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/modpywrapper.py",
    "chars": 1493,
    "preview": "import sys, os\nfrom jsonrpc import ServiceHandler, ServiceException\n\n\nclass ServiceImplementaionNotFound(ServiceExceptio"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/proxy.py",
    "chars": 1711,
    "preview": "\n\"\"\"\n  Copyright (c) 2007 Jan-Klaas Kollhof\n\n  This file is part of jsonrpc.\n\n  jsonrpc is free software; you can redist"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/python-jsonrpc/jsonrpc/serviceHandler.py",
    "chars": 3239,
    "preview": "\n\"\"\"\n  Copyright (c) 2007 Jan-Klaas Kollhof\n\n  This file is part of jsonrpc.\n\n  jsonrpc is free software; you can redist"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/python-jsonrpc/run-tests.py",
    "chars": 1278,
    "preview": "#!/usr/bin/env python\n\n\"\"\"\n  Copyright (c) 2007 Jan-Klaas Kollhof\n\n  This file is part of jsonrpc.\n\n  jsonrpc is free so"
  },
  {
    "path": "ICARUS-LX150/MiningSoftware/python-jsonrpc/setup.py",
    "chars": 376,
    "preview": "#!/usr/bin/env python\n\nfrom distutils.core import setup\n\nsetup(name = \"jsonrpc\",\n    version = \"0.01\",\n    description ="
  },
  {
    "path": "ICARUS-LX150/README.txt",
    "chars": 2105,
    "preview": "This is a multicore proof of concept litecoin miner for ngzhang's Icarus/Lancelot board.\n\nI targeted this board as it is"
  },
  {
    "path": "ICARUS-LX150/dyn_pll_ctrl.v",
    "chars": 3424,
    "preview": "module dyn_pll_ctrl # (parameter SPEED_MHZ = 25, parameter SPEED_LIMIT = 100, parameter SPEED_MIN = 25, parameter OSC_MH"
  },
  {
    "path": "ICARUS-LX150/hub_core.v",
    "chars": 2270,
    "preview": "module hub_core (uart_clk, new_nonces, golden_nonce, serial_send, serial_busy, slave_nonces);\n   parameter SLAVES = 2;\n\n"
  },
  {
    "path": "ICARUS-LX150/ltcminer_icarus.ucf",
    "chars": 1443,
    "preview": "# Based on https://github.com/ngzhang/Icarus/blob/master/FPGA_project/Src/fpgaminer_top.ucf\n\nNET \"hash_clk\" TNM_NET = \"h"
  },
  {
    "path": "ICARUS-LX150/ltcminer_icarus.v",
    "chars": 11847,
    "preview": "/* ltcminer_icarus.v copyright kramble 2013\n * Based on https://github.com/teknohog/Open-Source-FPGA-Bitcoin-Miner/tree/"
  },
  {
    "path": "ICARUS-LX150/pbkdfengine.v",
    "chars": 20275,
    "preview": "/* pbkdfengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "ICARUS-LX150/pwm_fade.v",
    "chars": 1637,
    "preview": "// When triggered, turn the output to maximum and start fading to black\n\n// by teknohog\n\nmodule pwm_fade (clk, trigger, "
  },
  {
    "path": "ICARUS-LX150/salsa_slowsixteen.v",
    "chars": 9002,
    "preview": "/* salsa_slowsixteen.v\n*\n* Copyright (c) 2013 kramble\n* Derived from scrypt.c Copyright 2009 Colin Percival, 2011 ArtFor"
  },
  {
    "path": "ICARUS-LX150/salsaengine.v",
    "chars": 20388,
    "preview": "/* salsaengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "ICARUS-LX150/serial.v",
    "chars": 4421,
    "preview": "// by teknohog, replaces virtual_wire by rs232\n\n// Now using fpgaminer's uart code instead of fpga4fun's. Besides\n// GPL"
  },
  {
    "path": "ICARUS-LX150/serial_hub.v",
    "chars": 1178,
    "preview": "module slave_receive # (\n\tparameter comm_clk_frequency = 100000000,\n\tparameter baud_rate = 115200\n) (clk, RxD, nonce, ne"
  },
  {
    "path": "ICARUS-LX150/test_icarus.v",
    "chars": 3660,
    "preview": "// Testbench for ltcminer_icarus.v\n\n`timescale 1ns/1ps\n\n`ifdef SIM\t\t\t\t\t// Avoids wrong top selected if included in ISE/P"
  },
  {
    "path": "ICARUS-LX150/uart_receiver.v",
    "chars": 3415,
    "preview": "/*\n*\n* Copyright (c) 2011-2013 fpgaminer@bitcoin-mining.com\n*\n*\n*\n* This program is free software: you can redistribute "
  },
  {
    "path": "ICARUS-LX150/uart_transmitter.v",
    "chars": 1700,
    "preview": "/*\n*\n* Copyright (c) 2011-2013 fpgaminer@bitcoin-mining.com\n*\n*\n*\n* This program is free software: you can redistribute "
  },
  {
    "path": "ICARUS-LX150/xilinx_dyn_pll.v",
    "chars": 3210,
    "preview": "////////////////////////////////////////////////////////////////////////////////\n// Copyright (c) 1995-2011 Xilinx, Inc."
  },
  {
    "path": "ICARUS-LX150/xilinx_pll.v",
    "chars": 3017,
    "preview": "////////////////////////////////////////////////////////////////////////////////\n// Copyright (c) 1995-2011 Xilinx, Inc."
  },
  {
    "path": "ICARUS-LX150/xilinx_ram.v",
    "chars": 546,
    "preview": "// xilinx_ram.v - inferring the ram seems to work fine\n\nmodule ram # ( parameter ADDRBITS=10 ) (\n\traddr,\n\twaddr,\n\tclock,"
  },
  {
    "path": "LICENSE.txt",
    "chars": 35147,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "README.txt",
    "chars": 3702,
    "preview": "An Open Source FPGA Litecoin (scrypt) miner\n\nThis code is distributed in the hope that it will be useful, but WITHOUT AN"
  },
  {
    "path": "bitstreams.txt",
    "chars": 943,
    "preview": "Bitstreams have been uploaded to dropbox ...\n\nexperimental/LX150-SPLIT 05-Sep-2013 12-14khash/sec\n----------------------"
  },
  {
    "path": "experimental/CM1/README.txt",
    "chars": 1504,
    "preview": "Litecoin miner Cairnsmore CM1 port\n\nWARNING This is experimental code which may DAMAGE YOUR CAIRNSMORE BOARD.\nUse at you"
  },
  {
    "path": "experimental/CM1/dcm_controller.v",
    "chars": 5810,
    "preview": "`timescale 1ns / 1ps\n//////////////////////////////////////////////////////////////////////////////////\n// Dynamic DCM C"
  },
  {
    "path": "experimental/CM1/flasher.v",
    "chars": 879,
    "preview": "`timescale 1ns / 1ps\n//////////////////////////////////////////////////////////////////////////////////\n// Simple Clock "
  },
  {
    "path": "experimental/CM1/hashvoodoo.ucf",
    "chars": 1757,
    "preview": "# UCF for a Cairnsmore1 board\nNET \"clk_n\" LOC = \"J1\" |IOSTANDARD = \"LVDS_33\";\t\t\t//25Mhz Differential Source Clock from C"
  },
  {
    "path": "experimental/CM1/hashvoodoo.v",
    "chars": 11641,
    "preview": "`timescale 1ns / 1ps\n//////////////////////////////////////////////////////////////////////////////////\n// HashVoodoo To"
  },
  {
    "path": "experimental/CM1/hashvoodoo_test.v",
    "chars": 1185,
    "preview": "`timescale 1ns / 1ps\n//////////////////////////////////////////////////////////////////////////////////\n// HashVoodoo Te"
  },
  {
    "path": "experimental/CM1/hub_core.v",
    "chars": 1755,
    "preview": "module hub_core (hash_clk, new_nonces, golden_nonce, serial_send, serial_busy, slave_nonces);\n   parameter SLAVES = 2;\n\n"
  },
  {
    "path": "experimental/CM1/main_dcm.v",
    "chars": 5673,
    "preview": "// file: main_dcm.v\n// \n// (c) Copyright 2008 - 2011 Xilinx, Inc. All rights reserved.\n// \n// This file contains confide"
  },
  {
    "path": "experimental/CM1/pbkdfengine.v",
    "chars": 20411,
    "preview": "/* pbkdfengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "experimental/CM1/pwm_fade.v",
    "chars": 1596,
    "preview": "// When triggered, turn the output to maximum and start fading to black\n\n// by teknohog\n\nmodule pwm_fade (clk, trigger, "
  },
  {
    "path": "experimental/CM1/salsa_slowsixteen.v",
    "chars": 9002,
    "preview": "/* salsa_slowsixteen.v\n*\n* Copyright (c) 2013 kramble\n* Derived from scrypt.c Copyright 2009 Colin Percival, 2011 ArtFor"
  },
  {
    "path": "experimental/CM1/salsaengine.v",
    "chars": 20388,
    "preview": "/* salsaengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "experimental/CM1/serial_core.v",
    "chars": 3082,
    "preview": "`timescale 1ns / 1ps\n//////////////////////////////////////////////////////////////////////////////////\n// New Serial Co"
  },
  {
    "path": "experimental/CM1/sha-256-functions.v",
    "chars": 1580,
    "preview": "/*\n*\n* Copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n*\n*\n* This program is free software: you can redistribute it an"
  },
  {
    "path": "experimental/CM1/sha256_transform.v",
    "chars": 5081,
    "preview": "/*\n*\n* Copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n*\n*\n* This program is free software: you can redistribute it an"
  },
  {
    "path": "experimental/CM1/uart.v",
    "chars": 1570,
    "preview": "`timescale 1ns / 1ps\n//////////////////////////////////////////////////////////////////////////////////\n// UART Module\n/"
  },
  {
    "path": "experimental/CM1/uart_baudgenerator.v",
    "chars": 1274,
    "preview": "`timescale 1ns / 1ps\n//////////////////////////////////////////////////////////////////////////////////\n// Baud Generato"
  },
  {
    "path": "experimental/CM1/uart_rx.v",
    "chars": 3836,
    "preview": "`timescale 1ns / 1ps\n//////////////////////////////////////////////////////////////////////////////////\n// UART RX Modul"
  },
  {
    "path": "experimental/CM1/uart_tx.v",
    "chars": 2725,
    "preview": "`timescale 1ns / 1ps\n//////////////////////////////////////////////////////////////////////////////////\n// UART TX Modul"
  },
  {
    "path": "experimental/CM1/xilinx_ram.v",
    "chars": 546,
    "preview": "// xilinx_ram.v - inferring the ram seems to work fine\n\nmodule ram # ( parameter ADDRBITS=10 ) (\n\traddr,\n\twaddr,\n\tclock,"
  },
  {
    "path": "experimental/DE2-115-SLOWSIXTEEN/README.txt",
    "chars": 668,
    "preview": "This is untested, but simulates OK, so it ought to work after a fashion\n(at least for the single core variant).\n\nI'm not"
  },
  {
    "path": "experimental/DE2-115-SLOWSIXTEEN/altera_pll.v",
    "chars": 3780,
    "preview": "module main_pll # (parameter SPEED_MHZ = 25) (inclk0, c0);\n\n\tinput\t  inclk0;\n\toutput\t  c0;\n\n\twire [4:0] sub_wire0;\n\twire"
  },
  {
    "path": "experimental/DE2-115-SLOWSIXTEEN/altera_virtual_wire.v",
    "chars": 1865,
    "preview": "/*\n*\n* Copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n*\n*\n* This program is free software: you can redistribute it an"
  },
  {
    "path": "experimental/DE2-115-SLOWSIXTEEN/ltcminer.qpf",
    "chars": 1264,
    "preview": "# -------------------------------------------------------------------------- #\n#\n# Copyright (C) 1991-2010 Altera Corpor"
  },
  {
    "path": "experimental/DE2-115-SLOWSIXTEEN/ltcminer.qsf",
    "chars": 4680,
    "preview": "# -------------------------------------------------------------------------- #\n#\n# Copyright (C) 1991-2010 Altera Corpor"
  },
  {
    "path": "experimental/DE2-115-SLOWSIXTEEN/ltcminer.sdc",
    "chars": 797,
    "preview": "##\n#\n# Copyright (c) 2011 fpgaminer@bitcoin-mining.com\n#\n#\n#\n# This program is free software: you can redistribute it an"
  },
  {
    "path": "experimental/DE2-115-SLOWSIXTEEN/ltcminer.v",
    "chars": 7404,
    "preview": "/* ltcminer.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program is"
  },
  {
    "path": "experimental/DE2-115-SLOWSIXTEEN/pbkdfengine.v",
    "chars": 20275,
    "preview": "/* pbkdfengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "experimental/DE2-115-SLOWSIXTEEN/salsa_slowsixteen.v",
    "chars": 9002,
    "preview": "/* salsa_slowsixteen.v\n*\n* Copyright (c) 2013 kramble\n* Derived from scrypt.c Copyright 2009 Colin Percival, 2011 ArtFor"
  },
  {
    "path": "experimental/DE2-115-SLOWSIXTEEN/salsaengine.v",
    "chars": 20435,
    "preview": "/* salsaengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "experimental/DE2-115-SLOWSIXTEEN/sha-256-functions.v",
    "chars": 1580,
    "preview": "/*\n*\n* Copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n*\n*\n* This program is free software: you can redistribute it an"
  },
  {
    "path": "experimental/DE2-115-SLOWSIXTEEN/sha256_transform.v",
    "chars": 5081,
    "preview": "/*\n*\n* Copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n*\n*\n* This program is free software: you can redistribute it an"
  },
  {
    "path": "experimental/DE2-115-SLOWSIXTEEN/sim_ram.v",
    "chars": 573,
    "preview": "// sim_ram.v - identical to xilinx_ram.v (use for altera simulation to avoid\n// the need to specify library path for the"
  },
  {
    "path": "experimental/DE2-115-SLOWSIXTEEN/test_ltcminer.v",
    "chars": 361,
    "preview": "// Testbench for ltcminer.v\n\n`timescale 1ns/1ps\n\nmodule test_ltcminer ();\n\n\treg clk = 1'b0;\n\t\n\t wire [7:0] LEDS_out;\n\tlt"
  },
  {
    "path": "experimental/LX150-EIGHT-A/README.txt",
    "chars": 871,
    "preview": "LX150-EIGHT-A\n\nEight threads running through a fully pipelined salsa (though we still roll it\nfour times and repeat for "
  },
  {
    "path": "experimental/LX150-EIGHT-A/ltcminer_icarus.ucf",
    "chars": 1228,
    "preview": "# Based on https://github.com/ngzhang/Icarus/blob/master/FPGA_project/Src/fpgaminer_top.ucf\n\nNET \"hash_clk\" TNM_NET = \"h"
  },
  {
    "path": "experimental/LX150-EIGHT-A/ltcminer_icarus.v",
    "chars": 8086,
    "preview": "/* ltcminer_icarus.v copyright kramble 2013\n * Based on https://github.com/teknohog/Open-Source-FPGA-Bitcoin-Miner/tree/"
  },
  {
    "path": "experimental/LX150-EIGHT-A/pbkdfengine.v",
    "chars": 18162,
    "preview": "/* pbkdfengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "experimental/LX150-EIGHT-A/salsa_piped.v",
    "chars": 8193,
    "preview": "/* salsa_piped.v ... fully registered salsa core (column and row results regs)\n*\n* Copyright (c) 2013 kramble\n* Derived "
  },
  {
    "path": "experimental/LX150-EIGHT-A/salsaengine.v",
    "chars": 20910,
    "preview": "/* salsaengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "experimental/LX150-EIGHT-A/sgen.c",
    "chars": 2060,
    "preview": "#include \"stdio.h\"\nint main()\n{\n\tint i; char c;\n\n\tfor (i=0; i<16; i++)\n\t\t\tprintf(\"reg [31:0] x%02dd1, x%02dd2, x%02dd3, "
  },
  {
    "path": "experimental/LX150-EIGHT-A/sgen.inc",
    "chars": 10561,
    "preview": "reg [31:0] x00d1, x00d2, x00d3, x00d4, x00d5, x00d6, x00d7, x00d8, x00d9;\nreg [31:0] x01d1, x01d2, x01d3, x01d4, x01d5, "
  },
  {
    "path": "experimental/LX150-EIGHT-A/test_icarus.v",
    "chars": 3431,
    "preview": "// Testbench for ltcminer_icarus.v\n\n`timescale 1ns/1ps\n\n`ifdef SIM\t\t\t\t\t// Avoids wrong top selected if included in ISE/P"
  },
  {
    "path": "experimental/LX150-EIGHT-A/xilinx_dpram.v",
    "chars": 546,
    "preview": "// xilinx_ram.v - inferring the ram seems to work fine\n\nmodule ram # ( parameter ADDRBITS=10 ) (\n\traddr,\n\twaddr,\n\tclock,"
  },
  {
    "path": "experimental/LX150-EIGHT-B/README.txt",
    "chars": 2093,
    "preview": "LX150-EIGHT-B\n\nEight threads running through a fully pipelined salsa (though we still roll it\nfour times and repeat for "
  },
  {
    "path": "experimental/LX150-EIGHT-B/dyn_pll_ctrl.v",
    "chars": 3424,
    "preview": "module dyn_pll_ctrl # (parameter SPEED_MHZ = 25, parameter SPEED_LIMIT = 100, parameter SPEED_MIN = 25, parameter OSC_MH"
  },
  {
    "path": "experimental/LX150-EIGHT-B/ltcminer-dynclock.py",
    "chars": 7569,
    "preview": "#!/usr/bin/env python\n\n# by teknohog\n\n# Python wrapper for Xilinx Serial Miner\n\n# CONFIGURATION - CHANGE THIS TO YOUR AC"
  },
  {
    "path": "experimental/LX150-EIGHT-B/ltcminer-test-dynclock.py",
    "chars": 8949,
    "preview": "#!/usr/bin/env python\n\n# by teknohog\n\n# Python wrapper for Xilinx Serial Miner\n\n# Host/user configuration is NOT USED in"
  },
  {
    "path": "experimental/LX150-EIGHT-B/ltcminer_icarus.ucf",
    "chars": 1443,
    "preview": "# Based on https://github.com/ngzhang/Icarus/blob/master/FPGA_project/Src/fpgaminer_top.ucf\n\nNET \"hash_clk\" TNM_NET = \"h"
  },
  {
    "path": "experimental/LX150-EIGHT-B/ltcminer_icarus.v",
    "chars": 11669,
    "preview": "/* ltcminer_icarus.v copyright kramble 2013\n * Based on https://github.com/teknohog/Open-Source-FPGA-Bitcoin-Miner/tree/"
  },
  {
    "path": "experimental/LX150-EIGHT-B/pbkdfengine.v",
    "chars": 19877,
    "preview": "/* pbkdfengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "experimental/LX150-EIGHT-B/salsa_piped.v",
    "chars": 8193,
    "preview": "/* salsa_piped.v ... fully registered salsa core (column and row results regs)\n*\n* Copyright (c) 2013 kramble\n* Derived "
  },
  {
    "path": "experimental/LX150-EIGHT-B/salsaengine.v",
    "chars": 21171,
    "preview": "/* salsaengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "experimental/LX150-EIGHT-B/sgen.c",
    "chars": 2060,
    "preview": "#include \"stdio.h\"\nint main()\n{\n\tint i; char c;\n\n\tfor (i=0; i<16; i++)\n\t\t\tprintf(\"reg [31:0] x%02dd1, x%02dd2, x%02dd3, "
  },
  {
    "path": "experimental/LX150-EIGHT-B/sgen.inc",
    "chars": 10561,
    "preview": "reg [31:0] x00d1, x00d2, x00d3, x00d4, x00d5, x00d6, x00d7, x00d8, x00d9;\nreg [31:0] x01d1, x01d2, x01d3, x01d4, x01d5, "
  },
  {
    "path": "experimental/LX150-EIGHT-B/test_icarus.v",
    "chars": 3660,
    "preview": "// Testbench for ltcminer_icarus.v\n\n`timescale 1ns/1ps\n\n`ifdef SIM\t\t\t\t\t// Avoids wrong top selected if included in ISE/P"
  },
  {
    "path": "experimental/LX150-EIGHT-B/xilinx_dpram.v",
    "chars": 546,
    "preview": "// xilinx_ram.v - inferring the ram seems to work fine\n\nmodule ram # ( parameter ADDRBITS=10 ) (\n\traddr,\n\twaddr,\n\tclock,"
  },
  {
    "path": "experimental/LX150-EIGHT-B/xilinx_dyn_pll.v",
    "chars": 3210,
    "preview": "////////////////////////////////////////////////////////////////////////////////\n// Copyright (c) 1995-2011 Xilinx, Inc."
  },
  {
    "path": "experimental/LX150-EIGHT-C/README.txt",
    "chars": 341,
    "preview": "LX150-EIGHT-C\n\nEight threads running through a fully pipelined salsa (though we still roll it\nfour times and repeat for "
  },
  {
    "path": "experimental/LX150-EIGHT-C/dyn_pll_ctrl.v",
    "chars": 3424,
    "preview": "module dyn_pll_ctrl # (parameter SPEED_MHZ = 25, parameter SPEED_LIMIT = 100, parameter SPEED_MIN = 25, parameter OSC_MH"
  },
  {
    "path": "experimental/LX150-EIGHT-C/ltcminer_icarus.ucf",
    "chars": 1443,
    "preview": "# Based on https://github.com/ngzhang/Icarus/blob/master/FPGA_project/Src/fpgaminer_top.ucf\n\nNET \"hash_clk\" TNM_NET = \"h"
  },
  {
    "path": "experimental/LX150-EIGHT-C/ltcminer_icarus.v",
    "chars": 11870,
    "preview": "/* ltcminer_icarus.v copyright kramble 2013\n * Based on https://github.com/teknohog/Open-Source-FPGA-Bitcoin-Miner/tree/"
  },
  {
    "path": "experimental/LX150-EIGHT-C/pbkdfengine.v",
    "chars": 19877,
    "preview": "/* pbkdfengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "experimental/LX150-EIGHT-C/salsa_piped.v",
    "chars": 8357,
    "preview": "/* salsa_piped.v ... fully registered salsa core (column and row results regs)\n*\n* Copyright (c) 2013 kramble\n* Derived "
  },
  {
    "path": "experimental/LX150-EIGHT-C/salsaengine.v",
    "chars": 22218,
    "preview": "/* salsaengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "experimental/LX150-EIGHT-C/sgen.c",
    "chars": 2060,
    "preview": "#include \"stdio.h\"\nint main()\n{\n\tint i; char c;\n\n\tfor (i=0; i<16; i++)\n\t\t\tprintf(\"reg [31:0] x%02dd1, x%02dd2, x%02dd3, "
  },
  {
    "path": "experimental/LX150-EIGHT-C/sgen.inc",
    "chars": 10561,
    "preview": "reg [31:0] x00d1, x00d2, x00d3, x00d4, x00d5, x00d6, x00d7, x00d8, x00d9;\nreg [31:0] x01d1, x01d2, x01d3, x01d4, x01d5, "
  },
  {
    "path": "experimental/LX150-EIGHT-C/test_icarus.v",
    "chars": 3660,
    "preview": "// Testbench for ltcminer_icarus.v\n\n`timescale 1ns/1ps\n\n`ifdef SIM\t\t\t\t\t// Avoids wrong top selected if included in ISE/P"
  },
  {
    "path": "experimental/LX150-EIGHT-C/xilinx_dpram.v",
    "chars": 709,
    "preview": "// xilinx_ram.v - inferring the ram seems to work fine\n\nmodule ram # ( parameter ADDRBITS=10 ) (\n\traddr,\n\twaddr,\n\tclock,"
  },
  {
    "path": "experimental/LX150-EIGHT-C/xilinx_dyn_pll.v",
    "chars": 3210,
    "preview": "////////////////////////////////////////////////////////////////////////////////\n// Copyright (c) 1995-2011 Xilinx, Inc."
  },
  {
    "path": "experimental/LX150-SIXTYFOUR-A/dyn_pll_ctrl.v",
    "chars": 3424,
    "preview": "module dyn_pll_ctrl # (parameter SPEED_MHZ = 25, parameter SPEED_LIMIT = 100, parameter SPEED_MIN = 25, parameter OSC_MH"
  },
  {
    "path": "experimental/LX150-SIXTYFOUR-A/ltcminer_icarus.ucf",
    "chars": 1443,
    "preview": "# Based on https://github.com/ngzhang/Icarus/blob/master/FPGA_project/Src/fpgaminer_top.ucf\n\nNET \"hash_clk\" TNM_NET = \"h"
  },
  {
    "path": "experimental/LX150-SIXTYFOUR-A/ltcminer_icarus.v",
    "chars": 12192,
    "preview": "/* ltcminer_icarus.v copyright kramble 2013\n * Based on https://github.com/teknohog/Open-Source-FPGA-Bitcoin-Miner/tree/"
  },
  {
    "path": "experimental/LX150-SIXTYFOUR-A/pbkdfengine.v",
    "chars": 20439,
    "preview": "/* pbkdfengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "experimental/LX150-SIXTYFOUR-A/salsa_piped.v",
    "chars": 11058,
    "preview": "/* salsa_piped.v ... fully registered salsa core (column and row results regs)\n*\n* Copyright (c) 2013 kramble\n* Derived "
  },
  {
    "path": "experimental/LX150-SIXTYFOUR-A/salsaengine.v",
    "chars": 19651,
    "preview": "/* salsaengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "experimental/LX150-SIXTYFOUR-A/sgen.c",
    "chars": 2060,
    "preview": "#include \"stdio.h\"\nint main()\n{\n\tint i; char c;\n\n\tfor (i=0; i<16; i++)\n\t\t\tprintf(\"reg [31:0] x%02dd1, x%02dd2, x%02dd3, "
  },
  {
    "path": "experimental/LX150-SIXTYFOUR-A/sgen.inc",
    "chars": 10561,
    "preview": "reg [31:0] x00d1, x00d2, x00d3, x00d4, x00d5, x00d6, x00d7, x00d8, x00d9;\nreg [31:0] x01d1, x01d2, x01d3, x01d4, x01d5, "
  },
  {
    "path": "experimental/LX150-SIXTYFOUR-A/test_icarus.v",
    "chars": 3660,
    "preview": "// Testbench for ltcminer_icarus.v\n\n`timescale 1ns/1ps\n\n`ifdef SIM\t\t\t\t\t// Avoids wrong top selected if included in ISE/P"
  },
  {
    "path": "experimental/LX150-SIXTYFOUR-A/xilinx_dpram.v",
    "chars": 546,
    "preview": "// xilinx_ram.v - inferring the ram seems to work fine\n\nmodule ram # ( parameter ADDRBITS=10 ) (\n\traddr,\n\twaddr,\n\tclock,"
  },
  {
    "path": "experimental/LX150-SIXTYFOUR-A/xilinx_dyn_pll.v",
    "chars": 3210,
    "preview": "////////////////////////////////////////////////////////////////////////////////\n// Copyright (c) 1995-2011 Xilinx, Inc."
  },
  {
    "path": "experimental/LX150-SLOWEIGHT-A/dyn_pll_ctrl.v",
    "chars": 3424,
    "preview": "module dyn_pll_ctrl # (parameter SPEED_MHZ = 25, parameter SPEED_LIMIT = 100, parameter SPEED_MIN = 25, parameter OSC_MH"
  },
  {
    "path": "experimental/LX150-SLOWEIGHT-A/ltcminer_icarus.ucf",
    "chars": 1443,
    "preview": "# Based on https://github.com/ngzhang/Icarus/blob/master/FPGA_project/Src/fpgaminer_top.ucf\n\nNET \"hash_clk\" TNM_NET = \"h"
  },
  {
    "path": "experimental/LX150-SLOWEIGHT-A/ltcminer_icarus.v",
    "chars": 12192,
    "preview": "/* ltcminer_icarus.v copyright kramble 2013\n * Based on https://github.com/teknohog/Open-Source-FPGA-Bitcoin-Miner/tree/"
  },
  {
    "path": "experimental/LX150-SLOWEIGHT-A/pbkdfengine.v",
    "chars": 20439,
    "preview": "/* pbkdfengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "experimental/LX150-SLOWEIGHT-A/salsa_sloweight.v",
    "chars": 8219,
    "preview": "/* salsa_sloweight.v\n*\n* Copyright (c) 2013 kramble\n* Derived from scrypt.c Copyright 2009 Colin Percival, 2011 ArtForz\n"
  },
  {
    "path": "experimental/LX150-SLOWEIGHT-A/salsaengine.v",
    "chars": 19655,
    "preview": "/* salsaengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  },
  {
    "path": "experimental/LX150-SLOWEIGHT-A/test_icarus.v",
    "chars": 3660,
    "preview": "// Testbench for ltcminer_icarus.v\n\n`timescale 1ns/1ps\n\n`ifdef SIM\t\t\t\t\t// Avoids wrong top selected if included in ISE/P"
  },
  {
    "path": "experimental/LX150-SLOWEIGHT-A/xilinx_dpram.v",
    "chars": 546,
    "preview": "// xilinx_ram.v - inferring the ram seems to work fine\n\nmodule ram # ( parameter ADDRBITS=10 ) (\n\traddr,\n\twaddr,\n\tclock,"
  },
  {
    "path": "experimental/LX150-SLOWEIGHT-A/xilinx_dyn_pll.v",
    "chars": 3210,
    "preview": "////////////////////////////////////////////////////////////////////////////////\n// Copyright (c) 1995-2011 Xilinx, Inc."
  },
  {
    "path": "experimental/LX150-SLOWSIXTEEN-A/dyn_pll_ctrl.v",
    "chars": 3424,
    "preview": "module dyn_pll_ctrl # (parameter SPEED_MHZ = 25, parameter SPEED_LIMIT = 100, parameter SPEED_MIN = 25, parameter OSC_MH"
  },
  {
    "path": "experimental/LX150-SLOWSIXTEEN-A/ltcminer_icarus.ucf",
    "chars": 1443,
    "preview": "# Based on https://github.com/ngzhang/Icarus/blob/master/FPGA_project/Src/fpgaminer_top.ucf\n\nNET \"hash_clk\" TNM_NET = \"h"
  },
  {
    "path": "experimental/LX150-SLOWSIXTEEN-A/ltcminer_icarus.v",
    "chars": 12192,
    "preview": "/* ltcminer_icarus.v copyright kramble 2013\n * Based on https://github.com/teknohog/Open-Source-FPGA-Bitcoin-Miner/tree/"
  },
  {
    "path": "experimental/LX150-SLOWSIXTEEN-A/pbkdfengine.v",
    "chars": 20439,
    "preview": "/* pbkdfengine.v\n*\n* Copyright (c) 2013 kramble\n* Parts copyright (c) 2011 fpgaminer@bitcoin-mining.com\n*\n* This program"
  }
]

// ... and 56 more files (download for full content)

About this extraction

This page contains the full source code of the kramble/FPGA-Litecoin-Miner GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 256 files (2.3 MB), approximately 621.6k tokens, and a symbol index with 1265 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!