2015-03-27 01:27:30 +08:00
|
|
|
import json
|
2015-04-11 06:32:08 +08:00
|
|
|
import yaml
|
2015-03-27 01:27:30 +08:00
|
|
|
import time
|
|
|
|
|
2015-04-11 06:32:08 +08:00
|
|
|
DB_FILE = 'pi-pinout.yaml'
|
|
|
|
SETTINGS_FILE = 'settings.yaml'
|
2015-03-27 01:27:30 +08:00
|
|
|
|
|
|
|
pins = None
|
|
|
|
settings = None
|
|
|
|
|
2015-11-18 21:52:15 +08:00
|
|
|
|
2015-04-18 23:44:59 +08:00
|
|
|
def get_setting(setting, default = None):
|
|
|
|
if setting in settings and settings[setting] != None:
|
2015-04-11 06:32:08 +08:00
|
|
|
return settings[setting]
|
2015-04-18 23:44:59 +08:00
|
|
|
return default
|
2015-04-11 06:32:08 +08:00
|
|
|
|
2015-11-18 21:52:15 +08:00
|
|
|
|
2015-03-27 01:27:30 +08:00
|
|
|
def render_html(*args, **kwargs):
|
|
|
|
html = args[0]
|
|
|
|
kwargs['v'] = str(int(time.time()))
|
|
|
|
for key in kwargs:
|
|
|
|
html = html.replace('{{' + key + '}}', kwargs[key])
|
|
|
|
return html
|
|
|
|
|
2015-11-18 21:52:15 +08:00
|
|
|
|
2015-03-27 01:27:30 +08:00
|
|
|
def bcm_to_physical(pin):
|
|
|
|
for idx in pins:
|
|
|
|
compare_pin = pins[idx]
|
|
|
|
if 'scheme' in compare_pin:
|
|
|
|
if 'bcm' in compare_pin['scheme']:
|
|
|
|
if compare_pin['scheme']['bcm'] == int(pin):
|
|
|
|
#print("Mapping BCM{} to {}".format(pin, str(idx)))
|
|
|
|
return str(idx)
|
|
|
|
|
2015-11-18 21:52:15 +08:00
|
|
|
|
2015-03-27 01:27:30 +08:00
|
|
|
def physical_to_bcm(pin):
|
|
|
|
pin = pins[pin]
|
|
|
|
if 'scheme' in pin:
|
|
|
|
if 'bcm' in pin['scheme']:
|
|
|
|
return str(pin['scheme']['bcm'])
|
|
|
|
return None
|
|
|
|
|
2015-11-18 21:52:15 +08:00
|
|
|
|
2015-03-27 01:27:30 +08:00
|
|
|
def physical_to_wiringpi(pin):
|
|
|
|
pin = pins[pin]
|
|
|
|
if 'scheme' in pin:
|
|
|
|
if 'wiringpi' in pin['scheme']:
|
|
|
|
return str(pin['scheme']['wiringpi'])
|
|
|
|
return None
|
|
|
|
|
2015-11-18 21:52:15 +08:00
|
|
|
|
2015-03-27 01:27:30 +08:00
|
|
|
def physical_to(pin, scheme='bcm'):
|
2015-11-18 21:52:15 +08:00
|
|
|
if scheme in ['bcm', 'wiringpi']:
|
2015-03-27 01:27:30 +08:00
|
|
|
pin = pins[pin]
|
|
|
|
if 'scheme' in pin:
|
|
|
|
if scheme in pin['scheme']:
|
|
|
|
return str(pin['scheme'][scheme])
|
|
|
|
elif scheme == 'physical':
|
|
|
|
return pin
|
|
|
|
return None
|
|
|
|
|
2015-11-18 21:52:15 +08:00
|
|
|
|
2015-11-14 07:16:37 +08:00
|
|
|
def load(lang='en'):
|
2015-03-27 01:27:30 +08:00
|
|
|
global pins, settings
|
2015-04-11 06:32:08 +08:00
|
|
|
if DB_FILE.endswith('.yaml'):
|
2015-11-18 21:52:15 +08:00
|
|
|
db = yaml.load(open('src/{}/{}'.format(lang, DB_FILE)).read())
|
2015-04-11 06:32:08 +08:00
|
|
|
else:
|
2015-11-18 21:52:15 +08:00
|
|
|
db = json.load(open('src/{}/{}'.format(lang, DB_FILE)))
|
2015-04-11 06:32:08 +08:00
|
|
|
if SETTINGS_FILE.endswith('.yaml'):
|
2015-11-18 21:52:15 +08:00
|
|
|
settings = yaml.load(open('src/{}/{}'.format(lang, SETTINGS_FILE)).read())
|
2015-04-11 06:32:08 +08:00
|
|
|
else:
|
2015-11-18 21:52:15 +08:00
|
|
|
settings = json.load(open('src/{}/{}'.format(lang, SETTINGS_FILE)))
|
2015-03-27 01:27:30 +08:00
|
|
|
pins = db['pins']
|
|
|
|
|
|
|
|
|