@@ -813,36 +813,29 @@ class DaemonPipeServer(object):
813813 return err
814814 try :
815815 device_filter = (params .get ("device" ) or "" ).lower ()
816- all_objs = list (project .get_children (recursive = True ))
817816 status_list = []
818- # Properties to try for each object
819- status_props = [
820- 'IsOnline' , 'IsConnected' , 'State' , 'Online' , 'Connected' ,
821- 'Status' , 'IsActive' , 'IsRunning' , 'DeviceState' ,
822- 'get_IsOnline' , 'get_IsConnected' , 'get_State' ,
823- ]
824- for obj in all_objs :
817+
818+ app = _ide_online_helpers .get_active_application (project )
819+ if app is not None :
825820 try :
826- name = self ._obj_name (obj )
827- if not name :
828- continue
829- path = self ._build_path (obj )
830- entry = {"name" : name , "path" : path }
831- for prop in status_props :
832- try :
833- val = getattr (obj , prop )
834- if val is not None :
835- if callable (val ):
836- entry [prop ] = str (val ())
837- else :
838- entry [prop ] = str (val )
839- except Exception :
840- pass
841- if len (entry ) > 2 : # has at least one status prop
842- if not device_filter or device_filter in name .lower ():
843- status_list .append (entry )
821+ name = self ._obj_name (app )
844822 except Exception :
845- pass
823+ name = "Application"
824+ entry = {
825+ "name" : name ,
826+ "path" : self ._build_path (app ),
827+ "connected" : "false" ,
828+ }
829+ state = getattr (sys , "_codesys_daemon_loop" , {})
830+ online_app = state .get ("online_app" ) if isinstance (state , dict ) else None
831+ if online_app is not None :
832+ entry ["connected" ] = "true"
833+ try :
834+ entry ["application_state" ] = str (online_app .application_state )
835+ except Exception as e :
836+ entry ["application_state_error" ] = str (e )
837+ if not device_filter or device_filter in name .lower ():
838+ status_list .append (entry )
846839 return {"ok" : True , "data" : {"devices" : status_list }}
847840 except Exception as e :
848841 return {"ok" : False , "error" : "Device status error: {0}" .format (e )}
0 commit comments