updated flashing
diff --git a/objects/control_host_obj.c b/objects/control_host_obj.c
index ec62a37..9f6fb92 100644
--- a/objects/control_host_obj.c
+++ b/objects/control_host_obj.c
@@ -35,49 +35,57 @@
gpointer user_data)
{
// TODO: Add error checking
- g_print("Boot\n");
+ g_print("Do Boot\n");
+ int rc = GPIO_OK;
+
Control* control = object_get_control((Object*)user_data);
control_host_complete_boot(host,invocation);
+ do {
+ rc |= gpio_open(&fsi_clk);
+ rc |= gpio_open(&fsi_data);
+ rc |= gpio_open(&fsi_enable);
+ rc |= gpio_open(&cronus_sel);
+ if (rc!=GPIO_OK) { break; }
+
+ rc = gpio_write(&cronus_sel,1);
+ //putcfam pu 281c 30000000 -p0
+ char a[] = "000011111111110101111000111001100111111111111111111111111111101111111111";
+ //putcfam pu 281c B0000000 -p0
+ char b[] = "000011111111110101111000111000100111111111111111111111111111101101111111";
+
+ gpio_write(&fsi_enable,1);
+ gpio_write(&fsi_clk,1);
+ gpio_write(&fsi_data,1);
+ gpio_clock_cycle(&fsi_clk,5000);
+ gpio_write(&fsi_data,0);
+ gpio_clock_cycle(&fsi_clk,256);
+ gpio_write(&fsi_data,1);
+ gpio_clock_cycle(&fsi_clk,50);
+ uint16_t i=0;
+ for(i=0;i<strlen(a);i++) {
+ gpio_writec(&fsi_data,a[i]);
+ gpio_clock_cycle(&fsi_clk,1);
+ }
+ gpio_write(&fsi_data,1); /* Data standby state */
+ gpio_clock_cycle(&fsi_clk,5000);
+
+ for(i=0;i<strlen(b);i++) {
+ gpio_writec(&fsi_data,b[i]);
+ gpio_clock_cycle(&fsi_clk,1);
+ }
+ gpio_write(&fsi_data,1); /* Data standby state */
+ gpio_clock_cycle(&fsi_clk,2);
+
+ gpio_write(&fsi_clk,0); /* hold clk low for clock mux */
+ gpio_write(&fsi_enable,0);
+ gpio_clock_cycle(&fsi_clk,16);
+ gpio_write(&fsi_clk,0); /* Data standby state */
- gpio_open(&fsi_clk);
- gpio_open(&fsi_data);
- gpio_open(&fsi_enable);
- gpio_open(&cronus_sel);
-
- gpio_write(&cronus_sel,1);
- //putcfam pu 281c 30000000 -p0
- char a[] = "000011111111110101111000111001100111111111111111111111111111101111111111";
- //putcfam pu 281c B0000000 -p0
- char b[] = "000011111111110101111000111000100111111111111111111111111111101101111111";
-
- gpio_write(&fsi_enable,1);
- gpio_write(&fsi_clk,1);
- gpio_write(&fsi_data,1);
- gpio_clock_cycle(&fsi_clk,5000);
- gpio_write(&fsi_data,0);
- gpio_clock_cycle(&fsi_clk,256);
- gpio_write(&fsi_data,1);
- gpio_clock_cycle(&fsi_clk,50);
- uint16_t i=0;
- for(i=0;i<strlen(a);i++) {
- gpio_writec(&fsi_data,a[i]);
- gpio_clock_cycle(&fsi_clk,1);
- }
- gpio_write(&fsi_data,1); /* Data standby state */
- gpio_clock_cycle(&fsi_clk,5000);
-
- for(i=0;i<strlen(b);i++) {
- gpio_writec(&fsi_data,b[i]);
- gpio_clock_cycle(&fsi_clk,1);
- }
- gpio_write(&fsi_data,1); /* Data standby state */
- gpio_clock_cycle(&fsi_clk,2);
-
- gpio_write(&fsi_clk,0); /* hold clk low for clock mux */
- gpio_write(&fsi_enable,0);
- gpio_clock_cycle(&fsi_clk,16);
- gpio_write(&fsi_clk,0); /* Data standby state */
-
+ } while(0);
+ if (rc != GPIO_OK)
+ {
+ printf("ERROR HostControl: GPIO sequence failed (rc=%d)\n",rc);
+ }
gpio_close(&fsi_clk);
gpio_close(&fsi_data);
gpio_close(&fsi_enable);