예제 #1
0
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]);
}
예제 #2
0
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]);
}
예제 #3
0
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;
}