rules-TEST.scm 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. (define (hours) (car (gettime)))
  2. (define (mins) (car (cdr (gettime))))
  3. (define (year) (car (getdate)))
  4. (define (month) (car (cdr (getdate))))
  5. (define (day) (car (cdr (cdr (getdate)))))
  6. (define (lat x) (car x))
  7. (define (lon x) (car (cdr x)))
  8. (define (eastof x) (> (lon (gps)) (lon x)))
  9. (define (westof x) (< (lon (gps)) (lon x)))
  10. (define (northof x) (> (lat (gps)) (lat x)))
  11. (define (southof x) (< (lat (gps)) (lat x)))
  12. ; DD - Decimal Degree format
  13. ; DMS - Degree/Minute/Second format
  14. ; DMM - Degree/Decimal Minute format
  15. ;
  16. ; defined in DMM-ish style (call it DMMt).
  17. ; Most significant digts are degree, remaining are in minute, so:
  18. ;
  19. ; q = floor(DMMt/100)
  20. ; DD = q + ((DMMt - (100*q))/60)
  21. ;
  22. ; for example:
  23. ;
  24. ; x = 4229.532
  25. ; q = floor(x/100)
  26. ; q + ((x - (100*q))/60)
  27. ;
  28. ; --> 42.49220
  29. ;
  30. (define bound0 '(4227.139 -7641.424))
  31. (define bound1 '(4222.689 -7616.695))
  32. (define city_bounds
  33. '(
  34. (and (= (routenum) 1) (westeof bound0))
  35. (and (= (routenum) 2) (eastof bound1))
  36. )
  37. )
  38. ; ---
  39. (define (dec_local_balance)
  40. (let ((balance (string->number (lookaside_param))))
  41. (cond
  42. ( (< balance 1)
  43. "0"
  44. )
  45. ( else
  46. (let ((foo (number->string (- balance 1))))
  47. (set_lookaside foo)
  48. foo
  49. )
  50. )
  51. )
  52. )
  53. )
  54. ; ----
  55. (define (rule_TEST-ORG-NRIDE)
  56. ;;accept all
  57. (let ((rides_left (dec_local_balance)))
  58. (tell_rider (string-append rides_left " Rides left"))
  59. (accept_fare_no_passback
  60. (string-append rides_left " Rides left")
  61. (string-append rides_left " Rides left")
  62. 0
  63. )
  64. )
  65. )
  66. (define (rule_TEST-ORG-NDAY)
  67. ;;accept all
  68. (let ((tokens (strtok (param) " ")))
  69. (cond
  70. ( (pair? (cdr tokens))
  71. (tell_rider (string-append "Expires " (car (cdr tokens))) )
  72. (accept_fare
  73. (string-append "Expires " (car (cdr tokens)))
  74. (string-append "Expires " (car (cdr tokens)))
  75. 0
  76. )
  77. )
  78. ( else
  79. (tell_rider (string-append (car tokens) " Day pass"))
  80. (accept_fare
  81. (string-append (car tokens) " Day pass")
  82. (string-append (car tokens) " Day pass")
  83. 0
  84. )
  85. )
  86. )
  87. )
  88. )
  89. (define (rule_CASH-ADULT)
  90. (accept_fare_no_passback "Adult Cash Fare" "Adult Cash Fare" 150)
  91. (drop_vault)
  92. )
  93. (define (rule_CASH-YOUTH)
  94. (accept_fare_no_passback "Youth Cash Fare" "Youth Cash Fare" 75)
  95. (drop_vault)
  96. )
  97. (define (rule_CASH-HALF)
  98. (accept_fare_no_passback "ADA/Senior Cash" "ADA/Senior Cash" 75)
  99. (drop_vault)
  100. )
  101. (define (rule_MISC-INTERLINE)
  102. (accept_fare_no_passback "Interline" "Interline" 0)
  103. )
  104. (define (rule_MISC-TRANSFER)
  105. (accept_fare_no_passback "Transfer" "Transfer" 0)
  106. )
  107. (define (rule_MISC-BIKE)
  108. (accept_fare_no_passback "Bike" "Bike" 0)
  109. )
  110. (define (rule_MISC-WHEELCHAIR)
  111. (accept_fare_no_passback "Wheelchair" "Wheelchair" 0)
  112. )
  113. (define (rule_MISC-EVENT)
  114. (accept_fare_no_passback "Special Event" "Special Event" 0)
  115. )
  116. (define (rule_OVR-CITY)
  117. (accept_fare_no_passback "City Override" "City Override" 0)
  118. )
  119. (define (rule_OVR-CARD)
  120. (accept_fare_no_passback "Card Override" "Card Override" 0)
  121. )
  122. (define (bulk_generic rule times)
  123. (cond
  124. ((= times 0) 0)
  125. (else
  126. (rule)
  127. (bulk_generic rule (- times 1))
  128. )
  129. )
  130. )
  131. (define (rule_BULK-CASH-ADULT)
  132. (bulk_generic rule_CASH-ADULT (string->number (param)))
  133. )
  134. (define (rule_BULK-CASH-YOUTH)
  135. (bulk_generic rule_CASH-YOUTH (string->number (param)))
  136. )
  137. (define (rule_BULK-CASH-HALF)
  138. (bulk_generic rule_CASH-HALF (string->number (param)))
  139. )
  140. (define (rule_BULK-MISC-EVENT)
  141. (bulk_generic rule_MISC-EVENT (string->number (param)))
  142. )
  143. (define (rule_BULK-MISC-INTERLINE)
  144. (bulk_generic rule_MISC-INTERLINE (string->number (param)))
  145. )
  146. (define (rule_BULK-MISC-TRANSFER)
  147. (bulk_generic rule_MISC-TRANSFER (string->number (param)))
  148. )
  149. (define (rule_BULK-OVR-CITY)
  150. (bulk_generic rule_OVR-CITY (string->number (param)))
  151. )
  152. (define (rule_BULK-OVR-CARD)
  153. (bulk_generic rule_OVR-CARD (string->number (param)))
  154. )
  155. ;---
  156. (define (rule_BULK-OVR-SCHOOLA)
  157. (bulk_generic rule_OVR-SCHOOLA (string->number (param)))
  158. )
  159. (define (rule_BULK-OVR-SCHOOLB)
  160. (bulk_generic rule_OVR-SCHOOLB (string->number (param)))
  161. )
  162. (define (rule_BULK-OVR-SCHOOLC)
  163. (bulk_generic rule_OVR-SCHOOLC (string->number (param)))
  164. )
  165. ;---
  166. (define (rule_BULK-OVR-ORGA)
  167. (bulk_generic rule_OVR-ORGA (string->number (param)))
  168. )
  169. (define (rule_BULK-OVR-ORGB)
  170. (bulk_generic rule_OVR-ORGB (string->number (param)))
  171. )
  172. (define (rule_BULK-OVR-ORGC)
  173. (bulk_generic rule_OVR-ORGC (string->number (param)))
  174. )
  175. ;-----
  176. (define (rule_TEST-ORG-TEST)
  177. (tell_rider "Test Org Pass")
  178. (accept_fare "Test Org Pass" "Test Org Pass" 0)
  179. )
  180. (define (rule_TEST-SCHOOL-PASS)
  181. (tell_rider "Test School Pass")
  182. (accept_fare "Test School Pass" "Test School Pass" 0)
  183. )
  184. (define (rule_OVR-SCHOOLA)
  185. (accept_fare_no_passback "School A Override" "School A Override" 0)
  186. )
  187. (define (rule_OVR-SCHOOLB)
  188. (accept_fare_no_passback "School B Override" "School B Override" 0)
  189. )
  190. (define (rule_OVR-SCHOOLC)
  191. (accept_fare_no_passback "School C Override" "School C Override" 0)
  192. )
  193. (define (rule_OVR-ORGA)
  194. (accept_fare_no_passback "Org A Override" "Org A Override" 0)
  195. )
  196. (define (rule_OVR-ORGB)
  197. (accept_fare_no_passback "Org B Override" "Org B Override" 0)
  198. )
  199. (define (rule_OVR-ORGC)
  200. (accept_fare_no_passback "Org C Override" "Org C Override" 0)
  201. )
  202. (define (rule_TEST-GOV-PASS)
  203. (tell_rider "Test Gov Pass")
  204. (accept_fare "Test Gov Pass" "Test Gov Pass" 0)
  205. )
  206. (define (rule_TEST-OTHER-ORG-PASS)
  207. (tell_rider "Test Other Org Pass")
  208. (accept_fare "Test Other Org Pass" "Test Other Org Pass" 0)
  209. )
  210. ;------------------ blanket reject (used for domain card rejections as well)
  211. (define (rule_TEST-ORG-REJECT)
  212. (tell_rider "No Passes on Card")
  213. (reject_fare "No Passes on Card" "No Passes on Card" 0)
  214. )