Browse Source

gc3355: Support for appending jobs with task id

Nate Woolls 12 years ago
parent
commit
c5595df129
1 changed files with 36 additions and 13 deletions
  1. 36 13
      gc3355.c

+ 36 - 13
gc3355.c

@@ -569,21 +569,44 @@ void gc3355_scrypt_prepare_work(unsigned char cmd[156], struct work *work)
 	cmd[149] = 0xff;
 	cmd[150] = 0xff;
 	cmd[151] = 0xff;
+	
+	// taskid
+	int workid = work->id;
+	memcpy(cmd + 152, &(workid), 4);
 }
 
 void gc3355_sha2_prepare_work(unsigned char cmd[52], struct work *work, bool simple)
 {
-	uint8_t temp_bin[64];
-	memset(temp_bin, 0, 64);
-	memcpy(temp_bin, work->midstate, 32);
-	memcpy(temp_bin+52, work->data + 64, 12);
-	
-	// command header
-	cmd[0] = 0x55;
-	cmd[1] = 0xaa;
-	cmd[2] = 0x0f;
-	cmd[3] = 0x00;  // Scrypt header sig - used by DualMiner in Dual Mode
-	
-	memcpy(cmd + 8, temp_bin, 32);
-	memcpy(cmd + 40, temp_bin + 52, 12);
+	if (simple)
+	{
+		// command header
+		cmd[0] = 0x55;
+		cmd[1] = 0xaa;
+		cmd[2] = 0x0f;
+		cmd[3] = 0x01; // SHA header sig
+		
+		memcpy(cmd + 4, work->midstate, 32);
+		memcpy(cmd + 36, work->data + 64, 12);
+		
+		// taskid
+		int workid = work->id;
+		memcpy(cmd + 48, &(workid), 4);
+	}
+	else
+	{
+		// command header
+		cmd[0] = 0x55;
+		cmd[1] = 0xaa;
+		cmd[2] = 0x0f;
+		cmd[3] = 0x00; // Scrypt header sig - used by DualMiner in Dual Mode
+		
+		uint8_t temp_bin[64];
+		memset(temp_bin, 0, 64);
+		
+		memcpy(temp_bin, work->midstate, 32);
+		memcpy(temp_bin + 52, work->data + 64, 12);
+		
+		memcpy(cmd + 8, work->midstate, 32);
+		memcpy(cmd + 40, temp_bin + 52, 12);
+	}
 }