UInteger8 bmc(ForeignMasterRecord *foreignMaster, RunTimeOpts *rtOpts, PtpClock *ptpClock) { Integer16 i,best; DBGV("number_foreign_records : %d \n", ptpClock->number_foreign_records); if (!ptpClock->number_foreign_records) if (ptpClock->portState == PTP_MASTER) { m1(rtOpts,ptpClock); return ptpClock->portState; } for (i=1,best = 0; i<ptpClock->number_foreign_records;i++) if ((bmcDataSetComparison(&foreignMaster[i].header, &foreignMaster[i].announce, &foreignMaster[best].header, &foreignMaster[best].announce, ptpClock)) < 0) best = i; DBGV("Best record : %d \n",best); ptpClock->foreign_record_best = best; return (bmcStateDecision(&foreignMaster[best].header, &foreignMaster[best].announce, rtOpts,ptpClock)); }
UInteger8 bmc(ForeignMasterRecord *foreign, RunTimeOpts *rtOpts, PtpClock *ptpClock ) { Integer16 i, best; /* Check if any foreign masters */ if(!ptpClock->number_foreign_records) { DBGV("bmc: number_foreign_records is zero, state: %u\n", ptpClock->port_state ); /* No foreign masters, run m1 if we are currently master */ if(ptpClock->port_state == PTP_MASTER) { DBGV("bmc: calling m1\n"); m1(ptpClock); } return ptpClock->port_state; /* no change */ } DBGV("bmc: number_foreign_records is non zero, state: %u\n", ptpClock->port_state ); /* There is at least one foreign master. Scan through foreign master database and compare * to look for best master to use */ for(i = 1, best = 0; i < ptpClock->number_foreign_records; ++i) { /* Check current loop indx record versus current "best" record */ if(bmcDataSetComparison(&foreign[i].header, &foreign[i].sync, &foreign[best].header, &foreign[best].sync, ptpClock ) > 0) { /* Current loop index is better than previous "best", set new "best" */ best = i; } DBGV("bmc: comparison loop i=%d, best=%d\n",i,best); } /* Best record found, store index to best foreign master */ DBGV("bmc: best record %d\n", best); ptpClock->foreign_record_best = best; /* Now that best is found, determine recommended state */ return bmcStateDecision(&foreign[best].header, &foreign[best].sync, rtOpts, ptpClock ); }
UInteger8 bmc(ForeignMasterRecord *foreign, RunTimeOpts *rtOpts, PtpClock *ptpClock) { Integer16 i, best; if(!ptpClock->number_foreign_records) { if(ptpClock->port_state == PTP_MASTER) m1(ptpClock); return ptpClock->port_state; /* no change */ } for(i = 1, best = 0; i < ptpClock->number_foreign_records; ++i) { if(bmcDataSetComparison(&foreign[i].header, &foreign[i].sync, &foreign[best].header, &foreign[best].sync, ptpClock) > 0) best = i; } DBGV("bmc: best record %d\n", best); ptpClock->foreign_record_best = best; return bmcStateDecision(&foreign[best].header, &foreign[best].sync, rtOpts, ptpClock); }