blob: ba13b6016f1aad6df474aa8f2b13bcaa9d27c710 [file] [log] [blame]
Norman James65a295a2015-09-26 22:21:10 -05001#!/usr/bin/env python
2
3import sys
4import subprocess
5import gobject
6import dbus
7import dbus.service
8import dbus.mainloop.glib
9import PropertyManager
10
11import Openbmc
12
Norman James19e45912015-10-04 20:19:41 -050013SENSOR_INTERFACE = "org.openbmc.SensorValue"
Norman Jamesdfdaca92015-09-27 22:11:15 -050014
15class IpmiBt(dbus.service.Object):
16 def __init__(self,bus,name):
17 dbus.service.Object.__init__(self,bus,name)
18
Norman James65a295a2015-09-26 22:21:10 -050019
20def getWatchdog():
21 obj = bus.get_object('org.openbmc.watchdog.Host',
22 '/org/openbmc/watchdog/HostWatchdog_0')
23 intf = dbus.Interface(obj, 'org.openbmc.Watchdog' )
24 return intf
25
26def getChassisControl():
27 obj = bus.get_object('org.openbmc.control.Chassis',
Norman Jamesa3e47c42015-10-18 14:43:10 -050028 '/org/openbmc/control/chassis0')
Norman James65a295a2015-09-26 22:21:10 -050029 intf = dbus.Interface(obj, 'org.openbmc.control.Chassis' )
30 return intf
31
32def prettyPrint(data):
33 for k in data.keys():
34 print k
35 for k2 in data[k].keys():
36 print "\t"+k2+" = "+str(data[k][k2])
37
Norman Jamesdfdaca92015-09-27 22:11:15 -050038
39
Norman James65a295a2015-09-26 22:21:10 -050040if __name__ == '__main__':
Norman James19e45912015-10-04 20:19:41 -050041 #dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
Norman James5e792e32015-10-07 17:36:17 -050042 bus = Openbmc.getDBus()
43
Norman James19e45912015-10-04 20:19:41 -050044 #name = dbus.service.BusName(DBUS_NAME,bus)
45 #mainloop = gobject.MainLoop()
Norman Jamesdfdaca92015-09-27 22:11:15 -050046
Norman James65a295a2015-09-26 22:21:10 -050047 cmd = sys.argv[1]
48 data = None
49 ipmi_id = dbus.Byte(0)
50 if (len(sys.argv) > 2):
Norman James19e45912015-10-04 20:19:41 -050051 ipmi_id = sys.argv[2]
Norman James65a295a2015-09-26 22:21:10 -050052 if (len(sys.argv)>3):
53 data = sys.argv[3]
54
55 if (cmd == "poweron"):
56 intf = getChassisControl()
57 intf.powerOn()
58 elif (cmd == "poweroff"):
59 intf = getChassisControl()
60 intf.powerOff()
Adriana Kobylak08d3bdb2015-10-20 16:59:14 -050061 elif (cmd == "getid"):
62 intf = getChassisControl()
63 id = intf.getID()
64 print id
Norman James65a295a2015-09-26 22:21:10 -050065 elif (cmd == "setsensor"):
Norman James19e45912015-10-04 20:19:41 -050066 intf_sys = Openbmc.getManagerInterface(bus,"System")
Norman James80191662015-10-14 09:40:02 -050067 obj_info = intf_sys.getObjectFromByteId("SENSOR",chr(int(ipmi_id)))
68 obj_path = obj_info[1]
69 bus_name = obj_info[0]
Norman James19e45912015-10-04 20:19:41 -050070 if (obj_path != "" and bus_name != ""):
71 obj = bus.get_object(bus_name,obj_path)
Norman James96da5c22015-10-15 10:17:06 -050072 intf = dbus.Interface(obj,)
Norman James19e45912015-10-04 20:19:41 -050073 intf.setValue(dbus.Byte(int(data)))
74
Norman James65a295a2015-09-26 22:21:10 -050075 elif (cmd == "getsensors"):
76 intf_sens = Openbmc.getManagerInterface(bus,"Sensors")
77 data = intf_sens.getSensors()
78 prettyPrint(data)
79 elif (cmd == "updatefru"):
Norman Jamesdfdaca92015-09-27 22:11:15 -050080 d = { 'manufacturer' : data }
Norman James19e45912015-10-04 20:19:41 -050081 intf_sys = Openbmc.getManagerInterface(bus,"System")
Norman James80191662015-10-14 09:40:02 -050082 c = chr(int(ipmi_id))
Norman Jamesa3e47c42015-10-18 14:43:10 -050083 print c
84 obj_info = intf_sys.getObjectFromByteId("FRU",c)
85 intf_name = obj_info[2]
Norman James80191662015-10-14 09:40:02 -050086 obj_path = obj_info[1]
87 bus_name = obj_info[0]
Norman James19e45912015-10-04 20:19:41 -050088 if (obj_path != "" and bus_name != ""):
89 obj = bus.get_object(bus_name,obj_path)
Norman Jamesa3e47c42015-10-18 14:43:10 -050090 intf = dbus.Interface(obj,intf_name)
Norman James19e45912015-10-04 20:19:41 -050091 intf.update(d)
92
Norman James65a295a2015-09-26 22:21:10 -050093 elif (cmd == "getfrus"):
Norman Jamesa3e47c42015-10-18 14:43:10 -050094 obj = bus.get_object('org.openbmc.managers.Inventory',
95 '/org/openbmc/inventory')
96 intf_fru = dbus.Interface(obj,'org.openbmc.Object.Enumerate')
97
98 data = intf_fru.enumerate()
Norman James19e45912015-10-04 20:19:41 -050099 for i in data:
Norman Jamesa3e47c42015-10-18 14:43:10 -0500100 print ">>>>>>>>"
101 print i
Norman James19e45912015-10-04 20:19:41 -0500102 for k in data[i].keys():
103 print k+" = "+str(data[i][k])
Norman James18998182015-10-11 21:54:53 -0500104 elif (cmd == "updatefwftp"):
Norman Jamesf066e872015-10-07 15:29:51 -0500105 obj = bus.get_object('org.openbmc.flash.Bios','/org/openbmc/flash/Bios_0')
106 intf = dbus.Interface(obj,"org.openbmc.Flash")
Norman James07bd1c72015-10-08 15:10:58 -0500107 intf.updateViaTftp(sys.argv[2],sys.argv[3])
Norman James18998182015-10-11 21:54:53 -0500108 elif (cmd == "updatefwfile"):
109 obj = bus.get_object('org.openbmc.flash.Bios','/org/openbmc/flash/Bios_0')
110 intf = dbus.Interface(obj,"org.openbmc.Flash")
111 intf.update(sys.argv[2])
Norman James31cda682015-10-06 16:52:43 -0500112 elif (cmd == "fwstatus"):
113 intf = Openbmc.getManagerInterface(bus,"Flash")
114 status = intf.getStatus()
115 for i in status:
116 print i+" = "+status[i]
Norman James65a295a2015-09-26 22:21:10 -0500117 elif (cmd == "pokewatchdog"):
Adriana Kobylak2cb27752015-10-19 16:23:14 -0500118 intf = getWatchdog()
Norman James65a295a2015-09-26 22:21:10 -0500119 intf.poke()
120 elif (cmd == "statewatchdog"):
Adriana Kobylak2cb27752015-10-19 16:23:14 -0500121 intf = getWatchdog()
Norman James65a295a2015-09-26 22:21:10 -0500122 intf.start()
Adriana Kobylak2cb27752015-10-19 16:23:14 -0500123 elif (cmd == "setwatchdog"):
124 count = int(sys.argv[2])
125 intf.set(count)
Norman James65a295a2015-09-26 22:21:10 -0500126 else:
127 print "Unsupported command"
128
129
130
131
132
133