made pflash call async
diff --git a/bin/flash_manager.py b/bin/flash_manager.py
index 9a0f450..980341b 100644
--- a/bin/flash_manager.py
+++ b/bin/flash_manager.py
@@ -10,14 +10,14 @@
 
 
 DBUS_NAME = 'org.openbmc.managers.Flash'
-OBJ_NAME = '/org/openbmc/managers/'+sys.argv[1]
+OBJ_NAME = '/org/openbmc/managers/Flash'
 TFTP_PORT = 69
 DOWNLOAD_DIR = '/tmp'
 
 class FlashManagerObject(dbus.service.Object):
 	def __init__(self,bus,name):
 		self.dbus_objects = { }
-
+		self.status = { 'bios' : 'OK', 'bmc' : 'OK' }
 		dbus.service.Object.__init__(self,bus,name)
 		## load utilized objects
 		self.dbus_objects = {
@@ -33,6 +33,15 @@
 			}
 		}
 		bus = dbus.SessionBus()
+		bus.add_signal_receiver(self.UpdatedHandler, 
+			dbus_interface = "org.openbmc.Flash", signal_name = "Updated", path_keyword='path')
+
+
+	def UpdatedHandler(self,path = None):
+		print "Flash update finish: "+path
+		for flash in self.dbus_objects:
+			if (path == self.dbus_objects[flash]['object_name']):
+				self.status[flash] = 'OK'		
 
 	def getInterface(self,name):
 		o = self.dbus_objects[name]
@@ -40,20 +49,31 @@
 		return dbus.Interface(obj,o['interface_name'])
 
 	@dbus.service.method(DBUS_NAME,
+		in_signature='', out_signature='a{ss}')
+	def getStatus(self):
+		return self.status
+
+	@dbus.service.method(DBUS_NAME,
 		in_signature='sss', out_signature='')
 	def updateFromTftp(self,flash,url,filename):
 		if (self.dbus_objects.has_key(flash) == False):
-			print "Error: Not a valid flash device: "+flash	
+			print "ERROR FlashManager: Not a valid flash device: "+flash	
 			return
 		try:
+			## need to make download async
+			self.status[flash]="DOWNLOADING"
+			filename = str(filename)
 			client = tftpy.TftpClient(url, TFTP_PORT)
+			print "Downloading: "+filename+" from "+url
 			outfile = DOWNLOAD_DIR+"/"+filename
-			client.download(filename,outfile)		
+			client.download(filename,outfile)
 			intf = self.getInterface(flash)
+			self.status[flash]="FLASHING"
 			intf.update(outfile)
 					
 		except Exception as e:
-			print "ERROR: "+str(e)
+			print "ERROR FlashManager: "+str(e)
+			self.status="ERROR"
 	
 
 
diff --git a/objects/flash_bios_obj.c b/objects/flash_bios_obj.c
index a4c51bd..2a5471b 100644
--- a/objects/flash_bios_obj.c
+++ b/objects/flash_bios_obj.c
@@ -14,9 +14,12 @@
                 gpointer                user_data)

 {

 	flash_complete_init(f,invocation);

-	//tune flash

-	g_print("Tuning BIOS Flash\n");

-	flash_access_setup_pnor(true, false, false);

+

+	#ifdef __arm__

+		printf("Tuning BIOS Flash\n");

+		flash_access_setup_pnor(true, false, false);

+	#endif

+

 	return TRUE;

 }

 

@@ -26,21 +29,25 @@
                 gchar*                  write_file,

                 gpointer                user_data)

 {

-  g_print("Flashing BIOS from file\n");

-  // get size from file

-  struct stat stbuf;

-  uint32_t address = 0, read_size = 0, write_size = 0;

+	printf("Flashing BIOS from file\n");

+	flash_complete_update(f,invocation);

+	// get size from file

+	struct stat stbuf;

+	uint32_t address = 0, read_size = 0, write_size = 0;

 

-  if (stat(write_file, &stbuf))

-  {

-    g_print("Failed to get file size");

-    //TODO: Error handling

-  }

-  write_size = stbuf.st_size;

-  erase_chip();

-  program_file(write_file, address, write_size);

-  flash_complete_update(f,invocation);

-  return TRUE;

+#ifdef __arm__

+	if (stat(write_file, &stbuf))

+ 	{

+ 		printf("ERROR:  Invalid flash file: %s\n",write_file);

+	}

+	write_size = stbuf.st_size;

+	// TODO: need to change pflash to return error instead of exit

+	erase_chip();

+	program_file(write_file, address, write_size);

+#endif

+

+  	flash_emit_updated(f);

+	return TRUE;

 }

 

 static void