void debounce(int passes_remaining) { while(passes_remaining) { last_pressed_count = pressed_count; for(int i = 0; i < last_pressed_count; i++) { last_presses[i] = presses[i]; } scan_rows(); if((pressed_count != last_pressed_count) || \ memcmp(presses, last_presses, pressed_count)) { passes_remaining = DEBOUNCE_PASSES; } else { passes_remaining--; } } };
int main(int argc, const char** argv) { ndb_init(); int operationType = 0; int tupTest = 0; int scanTest = 0; Ndb* pNdb = new Ndb("TEST_DB"); pNdb->init(); if (argc != 4 || sscanf(argv[1],"%d", &operationType) != 1) { operationType = 1 ; } if (argc != 4 || sscanf(argv[2],"%d", &tupTest) != 1) { tupTest = 1 ; } if (argc != 4 || sscanf(argv[3],"%d", &scanTest) != 1) { scanTest = 1 ; } ndbout << endl << "Test the interpreter in TUP using SimpleTable with\n" << nRecords << " records" << endl << endl ; if (pNdb->waitUntilReady(30) != 0) { ndbout << "NDB is not ready" << endl; return -1; } // Init the pk and attr values. for (int i = 0; i < NUMBEROFRECORDS; i ++) pkValue[i] = attrValue[i] = i ; setAttrNames() ; setTableNames() ; const void * p = NDBT_Table::discoverTableFromDb(pNdb, tableName); if (p != 0) { create_table(pNdb); } write_rows(pNdb); ndbout << endl << "Starting interpreter in TUP test." << endl << "Operation type: " ; switch(operationType) { case 1: ndbout << "openScanRead" << endl; scan_rows(pNdb, operationType, tupTest, scanTest); break; case 2: ndbout << "openScanExclusive" << endl; scan_rows(pNdb, operationType, tupTest, scanTest); break; case 3: ndbout << "interpretedUpdateTuple" << endl; update_rows(pNdb, tupTest, operationType); break; case 4: ndbout << "interpretedDirtyUpdate" << endl; update_rows(pNdb, tupTest, operationType); break; case 5: ndbout << "interpretedDeleteTuple" << endl; delete_rows(pNdb, tupTest, operationType); break; case 6: ndbout << "deleteTuple" << endl; break; case 7: ndbout << "insertTuple" << endl; break; case 8: ndbout << "updateTuple" << endl; break; case 9: ndbout << "writeTuple" << endl; break; case 10: ndbout << "readTuple" << endl; break; case 11: ndbout << "readTupleExclusive" << endl; break; case 12: ndbout << "simpleRead" << endl; break; case 13: ndbout << "dirtyRead" << endl; break; case 14: ndbout << "dirtyUpdate" << endl; break; case 15: ndbout << "dirtyWrite" << endl; break; default: break ; } // read_and_verify_rows(pNdb, false); // delete_rows(pNdb, 0, 0) ; delete pNdb ; if (bTestPassed == 0) { ndbout << "OK: test passed" << endl; exit(0); } else { ndbout << "FAIL: test failed" << endl; exit(-1); } }