| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*
- * Copyright (c) 2019 Clementine Computing LLC.
- *
- * This file is part of PopuFare.
- *
- * PopuFare is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * PopuFare is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with PopuFare. If not, see <https://www.gnu.org/licenses/>.
- *
- */
- //This function clears the entire anti-passback cache
- int apb_clear();
- // This function examines the state of the gps_stat and stop_stat structures and clears the anti-passback cache if the bus has
- //either moved at least APB_DIST_EXPIRE meters since the last accept, or if the route, trip, or stop have changed.
- // If the cache is cleared as the result of this function call, the cache state is updated so that it reflects the location
- //data as they stood when the flush was completed. If there is nothing in the cache, the location is simply updated.
- int apb_flush_if_needed();
- //Add a rider to the anti-passback cache...
- int apb_add(logical_card_id_t id);
- // Look up a rider in the anti-passback cache. If the rider is not present, this function returns zero.
- //If the rider is present, this function returns the number of seconds since they last rode this bus.
- int apb_lookup(logical_card_id_t id);
- // This function does a "smart" magstripe lookup by looking up the token found
- //on track1, then track2, then track3 individually (ignoring tracks 1 and 2 if they
- //contain credit-card style field-delimiters), returning the index of the rider
- //in the riders database attached to ctx, or -1 if not found.
- // If the return is -1 (not found) final_token is filled with the whole list of
- //tracks that were attempted (with credit-card looking tracks blanked out).
- // If the return is >= 0 (record found) final_token is filled with the token that
- //was used to generate the match.
- int smart_find_mag(passdb_slim_context *ctx, char *token, char *final_token);
- // This function does a "smart" RFID lookup by translating the raw RFID format (NN|XXXX...)
- //where NN is the number of bits in hex, and XXXX... is the bitstring in hex (right justified
- //to the nearest nibble boundary) and processing it based on the number of bits and a list of
- //known formats until it either matches a known format or is determined not to match any of them.
- // If a match is found, the return value will be >= 0 and indicate the index of the rider in
- //the database that ctx is attached to. If no match is found, -1 is returned. In either case
- //final_token is filled with the string representing the decoded decimal RFID value "nbits:site:id"
- //or if the token was not in a known format, "nbits:rawval?".
- int smart_find_rf(passdb_slim_context *ctx, char *token, char *final_token);
- int rules_loaded();
- int load_rules(char *filename);
- int unload_rules();
- int process_rider(passdb_slim_context *ctx, int rider_index, char *credential);
- int process_driver_rulecall(struct driver_rulecall_struct *drc);
|