api.py
152 lines
| 3.3 KiB
| text/x-python
|
PythonLexer
|
r51 | ''' | |
Created on Dec 2, 2014 | |||
@author: Miguel Urco | |||
eth_device decorator is used to implement an api to ethernet devices. | |||
When eth_device decorator is used it adds two parameters to any function (ip and port) | |||
#Definition | |||
@eth_device | |||
def enable_rf() | |||
cmd = "xxxxx" | |||
payload = "xxxxxx" | |||
return cmd, payload | |||
#How to call this function: | |||
answer = enable_rf(ip, port) | |||
''' | |||
import data | |||
from devices.jro_device import eth_device, IdClass | |||
ID_CLASS = IdClass["dds"] | |||
CMD_RESET =0X01 | |||
CMD_ENABLE =0X02 | |||
CMD_CHANGEIP =0X03 | |||
CMD_STATUS =0X04 | |||
CMD_ECHO =0XFE | |||
DDS_CMD_RESET =0X10 | |||
DDS_CMD_ENABLE_RF =0x11 | |||
# DDS_CMD_MULTIPLIER =0X12 | |||
# DDS_CMD_MODE =0x13 | |||
# DDS_CMD_FREQUENCY_A =0X14 | |||
# DDS_CMD_FREQUENCY_B =0x15 | |||
# DDS_CMD_PHASE_A =0X16 | |||
# DDS_CMD_PHASE_B =0x17 | |||
# DDS_CMD_AMPLITUDE_1 =0X19 #Se han invertido la posicion de los canales | |||
# DDS_CMD_AMPLITUDE_2 =0x18 #en el PCB | |||
DDS_CMD_WRITE =0x50 | |||
DDS_CMD_READ =0x8000 | |||
@eth_device(ID_CLASS) | |||
def reset(): | |||
cmd = CMD_RESET | |||
payload = "" | |||
return cmd, payload | |||
@eth_device(ID_CLASS) | |||
def change_ip(ip, mask="255.255.255.0", gateway="0.0.0.0"): | |||
cmd = CMD_CHANGEIP | |||
payload = ip + '/' + mask + '/' + gateway | |||
return cmd, payload | |||
@eth_device(ID_CLASS) | |||
def status(): | |||
cmd = CMD_STATUS | |||
payload = "" | |||
return cmd, payload | |||
@eth_device(ID_CLASS) | |||
def echo(): | |||
cmd = CMD_ECHO | |||
payload = "" | |||
return cmd, payload | |||
@eth_device(ID_CLASS) | |||
def enable_rf(): | |||
cmd = DDS_CMD_ENABLE_RF | |||
payload = chr(0x01) | |||
return cmd, payload | |||
@eth_device(ID_CLASS) | |||
def disable_rf(): | |||
cmd = DDS_CMD_ENABLE_RF | |||
payload = chr(0x00) | |||
return cmd, payload | |||
@eth_device(ID_CLASS) | |||
def read_all_device(): | |||
payload = "" | |||
return DDS_CMD_READ, payload | |||
@eth_device(ID_CLASS) | |||
def write_all_device(payload): | |||
return DDS_CMD_WRITE, payload | |||
def read_config(ip, port): | |||
""" | |||
Output: | |||
parms : Dictionary with keys | |||
multiplier : | |||
frequencyA : | |||
frequencyB : | |||
frequencyA_Mhz : | |||
frequencyB_Mhz : | |||
modulation : | |||
phaseA_degrees : | |||
phaseB_degrees : | |||
amplitudeI : | |||
amplitudeQ : | |||
""" | |||
payload = read_all_device(ip, port) | |||
return data.dds_str_to_dict(payload) | |||
def write_config(ip, port, parms): | |||
""" | |||
Input: | |||
ip : | |||
port : | |||
parms : Dictionary with keys | |||
multiplier : 4 to 20 | |||
frequencyA : 0 to (2**48-1) equivalent to: 0 - "Master clock" | |||
frequencyB : 0 to (2**48-1) equivalent to: 0 - "Master clock" | |||
modulation : 0 to 3 | |||
phaseA_degrees : 0 - 360 degrees | |||
phaseB_degrees : 0 - 360 degrees | |||
amplitudeI : 0 to (2**12-1) equivalent to: 0 - 100% | |||
amplitudeQ : 0 to (2**12-1) equivalent to: 0 - 100% | |||
""" | |||
payload = data.dict_to_dds_str(parms) | |||
answer = write_all_device(ip, port, payload) | |||
return answer | |||
if __name__ == '__main__': | |||
# print enable_rf("127.0.0.1", 2000) | |||
print read_config("127.0.0.1", 2000) |