''' 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)