Index: /titan/plugins/plugin_skin_ID.txt
===================================================================
--- /titan/plugins/plugin_skin_ID.txt	(revision 41688)
+++ /titan/plugins/plugin_skin_ID.txt	(revision 41689)
@@ -28,4 +28,5 @@
 gmediarender: 279
 gmediarender: 280
+sispmctl 281
 TopfieldVFD: ---
 browser: ---
Index: /titan/plugins/sispmctl/sispmctl.c
===================================================================
--- /titan/plugins/sispmctl/sispmctl.c	(revision 41688)
+++ /titan/plugins/sispmctl/sispmctl.c	(revision 41689)
@@ -21,5 +21,5 @@
 
 	tmpstr = createpluginpath("/sispmctl/skin.xml", 0);
-	readscreen(tmpstr, 118, 1);
+	readscreen(tmpstr, 281, 1);
 	
 	
@@ -29,5 +29,5 @@
 	debug(10, "sispmctl Plugin loaded !!!");
 	
-	sispmctl_start();
+	sispmctl_start(2);
 }
 
@@ -35,8 +35,8 @@
 void deinit(void)
 {
-	sispmctl_stop();
+	sispmctl_stop(2);
 	pluginaktiv = 0;
 	debug(10, "sispmctl removed !!!");
-	delmarkedscreen(118);
+	delmarkedscreen(281);
 }
 
Index: /titan/plugins/sispmctl/sispmctl.h
===================================================================
--- /titan/plugins/sispmctl/sispmctl.h	(revision 41688)
+++ /titan/plugins/sispmctl/sispmctl.h	(revision 41689)
@@ -233,4 +233,5 @@
 	struct skin* g1_auto_off = getscreennode(sis_einstellungen, "g1_auto_off");
 	struct skin* g1_delay = getscreennode(sis_einstellungen, "g1_delay");
+	struct skin* g1_delayhard = getscreennode(sis_einstellungen, "g1_delayhard");
 	
 	struct skin* g2_name = getscreennode(sis_einstellungen, "g2_name");
@@ -239,4 +240,5 @@
 	struct skin* g2_auto_off = getscreennode(sis_einstellungen, "g2_auto_off");
 	struct skin* g2_delay = getscreennode(sis_einstellungen, "g2_delay");
+	struct skin* g2_delayhard = getscreennode(sis_einstellungen, "g2_delayhard");
 	
 	struct skin* g3_name = getscreennode(sis_einstellungen, "g3_name");
@@ -245,4 +247,5 @@
 	struct skin* g3_auto_off = getscreennode(sis_einstellungen, "g3_auto_off");
 	struct skin* g3_delay = getscreennode(sis_einstellungen, "g3_delay");
+	struct skin* g3_delayhard = getscreennode(sis_einstellungen, "g3_delayhard");
 	
 	struct skin* g4_name = getscreennode(sis_einstellungen, "g4_name");
@@ -251,4 +254,5 @@
 	struct skin* g4_auto_off = getscreennode(sis_einstellungen, "g4_auto_off");
 	struct skin* g4_delay = getscreennode(sis_einstellungen, "g4_delay");
+	struct skin* g4_delayhard = getscreennode(sis_einstellungen, "g4_delayhard");
 	
 	struct skin* tmp = NULL;
@@ -258,5 +262,7 @@
   
   addchoicebox(g1_auto_on, "off", _("off"));
-	addchoicebox(g1_auto_on, "on", _("on"));
+	addchoicebox(g1_auto_on, "both", _("both"));
+	addchoicebox(g1_auto_on, "standby", _("standby"));
+	addchoicebox(g1_auto_on, "deep", _("deep"));
 	setchoiceboxselection(g1_auto_on, getlist(myconfig, "g1_auto_on", NULL));
 	
@@ -273,7 +279,20 @@
 	addchoicebox(g1_delay, "2", "2");
 	addchoicebox(g1_delay, "3", "3");
-	addchoicebox(g1_delay, "4", "1");
-	addchoicebox(g1_delay, "5", "1");
+	addchoicebox(g1_delay, "4", "4");
+	addchoicebox(g1_delay, "5", "5");
+	addchoicebox(g1_delay, "6", "6");
+	addchoicebox(g1_delay, "7", "7");
+	addchoicebox(g1_delay, "8", "8");
+	addchoicebox(g1_delay, "9", "9");
+	addchoicebox(g1_delay, "10", "10");
 	setchoiceboxselection(g1_delay, getlist(myconfig, "g1_delay", NULL));
+	
+	addchoicebox(g1_delayhard, "0", "0");
+	addchoicebox(g1_delayhard, "1", "1");
+	addchoicebox(g1_delayhard, "2", "2");
+	addchoicebox(g1_delayhard, "3", "3");
+	addchoicebox(g1_delayhard, "4", "4");
+	addchoicebox(g1_delayhard, "5", "5");
+	setchoiceboxselection(g1_delayhard, getlist(myconfig, "g1_delayhard", NULL));
   
   changemask(g2_name, "abcdefghijklmnopqrstuvwxyz");
@@ -281,5 +300,7 @@
   
   addchoicebox(g2_auto_on, "off", _("off"));
-	addchoicebox(g2_auto_on, "on", _("on"));
+	addchoicebox(g2_auto_on, "both", _("both"));
+	addchoicebox(g2_auto_on, "standby", _("standby"));
+	addchoicebox(g2_auto_on, "deep", _("deep"));
 	setchoiceboxselection(g2_auto_on, getlist(myconfig, "g2_auto_on", NULL));
 	
@@ -296,7 +317,20 @@
 	addchoicebox(g2_delay, "2", "2");
 	addchoicebox(g2_delay, "3", "3");
-	addchoicebox(g2_delay, "4", "1");
-	addchoicebox(g2_delay, "5", "1");
+	addchoicebox(g2_delay, "4", "4");
+	addchoicebox(g2_delay, "5", "5");
+	addchoicebox(g2_delay, "6", "6");
+	addchoicebox(g2_delay, "7", "7");
+	addchoicebox(g2_delay, "8", "8");
+	addchoicebox(g2_delay, "9", "9");
+	addchoicebox(g2_delay, "10", "10");
 	setchoiceboxselection(g2_delay, getlist(myconfig, "g2_delay", NULL));
+	
+	addchoicebox(g2_delayhard, "0", "0");
+	addchoicebox(g2_delayhard, "1", "1");
+	addchoicebox(g2_delayhard, "2", "2");
+	addchoicebox(g2_delayhard, "3", "3");
+	addchoicebox(g2_delayhard, "4", "4");
+	addchoicebox(g2_delayhard, "5", "5");
+	setchoiceboxselection(g2_delayhard, getlist(myconfig, "g2_delayhard", NULL));
 	
 	changemask(g3_name, "abcdefghijklmnopqrstuvwxyz");
@@ -304,5 +338,7 @@
   
   addchoicebox(g3_auto_on, "off", _("off"));
-	addchoicebox(g3_auto_on, "on", _("on"));
+	addchoicebox(g3_auto_on, "both", _("both"));
+	addchoicebox(g3_auto_on, "standby", _("standby"));
+	addchoicebox(g3_auto_on, "deep", _("deep"));
 	setchoiceboxselection(g3_auto_on, getlist(myconfig, "g3_auto_on", NULL));
 	
@@ -319,7 +355,20 @@
 	addchoicebox(g3_delay, "2", "2");
 	addchoicebox(g3_delay, "3", "3");
-	addchoicebox(g3_delay, "4", "1");
-	addchoicebox(g3_delay, "5", "1");
+	addchoicebox(g3_delay, "4", "4");
+	addchoicebox(g3_delay, "5", "5");
+	addchoicebox(g3_delay, "6", "6");
+	addchoicebox(g3_delay, "7", "7");
+	addchoicebox(g3_delay, "8", "8");
+	addchoicebox(g3_delay, "9", "9");
+	addchoicebox(g3_delay, "10", "10");
 	setchoiceboxselection(g3_delay, getlist(myconfig, "g3_delay", NULL));
+	
+	addchoicebox(g3_delayhard, "0", "0");
+	addchoicebox(g3_delayhard, "1", "1");
+	addchoicebox(g3_delayhard, "2", "2");
+	addchoicebox(g3_delayhard, "3", "3");
+	addchoicebox(g3_delayhard, "4", "4");
+	addchoicebox(g3_delayhard, "5", "5");
+	setchoiceboxselection(g3_delayhard, getlist(myconfig, "g3_delayhard", NULL));
 	
 	changemask(g4_name, "abcdefghijklmnopqrstuvwxyz");
@@ -327,5 +376,7 @@
   
   addchoicebox(g4_auto_on, "off", _("off"));
-	addchoicebox(g4_auto_on, "on", _("on"));
+	addchoicebox(g4_auto_on, "both", _("both"));
+	addchoicebox(g4_auto_on, "standby", _("standby"));
+	addchoicebox(g4_auto_on, "deep", _("deep"));
 	setchoiceboxselection(g4_auto_on, getlist(myconfig, "g4_auto_on", NULL));
 	
@@ -342,7 +393,20 @@
 	addchoicebox(g4_delay, "2", "2");
 	addchoicebox(g4_delay, "3", "3");
-	addchoicebox(g4_delay, "4", "1");
-	addchoicebox(g4_delay, "5", "1");
+	addchoicebox(g4_delay, "4", "4");
+	addchoicebox(g4_delay, "5", "5");
+	addchoicebox(g4_delay, "6", "6");
+	addchoicebox(g4_delay, "7", "7");
+	addchoicebox(g4_delay, "8", "8");
+	addchoicebox(g4_delay, "9", "9");
+	addchoicebox(g4_delay, "10", "10");
 	setchoiceboxselection(g4_delay, getlist(myconfig, "g4_delay", NULL));
+	
+	addchoicebox(g4_delayhard, "0", "0");
+	addchoicebox(g4_delayhard, "1", "1");
+	addchoicebox(g4_delayhard, "2", "2");
+	addchoicebox(g4_delayhard, "3", "3");
+	addchoicebox(g4_delayhard, "4", "4");
+	addchoicebox(g4_delayhard, "5", "5");
+	setchoiceboxselection(g4_delayhard, getlist(myconfig, "g4_delayhard", NULL));
 	
   
@@ -365,4 +429,5 @@
 			addlist(myconfig, "g1_auto_off", g1_auto_off->ret);
 			addlist(myconfig, "g1_delay", g1_delay->ret);
+			addlist(myconfig, "g1_delayhard", g1_delayhard->ret);
 
 			addlist(myconfig, "g2_name", g2_name->ret);
@@ -371,4 +436,5 @@
 			addlist(myconfig, "g2_auto_off", g2_auto_off->ret);
 			addlist(myconfig, "g2_delay", g2_delay->ret);
+			addlist(myconfig, "g2_delayhard", g2_delayhard->ret);
 			
 			addlist(myconfig, "g3_name", g3_name->ret);
@@ -377,4 +443,5 @@
 			addlist(myconfig, "g3_auto_off", g3_auto_off->ret);
 			addlist(myconfig, "g3_delay", g3_delay->ret);
+			addlist(myconfig, "g3_delayhard", g3_delayhard->ret);
 			
 			addlist(myconfig, "g4_name", g4_name->ret);
@@ -383,4 +450,5 @@
 			addlist(myconfig, "g4_auto_off", g4_auto_off->ret);
 			addlist(myconfig, "g4_delay", g4_delay->ret);
+			addlist(myconfig, "g4_delayhard", g4_delayhard->ret);
 			writelist(myconfig, sispmctlconf);
 		}
@@ -391,5 +459,5 @@
 }
 
-void sispmctl_start()
+void sispmctl_start(int flag)
 {
 	char* cmd = NULL;
@@ -398,13 +466,23 @@
 	{
 	
-		if(ostrcmp(getlist(myconfig, "g1_auto_on", NULL), "on") == 0 )
+		if(ostrcmp(getlist(myconfig, "g1_auto_on", NULL), "both") == 0 || (ostrcmp(getlist(myconfig, "g1_auto_on", NULL), "standby") == 0 && flag == 1) || (ostrcmp(getlist(myconfig, "g1_auto_on", NULL), "deep") == 0 && flag == 2))
 		{
 			if(ostrcmp(getlist(myconfig, "g1_delay", NULL), "0") == 0)
-				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -o1 > /tmp/helpsis", 0, 0);
-			else
-			{
-				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A1 --Aafter ", 0, 0);
-				cmd = ostrcat(cmd, getlist(myconfig, "g1_delay", NULL), 1, 0);
-				cmd = ostrcat(cmd, " --Ado on", 1, 0);
+			{
+				if(ostrcmp(getlist(myconfig, "g1_delayhard", NULL), "0") == 0)
+					cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -o1 > /tmp/helpsis", 0, 0);
+				else
+				{
+					cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A1 --Aafter ", 0, 0);
+					cmd = ostrcat(cmd, getlist(myconfig, "g1_delay", NULL), 1, 0);
+					cmd = ostrcat(cmd, " --Ado on", 1, 0);
+				}
+			}
+			else
+			{
+				cmd = ostrcat("(sleep ", getlist(myconfig, "g1_delay", NULL), 0, 0);
+				cmd = ostrcat(cmd, "; ", 1, 0);
+				cmd = ostrcat(cmd, createpluginpath("/sispmctl/bin/sispmctl", 0), 1, 0);
+				cmd = ostrcat(cmd, " -o1) &", 1, 0);
 			}
 			system(cmd);
@@ -412,13 +490,23 @@
 			free(cmd); cmd = NULL;
 		}
-		if(ostrcmp(getlist(myconfig, "g2_auto_on", NULL), "on") == 0)
+		if(ostrcmp(getlist(myconfig, "g2_auto_on", NULL), "both") == 0 || (ostrcmp(getlist(myconfig, "g2_auto_on", NULL), "standby") == 0 && flag == 1) || (ostrcmp(getlist(myconfig, "g2_auto_on", NULL), "deep") == 0 && flag == 2))
 		{
 			if(ostrcmp(getlist(myconfig, "g2_delay", NULL), "0") == 0)
-				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -o2 > /tmp/helpsis", 0, 0);
-			else
-			{
-				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A2 --Aafter ", 0, 0);
-				cmd = ostrcat(cmd, getlist(myconfig, "g2_delay", NULL), 1, 0);
-				cmd = ostrcat(cmd, " --Ado on", 1, 0);
+			{
+				if(ostrcmp(getlist(myconfig, "g2_delayhard", NULL), "0") == 0)
+					cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -o2 > /tmp/helpsis", 0, 0);
+				else
+				{
+					cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A2 --Aafter ", 0, 0);
+					cmd = ostrcat(cmd, getlist(myconfig, "g2_delay", NULL), 1, 0);
+					cmd = ostrcat(cmd, " --Ado on", 1, 0);
+				}
+			}
+			else
+			{
+				cmd = ostrcat("(sleep ", getlist(myconfig, "g2_delay", NULL), 0, 0);
+				cmd = ostrcat(cmd, "; ", 1, 0);
+				cmd = ostrcat(cmd, createpluginpath("/sispmctl/bin/sispmctl", 0), 1, 0);
+				cmd = ostrcat(cmd, " -o2) &", 1, 0);				
 			}
 			system(cmd);
@@ -426,13 +514,24 @@
 			free(cmd); cmd = NULL;
 		}
-		if(ostrcmp(getlist(myconfig, "g3_auto_on", NULL), "on") == 0)
+		if(ostrcmp(getlist(myconfig, "g3_auto_on", NULL), "both") == 0 || (ostrcmp(getlist(myconfig, "g3_auto_on", NULL), "standby") == 0 && flag == 1) || (ostrcmp(getlist(myconfig, "g3_auto_on", NULL), "deep") == 0 && flag == 2))
 		{
 			if(ostrcmp(getlist(myconfig, "g3_delay", NULL), "0") == 0)
-				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -o3 > /tmp/helpsis", 0, 0);
-			else
-			{
-				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A3 --Aafter ", 0, 0);
-				cmd = ostrcat(cmd, getlist(myconfig, "g3_delay", NULL), 1, 0);
-				cmd = ostrcat(cmd, " --Ado on", 1, 0);
+			{
+				if(ostrcmp(getlist(myconfig, "g3_delayhard", NULL), "0") == 0)
+					cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -o3 > /tmp/helpsis", 0, 0);
+				else
+				{
+					cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A3 --Aafter ", 0, 0);
+					cmd = ostrcat(cmd, getlist(myconfig, "g3_delay", NULL), 1, 0);
+					cmd = ostrcat(cmd, " --Ado on", 1, 0);
+				}
+			}
+			else
+			{
+				cmd = ostrcat("(sleep ", getlist(myconfig, "g3_delay", NULL), 0, 0);
+				cmd = ostrcat(cmd, "; ", 1, 0);
+				cmd = ostrcat(cmd, createpluginpath("/sispmctl/bin/sispmctl", 0), 1, 0);
+				cmd = ostrcat(cmd, " -o3) &", 1, 0);
+
 			}
 			system(cmd);
@@ -440,13 +539,23 @@
 			free(cmd); cmd = NULL;
 		}
-		if(ostrcmp(getlist(myconfig, "g4_auto_on", NULL), "on") == 0)
+		if(ostrcmp(getlist(myconfig, "g4_auto_on", NULL), "both") == 0 || (ostrcmp(getlist(myconfig, "g4_auto_on", NULL), "standby") == 0 && flag == 1) || (ostrcmp(getlist(myconfig, "g4_auto_on", NULL), "deep") == 0 && flag == 2))
 		{
 			if(ostrcmp(getlist(myconfig, "g4_delay", NULL), "0") == 0)
-				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -o4 > /tmp/helpsis", 0, 0);
-			else
-			{
-				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A4 --Aafter ", 0, 0);
-				cmd = ostrcat(cmd, getlist(myconfig, "g4_delay", NULL), 1, 0);
-				cmd = ostrcat(cmd, " --Ado on", 1, 0);
+			{
+				if(ostrcmp(getlist(myconfig, "g4_delayhard", NULL), "0") == 0)
+					cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -o4 > /tmp/helpsis", 0, 0);
+				else
+				{
+					cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A4 --Aafter ", 0, 0);
+					cmd = ostrcat(cmd, getlist(myconfig, "g4_delay", NULL), 1, 0);
+					cmd = ostrcat(cmd, " --Ado on", 1, 0);
+				}
+			}
+			else
+			{
+				cmd = ostrcat("(sleep ", getlist(myconfig, "g4_delay", NULL), 0, 0);
+				cmd = ostrcat(cmd, "; ", 1, 0);
+				cmd = ostrcat(cmd, createpluginpath("/sispmctl/bin/sispmctl", 0), 1, 0);
+				cmd = ostrcat(cmd, " -o4) &", 1, 0);				
 			}
 			system(cmd);
@@ -457,16 +566,29 @@
 }
 
-void sispmctl_stop()
+void sispmctl_stop(int flag)
 {
 	char* cmd = NULL;
-	if(ostrcmp(getlist(myconfig, "g1_auto_off", NULL), "on") == 0)
+	int maxsleep = 0;
+	if(ostrcmp(getlist(myconfig, "g1_auto_off", NULL), "both") == 0 || (ostrcmp(getlist(myconfig, "g1_auto_off", NULL), "standby") == 0 && flag == 1) || (ostrcmp(getlist(myconfig, "g1_auto_off", NULL), "deep") == 0 && flag == 2))
 	{
 		if(ostrcmp(getlist(myconfig, "g1_delay", NULL), "0") == 0)
-			cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -o1 > /tmp/helpsis", 0, 0);
+		{
+			if(ostrcmp(getlist(myconfig, "g1_delayhard", NULL), "0") == 0)
+				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -f1 > /tmp/helpsis", 0, 0);
+			else
+			{
+				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A1 --Aafter ", 0, 0);
+				cmd = ostrcat(cmd, getlist(myconfig, "g1_delay", NULL), 1, 0);
+				cmd = ostrcat(cmd, " --Ado off", 1, 0);
+			}
+		}
 		else
 		{
-			cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A1 --Aafter ", 0, 0);
-			cmd = ostrcat(cmd, getlist(myconfig, "g1_delay", NULL), 1, 0);
-			cmd = ostrcat(cmd, " --Ado off", 1, 0);
+			cmd = ostrcat("(sleep ", getlist(myconfig, "g1_delay", NULL), 0, 0);
+			cmd = ostrcat(cmd, "; ", 1, 0);
+			cmd = ostrcat(cmd, createpluginpath("/sispmctl/bin/sispmctl", 0), 1, 0);
+			cmd = ostrcat(cmd, " -f1) &", 1, 0);
+			if(maxsleep < atoi(getlist(myconfig, "g1_delay", NULL)))
+				maxsleep = atoi(getlist(myconfig, "g1_delay", NULL));			
 		}
 		system(cmd);
@@ -474,13 +596,25 @@
 		free(cmd); cmd = NULL;
 	}
-	if(ostrcmp(getlist(myconfig, "g2_auto_off", NULL), "on") == 0)
+	if(ostrcmp(getlist(myconfig, "g2_auto_off", NULL), "both") == 0 || (ostrcmp(getlist(myconfig, "g2_auto_off", NULL), "standby") == 0 && flag == 1) || (ostrcmp(getlist(myconfig, "g2_auto_off", NULL), "deep") == 0 && flag == 2))
 	{
 		if(ostrcmp(getlist(myconfig, "g2_delay", NULL), "0") == 0)
-			cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -o2 > /tmp/helpsis", 0, 0);
+		{
+			if(ostrcmp(getlist(myconfig, "g2_delayhard", NULL), "0") == 0)
+				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -f2 > /tmp/helpsis", 0, 0);
+			else
+			{
+				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A2 --Aafter ", 0, 0);
+				cmd = ostrcat(cmd, getlist(myconfig, "g2_delay", NULL), 1, 0);
+				cmd = ostrcat(cmd, " --Ado off", 1, 0);	
+			}
+		}
 		else
 		{
-			cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A2 --Aafter ", 0, 0);
-			cmd = ostrcat(cmd, getlist(myconfig, "g2_delay", NULL), 1, 0);
-			cmd = ostrcat(cmd, " --Ado off", 1, 0);
+			cmd = ostrcat("(sleep ", getlist(myconfig, "g2_delay", NULL), 0, 0);
+			cmd = ostrcat(cmd, "; ", 1, 0);
+			cmd = ostrcat(cmd, createpluginpath("/sispmctl/bin/sispmctl", 0), 1, 0);
+			cmd = ostrcat(cmd, " -f2) &", 1, 0);
+			if(maxsleep < atoi(getlist(myconfig, "g2_delay", NULL)))
+				maxsleep = atoi(getlist(myconfig, "g2_delay", NULL));			
 		}
 		system(cmd);
@@ -488,13 +622,25 @@
 		free(cmd); cmd = NULL;
 	}
-	if(ostrcmp(getlist(myconfig, "g3_auto_off", NULL), "on") == 0)
+	if(ostrcmp(getlist(myconfig, "g3_auto_off", NULL), "both") == 0 || (ostrcmp(getlist(myconfig, "g3_auto_off", NULL), "standby") == 0 && flag == 1) || (ostrcmp(getlist(myconfig, "g3_auto_off", NULL), "deep") == 0 && flag == 2))
 	{
 		if(ostrcmp(getlist(myconfig, "g3_delay", NULL), "0") == 0)
-			cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -o3 > /tmp/helpsis", 0, 0);
+		{
+			if(ostrcmp(getlist(myconfig, "g3_delayhard", NULL), "0") == 0)
+				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -f3 > /tmp/helpsis", 0, 0);
+			else
+			{
+				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A3 --Aafter ", 0, 0);
+				cmd = ostrcat(cmd, getlist(myconfig, "g3_delay", NULL), 1, 0);
+				cmd = ostrcat(cmd, " --Ado off", 1, 0);	
+			}
+		}
 		else
 		{
-			cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A3 --Aafter ", 0, 0);
-			cmd = ostrcat(cmd, getlist(myconfig, "g3_delay", NULL), 1, 0);
-			cmd = ostrcat(cmd, " --Ado off", 1, 0);
+			cmd = ostrcat("(sleep ", getlist(myconfig, "g3_delay", NULL), 0, 0);
+			cmd = ostrcat(cmd, "; ", 1, 0);
+			cmd = ostrcat(cmd, createpluginpath("/sispmctl/bin/sispmctl", 0), 1, 0);
+			cmd = ostrcat(cmd, " -f3) &", 1, 0);
+			if(maxsleep < atoi(getlist(myconfig, "g3_delay", NULL)))
+				maxsleep = atoi(getlist(myconfig, "g3_delay", NULL));			
 		}
 		system(cmd);
@@ -502,13 +648,25 @@
 		free(cmd); cmd = NULL;
 	}
-	if(ostrcmp(getlist(myconfig, "g4_auto_off", NULL), "on") == 0)
+	if(ostrcmp(getlist(myconfig, "g4_auto_off", NULL), "both") == 0 || (ostrcmp(getlist(myconfig, "g4_auto_off", NULL), "standby") == 0 && flag == 1) || (ostrcmp(getlist(myconfig, "g4_auto_off", NULL), "deep") == 0 && flag == 2))
 	{
 		if(ostrcmp(getlist(myconfig, "g4_delay", NULL), "0") == 0)
-			cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -o4 > /tmp/helpsis", 0, 0);
+		{
+			if(ostrcmp(getlist(myconfig, "g4_delayhard", NULL), "0") == 0)
+				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -f4 > /tmp/helpsis", 0, 0);
+			else
+			{
+				cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A4 --Aafter ", 0, 0);
+				cmd = ostrcat(cmd, getlist(myconfig, "g4_delay", NULL), 1, 0);
+				cmd = ostrcat(cmd, " --Ado off", 1, 0);
+			}
+		}
 		else
 		{
-			cmd = ostrcat(createpluginpath("/sispmctl/bin/sispmctl", 0), " -A4 --Aafter ", 0, 0);
-			cmd = ostrcat(cmd, getlist(myconfig, "g4_delay", NULL), 1, 0);
-			cmd = ostrcat(cmd, " --Ado off", 1, 0);
+			cmd = ostrcat("(sleep ", getlist(myconfig, "g4_delay", NULL), 0, 0);
+			cmd = ostrcat(cmd, "; ", 1, 0);
+			cmd = ostrcat(cmd, createpluginpath("/sispmctl/bin/sispmctl", 0), 1, 0);
+			cmd = ostrcat(cmd, " -f4) &", 1, 0);
+			if(maxsleep < atoi(getlist(myconfig, "g4_delay", NULL)))
+				maxsleep = atoi(getlist(myconfig, "g4_delay", NULL));			
 		}
 		system(cmd);
@@ -516,4 +674,6 @@
 		free(cmd); cmd = NULL;
 	}
+	if(maxsleep > 0)
+		sleep(maxsleep);
 }
 
Index: /titan/skins/sispmctl/skin.xml
===================================================================
--- /titan/skins/sispmctl/skin.xml	(revision 41688)
+++ /titan/skins/sispmctl/skin.xml	(revision 41689)
@@ -5,5 +5,6 @@
 <node name="g1_timer" type="choicebox" parent="listbox" valign="middle" posx="0" text="-ignore Timerevent" bordercol="bordercol" bordersize="2" width="100%" height="25">
 <node name="g1_auto_off" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Auto stop" bordercol="bordercol" bordersize="2" width="100%" height="25">
-<node name="g1_delay" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Delay in min" bordercol="bordercol" bordersize="2" width="100%" height="25">
+<node name="g1_delay" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Delay in sec" bordercol="bordercol" bordersize="2" width="100%" height="25">
+<node name="g1_delayhard" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Hardware delay in min" bordercol="bordercol" bordersize="2" width="100%" height="25">
 <node name="s1" type="inputbox" parent="listbox" valign="middle" posx="0" text=" " bordercol="bordercol" bordersize="2" width="100%" height="15">
 
@@ -12,5 +13,6 @@
 <node name="g2_timer" type="choicebox" parent="listbox" valign="middle" posx="0" text="-ignore Timerevent" bordercol="bordercol" bordersize="2" width="100%" height="25">
 <node name="g2_auto_off" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Auto stop" bordercol="bordercol" bordersize="2" width="100%" height="25">
-<node name="g2_delay" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Delay in min" bordercol="bordercol" bordersize="2" width="100%" height="25">
+<node name="g2_delay" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Delay in sec" bordercol="bordercol" bordersize="2" width="100%" height="25">
+<node name="g2_delayhard" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Hardware delay in min" bordercol="bordercol" bordersize="2" width="100%" height="25">
 <node name="s2" type="inputbox" parent="listbox" valign="middle" posx="0" text=" " bordercol="bordercol" bordersize="2" width="100%" height="15">
 
@@ -19,5 +21,6 @@
 <node name="g3_timer" type="choicebox" parent="listbox" valign="middle" posx="0" text="-ignore Timerevent" bordercol="bordercol" bordersize="2" width="100%" height="25">
 <node name="g3_auto_off" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Auto stop" bordercol="bordercol" bordersize="2" width="100%" height="25">
-<node name="g3_delay" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Delay in min" bordercol="bordercol" bordersize="2" width="100%" height="25">
+<node name="g3_delay" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Delay in sec" bordercol="bordercol" bordersize="2" width="100%" height="25">
+<node name="g3_delayhard" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Hardware delay in min" bordercol="bordercol" bordersize="2" width="100%" height="25">
 <node name="s3" type="inputbox" parent="listbox" valign="middle" posx="0" text=" " bordercol="bordercol" bordersize="2" width="100%" height="15">
 
@@ -26,5 +29,6 @@
 <node name="g4_timer" type="choicebox" parent="listbox" valign="middle" posx="0" text="-ignore Timerevent" bordercol="bordercol" bordersize="2" width="100%" height="25">
 <node name="g4_auto_off" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Auto stop" bordercol="bordercol" bordersize="2" width="100%" height="25">
-<node name="g4_delay" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Delay in min" bordercol="bordercol" bordersize="2" width="100%" height="25">
+<node name="g4_delay" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Delay in sec" bordercol="bordercol" bordersize="2" width="100%" height="25">
+<node name="g4_delayhard" type="choicebox" parent="listbox" valign="middle" posx="0" text="-Hardware delay in min" bordercol="bordercol" bordersize="2" width="100%" height="25">
 <node name="s4" type="inputbox" parent="listbox" valign="middle" posx="0" text=" " bordercol="bordercol" bordersize="2" width="100%" height="15">
 <node name="b1" text="SAVE" halign="center" valign="middle" bordercol="green" bordersize="2" bordertype="2" posx="0" posy="0" width="150" height="30"/>
