generate_statuscode.py
Go to the documentation of this file.
1 # Load values from StatusCode.csv and then
2 # add values from StatusCodes_add.csv, but only
3 # if they are absent from StatusCode.csv
5  inputfile = open("StatusCodes_add.csv")
6  additional = {}
7  for line in inputfile:
8  name, val, doc = line.split(",", 2)
9  additional[int(val, 0)] = (name, val, doc)
10 
11  inputfile = open("StatusCodes.csv")
12  result = []
13  for line in inputfile:
14  name, val, doc = line.split(",", 2)
15  result.append((name, val, doc))
16  additional.pop(int(val, 0), None)
17  add = [ additional[k] for k in sorted(additional.keys()) ]
18  return add + result
19 
20 if __name__ == "__main__":
21  codes = status_codes()
22  outputfile = open("../opcua/ua/status_codes.py", "w")
23  outputfile.write("#AUTOGENERATED!!!\n")
24  outputfile.write("\n")
25  outputfile.write("from opcua.ua.uaerrors import UaStatusCodeError\n")
26  outputfile.write("from opcua.ua import ua_binary as uabin\n")
27  #outputfile.write("from enum import Enum\n")
28  outputfile.write("\n")
29 
30  outputfile.write("class StatusCodes(object):\n")
31  for name, val, doc in codes:
32  doc = doc.strip()
33  outputfile.write(" {0} = {1}\n".format(name, val))
34  outputfile.write("\n")
35  outputfile.write("\n")
36 
37  outputfile.write("code_to_name_doc = {\n")
38  for name, val, doc in codes:
39  doc = doc.strip()
40  doc = doc.replace("'", '"')
41  outputfile.write(" {0}: ('{1}', '{2}'),\n".format(val, name, doc))
42  outputfile.write("}\n")
43  outputfile.write("\n")
44  outputfile.write("\n")
45 
46  outputfile.write("""def get_name_and_doc(val):
47  if val in code_to_name_doc:
48  return code_to_name_doc[val]
49  else:
50  if uabin.test_bit(val, 31):
51  return 'Bad', 'Unknown StatusCode value: {}'.format(val)
52  elif uabin.test_bit(val, 30):
53  return 'UncertainIn', 'Unknown StatusCode value: {}'.format(val)
54  else:
55  return 'Good', 'Unknown StatusCode value: {}'.format(val)
56 """)
57 
58 
59 


ros_opcua_impl_python_opcua
Author(s): Denis Štogl , Daniel Draper
autogenerated on Tue Jan 19 2021 03:12:44