void AsicPushWork(void) { Status.WorkID = WorkQue[WorkNow].WorkID; SendAsicData(&WorkQue[WorkNow], DATA_SPLIT); Status.HashCount = 0; Status.State ='W'; TMR0 = HashTime; if(Status.WorkQC > 0) AsicPreCalc(&WorkQue[WorkNow]); }
void AsicPushWork(void) { Status.WorkID = WorkQue[WorkNow].WorkID; SendAsicData(&WorkQue[WorkNow], DATA_SPLIT); WorkNow = (WorkNow+1) & WORKMASK; Status.HashCount = 0; Status.State ='W'; RESET_RX(); if(--Status.WorkQC > 0) AsicPreCalc(&WorkQue[WorkNow]); }
void DetectAsics(void) { BankSize = 8; Status.ChipCount = 0; for(BYTE x = 0; x < BankSize; x++) NonceRanges[x] = StartNonce; AsicPreCalc(&TestWork); WorkQue[MAX_WORK_COUNT-1] = TestWork; SendAsicData(&WorkQue[MAX_WORK_COUNT-1], (StartNonce & 0x80000000) ? DATA_ONE : DATA_ZERO); // wait for "push work time" for results to return and be counted Status.ChipCount = 16; // just for now // pre-calc nonce range values BankSize = (Status.ChipCount+1)/2; WorkTicks = WORK_TICKS / BankSize; NonceRanges[0] = 0; for(BYTE x = 1; x < BankSize; x++) NonceRanges[x] = NonceRanges[x-1] + BankRanges[BankSize-1]; Status.State ='R'; Status.HashCount = 0; }