Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

edited help file

  • Loading branch information...
commit 48a90832fe01fd01bd887c3db6acb45b4657a980 1 parent 8b4efd2
Peter Gao authored
Showing with 30,247 additions and 0 deletions.
  1. +1 −0  .gitignore
  2. BIN  .help.md.swp
  3. +1 −0  .~lock.Badass Speech.doc#
  4. +1 −0  finalVersion/node_modules/.bin/serialportlist
  5. +1 −0  finalVersion/node_modules/.bin/serialportterm
  6. +8 −0 finalVersion/node_modules/serialport2/.npmignore
  7. +101 −0 finalVersion/node_modules/serialport2/README.md
  8. +15 −0 finalVersion/node_modules/serialport2/bin/serialportList.js
  9. +82 −0 finalVersion/node_modules/serialport2/bin/serialportTerminal.js
  10. +30 −0 finalVersion/node_modules/serialport2/binding.gyp
  11. +334 −0 finalVersion/node_modules/serialport2/build/Makefile
  12. +1 −0  finalVersion/node_modules/serialport2/build/Release/.deps/Release/obj.target/serialport2.node.d
  13. +34 −0 finalVersion/node_modules/serialport2/build/Release/.deps/Release/obj.target/serialport2/src/serialport.o.d
  14. +35 −0 ...Version/node_modules/serialport2/build/Release/.deps/Release/obj.target/serialport2/src/serialport_unix.o.d
  15. +1 −0  finalVersion/node_modules/serialport2/build/Release/.deps/Release/serialport2.node.d
  16. 0  finalVersion/node_modules/serialport2/build/Release/linker.lock
  17. BIN  finalVersion/node_modules/serialport2/build/Release/obj.target/serialport2.node
  18. BIN  finalVersion/node_modules/serialport2/build/Release/obj.target/serialport2/src/serialport.o
  19. BIN  finalVersion/node_modules/serialport2/build/Release/obj.target/serialport2/src/serialport_unix.o
  20. BIN  finalVersion/node_modules/serialport2/build/Release/serialport2.node
  21. +6 −0 finalVersion/node_modules/serialport2/build/binding.Makefile
  22. +104 −0 finalVersion/node_modules/serialport2/build/config.gypi
  23. +113 −0 finalVersion/node_modules/serialport2/build/serialport2.target.mk
  24. +3 −0  finalVersion/node_modules/serialport2/index.js
  25. +206 −0 finalVersion/node_modules/serialport2/lib/serialport.js
  26. +9 −0 finalVersion/node_modules/serialport2/node_modules/async/.gitmodules
  27. +4 −0 finalVersion/node_modules/serialport2/node_modules/async/.npmignore
  28. +19 −0 finalVersion/node_modules/serialport2/node_modules/async/LICENSE
  29. +25 −0 finalVersion/node_modules/serialport2/node_modules/async/Makefile
  30. +1,022 −0 finalVersion/node_modules/serialport2/node_modules/async/README.md
  31. +3 −0  finalVersion/node_modules/serialport2/node_modules/async/index.js
  32. +692 −0 finalVersion/node_modules/serialport2/node_modules/async/lib/async.js
  33. +30 −0 finalVersion/node_modules/serialport2/node_modules/async/package.json
  34. +133 −0 finalVersion/node_modules/serialport2/node_modules/bindings/README.md
  35. +161 −0 finalVersion/node_modules/serialport2/node_modules/bindings/bindings.js
  36. +27 −0 finalVersion/node_modules/serialport2/node_modules/bindings/package.json
  37. +4 −0 finalVersion/node_modules/serialport2/node_modules/optimist/.travis.yml
  38. +21 −0 finalVersion/node_modules/serialport2/node_modules/optimist/LICENSE
  39. +487 −0 finalVersion/node_modules/serialport2/node_modules/optimist/README.markdown
  40. +10 −0 finalVersion/node_modules/serialport2/node_modules/optimist/example/bool.js
  41. +7 −0 finalVersion/node_modules/serialport2/node_modules/optimist/example/boolean_double.js
  42. +7 −0 finalVersion/node_modules/serialport2/node_modules/optimist/example/boolean_single.js
  43. +8 −0 finalVersion/node_modules/serialport2/node_modules/optimist/example/default_hash.js
  44. +7 −0 finalVersion/node_modules/serialport2/node_modules/optimist/example/default_singles.js
  45. +8 −0 finalVersion/node_modules/serialport2/node_modules/optimist/example/divide.js
  46. +20 −0 finalVersion/node_modules/serialport2/node_modules/optimist/example/line_count.js
  47. +29 −0 finalVersion/node_modules/serialport2/node_modules/optimist/example/line_count_options.js
  48. +29 −0 finalVersion/node_modules/serialport2/node_modules/optimist/example/line_count_wrap.js
  49. +4 −0 finalVersion/node_modules/serialport2/node_modules/optimist/example/nonopt.js
  50. +2 −0  finalVersion/node_modules/serialport2/node_modules/optimist/example/reflect.js
  51. +3 −0  finalVersion/node_modules/serialport2/node_modules/optimist/example/short.js
  52. +11 −0 finalVersion/node_modules/serialport2/node_modules/optimist/example/string.js
  53. +19 −0 finalVersion/node_modules/serialport2/node_modules/optimist/example/usage-options.js
  54. +10 −0 finalVersion/node_modules/serialport2/node_modules/optimist/example/xup.js
  55. +475 −0 finalVersion/node_modules/serialport2/node_modules/optimist/index.js
  56. +1 −0  finalVersion/node_modules/serialport2/node_modules/optimist/node_modules/wordwrap/.npmignore
  57. +70 −0 finalVersion/node_modules/serialport2/node_modules/optimist/node_modules/wordwrap/README.markdown
  58. +10 −0 finalVersion/node_modules/serialport2/node_modules/optimist/node_modules/wordwrap/example/center.js
  59. +3 −0  finalVersion/node_modules/serialport2/node_modules/optimist/node_modules/wordwrap/example/meat.js
  60. +76 −0 finalVersion/node_modules/serialport2/node_modules/optimist/node_modules/wordwrap/index.js
  61. +40 −0 finalVersion/node_modules/serialport2/node_modules/optimist/node_modules/wordwrap/package.json
  62. +30 −0 finalVersion/node_modules/serialport2/node_modules/optimist/node_modules/wordwrap/test/break.js
  63. +63 −0 finalVersion/node_modules/serialport2/node_modules/optimist/node_modules/wordwrap/test/idleness.txt
  64. +31 −0 finalVersion/node_modules/serialport2/node_modules/optimist/node_modules/wordwrap/test/wrap.js
  65. +46 −0 finalVersion/node_modules/serialport2/node_modules/optimist/package.json
  66. +71 −0 finalVersion/node_modules/serialport2/node_modules/optimist/test/_.js
  67. +2 −0  finalVersion/node_modules/serialport2/node_modules/optimist/test/_/argv.js
  68. +3 −0  finalVersion/node_modules/serialport2/node_modules/optimist/test/_/bin.js
  69. +420 −0 finalVersion/node_modules/serialport2/node_modules/optimist/test/parse.js
  70. +292 −0 finalVersion/node_modules/serialport2/node_modules/optimist/test/usage.js
  71. +2 −0  finalVersion/node_modules/serialport2/node_modules/sf/.npmignore
  72. +114 −0 finalVersion/node_modules/serialport2/node_modules/sf/README.md
  73. +2 −0  finalVersion/node_modules/serialport2/node_modules/sf/index.js
  74. +605 −0 finalVersion/node_modules/serialport2/node_modules/sf/lib/stringFormat.js
  75. +41 −0 finalVersion/node_modules/serialport2/node_modules/sf/package.json
  76. +62 −0 finalVersion/node_modules/serialport2/node_modules/sf/test/indentTest.js
  77. +501 −0 finalVersion/node_modules/serialport2/node_modules/sf/test/stringFormatTest.js
  78. +55 −0 finalVersion/node_modules/serialport2/package.json
  79. +259 −0 finalVersion/node_modules/serialport2/src/serialport.cpp
  80. +96 −0 finalVersion/node_modules/serialport2/src/serialport.h
  81. +202 −0 finalVersion/node_modules/serialport2/src/serialport_unix.cpp
  82. +324 −0 finalVersion/node_modules/serialport2/src/serialport_win.cpp
  83. +1,292 −0 finalVersion/node_modules/serialport2/src/win/disphelper.c
  84. +731 −0 finalVersion/node_modules/serialport2/src/win/disphelper.h
  85. +15 −0 finalVersion/node_modules/serialport2/test/arduinioEcho/arduinioEcho.ino
  86. +57 −0 finalVersion/node_modules/serialport2/test/echoTest.js
  87. +3 −0  finalVersion/node_modules/socket.io/.npmignore
  88. +6 −0 finalVersion/node_modules/socket.io/.travis.yml
  89. +294 −0 finalVersion/node_modules/socket.io/History.md
  90. +22 −0 finalVersion/node_modules/socket.io/LICENSE
  91. +31 −0 finalVersion/node_modules/socket.io/Makefile
  92. +364 −0 finalVersion/node_modules/socket.io/Readme.md
  93. +64 −0 finalVersion/node_modules/socket.io/benchmarks/decode.bench.js
  94. +90 −0 finalVersion/node_modules/socket.io/benchmarks/encode.bench.js
  95. +55 −0 finalVersion/node_modules/socket.io/benchmarks/runner.js
  96. +8 −0 finalVersion/node_modules/socket.io/index.js
  97. +167 −0 finalVersion/node_modules/socket.io/lib/client.js
  98. +97 −0 finalVersion/node_modules/socket.io/lib/logger.js
  99. +1,025 −0 finalVersion/node_modules/socket.io/lib/manager.js
  100. +355 −0 finalVersion/node_modules/socket.io/lib/namespace.js
  101. +249 −0 finalVersion/node_modules/socket.io/lib/parser.js
  102. +143 −0 finalVersion/node_modules/socket.io/lib/socket.io.js
  103. +369 −0 finalVersion/node_modules/socket.io/lib/socket.js
  104. +395 −0 finalVersion/node_modules/socket.io/lib/static.js
  105. +98 −0 finalVersion/node_modules/socket.io/lib/store.js
  106. +143 −0 finalVersion/node_modules/socket.io/lib/stores/memory.js
  107. +269 −0 finalVersion/node_modules/socket.io/lib/stores/redis.js
  108. +534 −0 finalVersion/node_modules/socket.io/lib/transport.js
  109. +129 −0 finalVersion/node_modules/socket.io/lib/transports/flashsocket.js
  110. +82 −0 finalVersion/node_modules/socket.io/lib/transports/htmlfile.js
  111. +147 −0 finalVersion/node_modules/socket.io/lib/transports/http-polling.js
  112. +121 −0 finalVersion/node_modules/socket.io/lib/transports/http.js
  113. +12 −0 finalVersion/node_modules/socket.io/lib/transports/index.js
  114. +97 −0 finalVersion/node_modules/socket.io/lib/transports/jsonp-polling.js
  115. +36 −0 finalVersion/node_modules/socket.io/lib/transports/websocket.js
  116. +362 −0 finalVersion/node_modules/socket.io/lib/transports/websocket/default.js
  117. +622 −0 finalVersion/node_modules/socket.io/lib/transports/websocket/hybi-07-12.js
  118. +622 −0 finalVersion/node_modules/socket.io/lib/transports/websocket/hybi-16.js
  119. +11 −0 finalVersion/node_modules/socket.io/lib/transports/websocket/index.js
  120. +69 −0 finalVersion/node_modules/socket.io/lib/transports/xhr-polling.js
  121. +50 −0 finalVersion/node_modules/socket.io/lib/util.js
  122. +1 −0  finalVersion/node_modules/socket.io/node_modules/policyfile/.npmignore
  123. +19 −0 finalVersion/node_modules/socket.io/node_modules/policyfile/LICENSE
  124. +7 −0 finalVersion/node_modules/socket.io/node_modules/policyfile/Makefile
  125. +98 −0 finalVersion/node_modules/socket.io/node_modules/policyfile/README.md
  126. +375 −0 finalVersion/node_modules/socket.io/node_modules/policyfile/doc/index.html
  127. +8 −0 finalVersion/node_modules/socket.io/node_modules/policyfile/examples/basic.fallback.js
  128. +5 −0 finalVersion/node_modules/socket.io/node_modules/policyfile/examples/basic.js
  129. +1 −0  finalVersion/node_modules/socket.io/node_modules/policyfile/index.js
  130. +289 −0 finalVersion/node_modules/socket.io/node_modules/policyfile/lib/server.js
  131. +43 −0 finalVersion/node_modules/socket.io/node_modules/policyfile/package.json
  132. +21 −0 finalVersion/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.crt
  133. +27 −0 finalVersion/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.private.key
  134. +231 −0 finalVersion/node_modules/socket.io/node_modules/policyfile/tests/unit.test.js
  135. +1 −0  finalVersion/node_modules/socket.io/node_modules/redis/.npmignore
  136. +638 −0 finalVersion/node_modules/socket.io/node_modules/redis/README.md
  137. +219 −0 finalVersion/node_modules/socket.io/node_modules/redis/changelog.md
  138. +5 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/auth.js
  139. +33 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/backpressure_drain.js
  140. +9 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/eval.js
  141. +24 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/extend.js
  142. +32 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/file.js
  143. +5 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/mget.js
  144. +10 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/monitor.js
  145. +46 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/multi.js
  146. +29 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/multi2.js
  147. +33 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/psubscribe.js
  148. +41 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/pub_sub.js
  149. +24 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/simple.js
  150. +17 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/sort.js
  151. +15 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/subqueries.js
  152. +19 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/subquery.js
  153. +29 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/unix_socket.js
  154. +31 −0 finalVersion/node_modules/socket.io/node_modules/redis/examples/web_server.js
  155. +39 −0 finalVersion/node_modules/socket.io/node_modules/redis/generate_commands.js
  156. +1,030 −0 finalVersion/node_modules/socket.io/node_modules/redis/index.js
  157. +126 −0 finalVersion/node_modules/socket.io/node_modules/redis/lib/commands.js
  158. +46 −0 finalVersion/node_modules/socket.io/node_modules/redis/lib/parser/hiredis.js
  159. +317 −0 finalVersion/node_modules/socket.io/node_modules/redis/lib/parser/javascript.js
  160. +61 −0 finalVersion/node_modules/socket.io/node_modules/redis/lib/queue.js
  161. +12 −0 finalVersion/node_modules/socket.io/node_modules/redis/lib/to_array.js
  162. +11 −0 finalVersion/node_modules/socket.io/node_modules/redis/lib/util.js
  163. +225 −0 finalVersion/node_modules/socket.io/node_modules/redis/multi_bench.js
  164. +9 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/.lock-wscript
  165. +16 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/Makefile
  166. 0  finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/README
  167. +121 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/bench.js
  168. BIN  finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/build/.wafpickle-7
  169. BIN  finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/build/Release/hiredis.node
  170. BIN  finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/build/Release/hiredis_1.o
  171. BIN  finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/build/Release/reader_1.o
  172. +51 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/build/c4che/Release.cache.py
  173. +2 −0  finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/build/c4che/build.config.py
  174. +44 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/build/config.log
  175. +16 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/CHANGELOG.md
  176. +29 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/COPYING
  177. +148 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/Makefile
  178. +352 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/README.md
  179. +97 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/adapters/ae.h
  180. +117 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/adapters/libev.h
  181. +78 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/adapters/libevent.h
  182. +604 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/async.c
  183. +125 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/async.h
  184. BIN  finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/async.o
  185. +338 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/dict.c
  186. +126 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/dict.h
  187. +56 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/example-ae.c
  188. +51 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/example-libev.c
  189. +52 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/example-libevent.c
  190. +68 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/example.c
  191. +16 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/fmacros.h
  192. +1,284 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/hiredis.c
  193. +204 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/hiredis.h
  194. BIN  finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/hiredis.o
  195. BIN  finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/libhiredis.a
  196. +279 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/net.c
  197. +47 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/net.h
  198. BIN  finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/net.o
  199. +605 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/sds.c
  200. +88 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/sds.h
  201. BIN  finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/sds.o
  202. +654 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis/test.c
  203. +14 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/hiredis.cc
  204. +39 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/hiredis.js
  205. +24 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/package.json
  206. +37 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/parser_bench.js
  207. +238 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/reader.cc
  208. +55 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/reader.h
  209. +172 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/test/reader.js
  210. +15 −0 finalVersion/node_modules/socket.io/node_modules/redis/node_modules/hiredis/wscript
  211. +36 −0 finalVersion/node_modules/socket.io/node_modules/redis/package.json
  212. +1,416 −0 finalVersion/node_modules/socket.io/node_modules/redis/test.js
  213. +89 −0 finalVersion/node_modules/socket.io/node_modules/redis/tests/buffer_bench.js
  214. +38 −0 finalVersion/node_modules/socket.io/node_modules/redis/tests/hiredis_parser.js
  215. +14 −0 finalVersion/node_modules/socket.io/node_modules/redis/tests/re_sub_test.js
  216. +29 −0 finalVersion/node_modules/socket.io/node_modules/redis/tests/reconnect_test.js
  217. +16 −0 finalVersion/node_modules/socket.io/node_modules/redis/tests/stress/codec.js
  218. +38 −0 finalVersion/node_modules/socket.io/node_modules/redis/tests/stress/pubsub/pub.js
  219. +10 −0 finalVersion/node_modules/socket.io/node_modules/redis/tests/stress/pubsub/run
  220. +23 −0 finalVersion/node_modules/socket.io/node_modules/redis/tests/stress/pubsub/server.js
  221. +49 −0 finalVersion/node_modules/socket.io/node_modules/redis/tests/stress/rpushblpop/pub.js
  222. +6 −0 finalVersion/node_modules/socket.io/node_modules/redis/tests/stress/rpushblpop/run
  223. +30 −0 finalVersion/node_modules/socket.io/node_modules/redis/tests/stress/rpushblpop/server.js
  224. +13 −0 finalVersion/node_modules/socket.io/node_modules/redis/tests/stress/speed/00
  225. +13 −0 finalVersion/node_modules/socket.io/node_modules/redis/tests/stress/speed/plot
  226. BIN  finalVersion/node_modules/socket.io/node_modules/redis/tests/stress/speed/size-rate.png
  227. +84 −0 finalVersion/node_modules/socket.io/node_modules/redis/tests/stress/speed/speed.js
  228. +18 −0 finalVersion/node_modules/socket.io/node_modules/redis/tests/sub_quit_test.js
  229. +2 −0  finalVersion/node_modules/socket.io/node_modules/socket.io-client/.npmignore
  230. +217 −0 finalVersion/node_modules/socket.io/node_modules/socket.io-client/History.md
  231. +20 −0 finalVersion/node_modules/socket.io/node_modules/socket.io-client/Makefile
  232. +246 −0 finalVersion/node_modules/socket.io/node_modules/socket.io-client/README.md
  233. +297 −0 finalVersion/node_modules/socket.io/node_modules/socket.io-client/bin/builder.js
  234. BIN  finalVersion/node_modules/socket.io/node_modules/socket.io-client/dist/WebSocketMain.swf
  235. BIN  finalVersion/node_modules/socket.io/node_modules/socket.io-client/dist/WebSocketMainInsecure.swf
Sorry, we could not display the entire diff because too many files (623) changed.
View
1  .gitignore
@@ -0,0 +1 @@
+*.doc
View
BIN  .help.md.swp
Binary file not shown
View
1  .~lock.Badass Speech.doc#
@@ -0,0 +1 @@
+Peter Gao,pgao,ubuntu,04.09.2012 18:22,file:///home/pgao/.config/libreoffice/3;
View
1  finalVersion/node_modules/.bin/serialportlist
View
1  finalVersion/node_modules/.bin/serialportterm
View
8 finalVersion/node_modules/serialport2/.npmignore
@@ -0,0 +1,8 @@
+/build/*
+node_modules
+*.node
+*.sh
+*.swp
+.lock*
+npm-debug.log
+.idea
View
101 finalVersion/node_modules/serialport2/README.md
@@ -0,0 +1,101 @@
+# SerialPort2
+
+Node.js serial port driver. Works on Windows, OSX, and linux.
+
+# Install
+
+```
+npm install serialport2
+```
+
+**Note for windows users.** If you are using Node v0.6.x you will need to have Python 2.7 installed.
+See [node-gyp](https://github.com/TooTallNate/node-gyp) for instruction on getting a working node-gyp
+environment.
+
+# Quick Example
+
+```javascript
+var SerialPort = require('serialport2').SerialPort;
+var port = new SerialPort();
+
+port.on('data', function(data) {
+ console.log(data.toString());
+});
+
+port.on('error', function(err) {
+ console.log(err);
+});
+
+port.open('COM4', {
+ baudRate: 9600,
+ dataBits: 8,
+ parity: 'none',
+ stopBits: 1
+}, function(err) {
+ port.write("hello world");
+ port.close();
+});
+```
+
+```javascript
+var sp = require('../');
+sp.list(function(err, ports) {
+ console.log(ports);
+});
+```
+
+# API
+
+## SerialPort
+
+### new SerialPort()
+
+Creates the serial port.
+
+### open(portName, [options], [callback])
+
+Open the serial port.
+
+__Arguments__
+
+ * portName - The name of the port to open. Example: Windows 'COM1', Linux '/dev/ttyUSB0'.
+ * options - Options for open
+ * baudRate - The baud rate [default: 9600]
+ * dataBits - The data bits [default: 8]
+ * parity - The parity, can be (none, odd, even) [default: 'none']
+ * stopBits - The number of stop bits, can be (1, 1.5, 2) [default: 1]
+ * flowControl - Enable flow control (true, false) [default: false]
+ * callback(err) - Callback called after opening the port.
+
+### write(buffer, [callback])
+
+Writes data to the serial port.
+
+__Arguments__
+
+ * buffer - This can be a node Buffer object or a string.
+ * callback(err, byteWritten) - Callback called after writing bytes.
+
+### close(callback)
+
+Closes the serial port.
+
+__Arguments__
+
+ * callback(err) - Callback called after the port is closed.
+
+### Event: data
+
+Event emitted by SerialPort when data is available. The first argument will contain a Buffer with the data.
+
+### Event: error
+
+Event emitted by SerialPort if an error occurs. The first argument will contain the error.
+
+## list(callback)
+
+Lists the serial ports on the machine.
+
+__Arguments__
+
+ * callback(err, ports) - Callback called after the list is retrieved.
View
15 finalVersion/node_modules/serialport2/bin/serialportList.js
@@ -0,0 +1,15 @@
+#!/usr/bin/env node
+
+var serialport = require('../');
+var sf = require('sf');
+
+serialport.list(function (err, results) {
+ if (err) {
+ throw err;
+ }
+
+ for (var i = 0; i < results.length; i++) {
+ var item = results[i];
+ console.log(sf('{comName,-15} {pnpId,-20} {manufacturer}', item));
+ }
+});
View
82 finalVersion/node_modules/serialport2/bin/serialportTerminal.js
@@ -0,0 +1,82 @@
+#!/usr/bin/env node
+
+var SerialPort = require('../').SerialPort;
+var optimist = require('optimist');
+
+var args = optimist
+ .alias('h', 'help')
+ .alias('h', '?')
+ .options('portname', {
+ alias: 'p',
+ describe: 'Name of serial port. See serialPortList.js for open serial ports.'
+ })
+ .options('baud', {
+ describe: 'Baud rate.',
+ default: 9600
+ })
+ .options('databits', {
+ describe: 'Data bits.',
+ default: 8
+ })
+ .options('parity', {
+ describe: 'Parity.',
+ default: 'none'
+ })
+ .options('stopbits', {
+ describe: 'Stop bits.',
+ default: 1
+ })
+ .options('localecho', {
+ describe: 'Enable local echo.',
+ boolean: true
+ })
+ .argv;
+
+if (!args.portname) {
+ return console.error("Serial port name is required.");
+}
+
+if (args.help) {
+ optimist.showHelp();
+ return process.exit(-1);
+}
+
+process.stdin.resume();
+process.stdin.setRawMode(true);
+process.stdin.on('data', function (s) {
+ if (s[0] === 0x03) {
+ port.close();
+ process.exit(0);
+ }
+ if (args.localecho) {
+ if (s[0] === 0x0d) {
+ process.stdout.write('\n');
+ } else {
+ process.stdout.write(s);
+ }
+ }
+ port.write(s, function (err) {
+ if (err) {
+ console.log(err);
+ }
+ });
+});
+
+var port = new SerialPort();
+
+port.on('data', function (data) {
+ process.stdout.write(data.toString());
+});
+
+port.on('error', function (err) {
+ console.log(err);
+});
+
+var openOptions = {
+ baudRate: args.baud,
+ dataBits: args.databits,
+ parity: args.parity,
+ stopBits: args.stopbits
+};
+port.open(args.portname, openOptions, function (err) {
+});
View
30 finalVersion/node_modules/serialport2/binding.gyp
@@ -0,0 +1,30 @@
+{
+ "targets": [
+ {
+ "target_name": "serialport2",
+ "sources": [
+ "src/serialport.cpp",
+ "src/serialport_unix.cpp",
+ "src/serialport.h"
+ ],
+ 'conditions': [
+ ['OS=="win"',
+ {
+ 'sources': [
+ "src/serialport_win.cpp",
+ 'src/win/disphelper.c',
+ 'src/win/disphelper.h'
+ ]
+ }
+ ],
+ ['OS!="win"',
+ {
+ 'sources': [
+ "src/serialport_unix.cpp"
+ ]
+ }
+ ]
+ ]
+ }
+ ]
+}
View
334 finalVersion/node_modules/serialport2/build/Makefile
@@ -0,0 +1,334 @@
+# We borrow heavily from the kernel build setup, though we are simpler since
+# we don't have Kconfig tweaking settings on us.
+
+# The implicit make rules have it looking for RCS files, among other things.
+# We instead explicitly write all the rules we care about.
+# It's even quicker (saves ~200ms) to pass -r on the command line.
+MAKEFLAGS=-r
+
+# The source directory tree.
+srcdir := ..
+abs_srcdir := $(abspath $(srcdir))
+
+# The name of the builddir.
+builddir_name ?= .
+
+# The V=1 flag on command line makes us verbosely print command lines.
+ifdef V
+ quiet=
+else
+ quiet=quiet_
+endif
+
+# Specify BUILDTYPE=Release on the command line for a release build.
+BUILDTYPE ?= Release
+
+# Directory all our build output goes into.
+# Note that this must be two directories beneath src/ for unit tests to pass,
+# as they reach into the src/ directory for data with relative paths.
+builddir ?= $(builddir_name)/$(BUILDTYPE)
+abs_builddir := $(abspath $(builddir))
+depsdir := $(builddir)/.deps
+
+# Object output directory.
+obj := $(builddir)/obj
+abs_obj := $(abspath $(obj))
+
+# We build up a list of every single one of the targets so we can slurp in the
+# generated dependency rule Makefiles in one pass.
+all_deps :=
+
+
+
+# C++ apps need to be linked with g++.
+#
+# Note: flock is used to seralize linking. Linking is a memory-intensive
+# process so running parallel links can often lead to thrashing. To disable
+# the serialization, override LINK via an envrionment variable as follows:
+#
+# export LINK=g++
+#
+# This will allow make to invoke N linker processes as specified in -jN.
+LINK ?= flock $(builddir)/linker.lock $(CXX)
+
+CC.target ?= $(CC)
+CFLAGS.target ?= $(CFLAGS)
+CXX.target ?= $(CXX)
+CXXFLAGS.target ?= $(CXXFLAGS)
+LINK.target ?= $(LINK)
+LDFLAGS.target ?= $(LDFLAGS)
+AR.target ?= $(AR)
+ARFLAGS.target ?= crsT
+
+# N.B.: the logic of which commands to run should match the computation done
+# in gyp's make.py where ARFLAGS.host etc. is computed.
+# TODO(evan): move all cross-compilation logic to gyp-time so we don't need
+# to replicate this environment fallback in make as well.
+CC.host ?= gcc
+CFLAGS.host ?=
+CXX.host ?= g++
+CXXFLAGS.host ?=
+LINK.host ?= g++
+LDFLAGS.host ?=
+AR.host ?= ar
+ARFLAGS.host := crsT
+
+# Define a dir function that can handle spaces.
+# http://www.gnu.org/software/make/manual/make.html#Syntax-of-Functions
+# "leading spaces cannot appear in the text of the first argument as written.
+# These characters can be put into the argument value by variable substitution."
+empty :=
+space := $(empty) $(empty)
+
+# http://stackoverflow.com/questions/1189781/using-make-dir-or-notdir-on-a-path-with-spaces
+replace_spaces = $(subst $(space),?,$1)
+unreplace_spaces = $(subst ?,$(space),$1)
+dirx = $(call unreplace_spaces,$(dir $(call replace_spaces,$1)))
+
+# Flags to make gcc output dependency info. Note that you need to be
+# careful here to use the flags that ccache and distcc can understand.
+# We write to a dep file on the side first and then rename at the end
+# so we can't end up with a broken dep file.
+depfile = $(depsdir)/$(call replace_spaces,$@).d
+DEPFLAGS = -MMD -MF $(depfile).raw
+
+# We have to fixup the deps output in a few ways.
+# (1) the file output should mention the proper .o file.
+# ccache or distcc lose the path to the target, so we convert a rule of
+# the form:
+# foobar.o: DEP1 DEP2
+# into
+# path/to/foobar.o: DEP1 DEP2
+# (2) we want missing files not to cause us to fail to build.
+# We want to rewrite
+# foobar.o: DEP1 DEP2 \
+# DEP3
+# to
+# DEP1:
+# DEP2:
+# DEP3:
+# so if the files are missing, they're just considered phony rules.
+# We have to do some pretty insane escaping to get those backslashes
+# and dollar signs past make, the shell, and sed at the same time.
+# Doesn't work with spaces, but that's fine: .d files have spaces in
+# their names replaced with other characters.
+define fixup_dep
+# The depfile may not exist if the input file didn't have any #includes.
+touch $(depfile).raw
+# Fixup path as in (1).
+sed -e "s|^$(notdir $@)|$@|" $(depfile).raw >> $(depfile)
+# Add extra rules as in (2).
+# We remove slashes and replace spaces with new lines;
+# remove blank lines;
+# delete the first line and append a colon to the remaining lines.
+sed -e 's|\\||' -e 'y| |\n|' $(depfile).raw |\
+ grep -v '^$$' |\
+ sed -e 1d -e 's|$$|:|' \
+ >> $(depfile)
+rm $(depfile).raw
+endef
+
+# Command definitions:
+# - cmd_foo is the actual command to run;
+# - quiet_cmd_foo is the brief-output summary of the command.
+
+quiet_cmd_cc = CC($(TOOLSET)) $@
+cmd_cc = $(CC.$(TOOLSET)) $(GYP_CFLAGS) $(DEPFLAGS) $(CFLAGS.$(TOOLSET)) -c -o $@ $<
+
+quiet_cmd_cxx = CXX($(TOOLSET)) $@
+cmd_cxx = $(CXX.$(TOOLSET)) $(GYP_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $<
+
+quiet_cmd_touch = TOUCH $@
+cmd_touch = touch $@
+
+quiet_cmd_copy = COPY $@
+# send stderr to /dev/null to ignore messages when linking directories.
+cmd_copy = ln -f "$<" "$@" 2>/dev/null || (rm -rf "$@" && cp -af "$<" "$@")
+
+quiet_cmd_alink = AR($(TOOLSET)) $@
+cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) $(ARFLAGS.$(TOOLSET)) $@ $(filter %.o,$^)
+
+# Due to circular dependencies between libraries :(, we wrap the
+# special "figure out circular dependencies" flags around the entire
+# input list during linking.
+quiet_cmd_link = LINK($(TOOLSET)) $@
+cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--start-group $(LD_INPUTS) -Wl,--end-group $(LIBS)
+
+# We support two kinds of shared objects (.so):
+# 1) shared_library, which is just bundling together many dependent libraries
+# into a link line.
+# 2) loadable_module, which is generating a module intended for dlopen().
+#
+# They differ only slightly:
+# In the former case, we want to package all dependent code into the .so.
+# In the latter case, we want to package just the API exposed by the
+# outermost module.
+# This means shared_library uses --whole-archive, while loadable_module doesn't.
+# (Note that --whole-archive is incompatible with the --start-group used in
+# normal linking.)
+
+# Other shared-object link notes:
+# - Set SONAME to the library filename so our binaries don't reference
+# the local, absolute paths used on the link command-line.
+quiet_cmd_solink = SOLINK($(TOOLSET)) $@
+cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -o $@ -Wl,--whole-archive $(LD_INPUTS) -Wl,--no-whole-archive $(LIBS)
+
+quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@
+cmd_solink_module = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -o $@ -Wl,--start-group $(filter-out FORCE_DO_CMD, $^) -Wl,--end-group $(LIBS)
+
+
+# Define an escape_quotes function to escape single quotes.
+# This allows us to handle quotes properly as long as we always use
+# use single quotes and escape_quotes.
+escape_quotes = $(subst ','\'',$(1))
+# This comment is here just to include a ' to unconfuse syntax highlighting.
+# Define an escape_vars function to escape '$' variable syntax.
+# This allows us to read/write command lines with shell variables (e.g.
+# $LD_LIBRARY_PATH), without triggering make substitution.
+escape_vars = $(subst $$,$$$$,$(1))
+# Helper that expands to a shell command to echo a string exactly as it is in
+# make. This uses printf instead of echo because printf's behaviour with respect
+# to escape sequences is more portable than echo's across different shells
+# (e.g., dash, bash).
+exact_echo = printf '%s\n' '$(call escape_quotes,$(1))'
+
+# Helper to compare the command we're about to run against the command
+# we logged the last time we ran the command. Produces an empty
+# string (false) when the commands match.
+# Tricky point: Make has no string-equality test function.
+# The kernel uses the following, but it seems like it would have false
+# positives, where one string reordered its arguments.
+# arg_check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \
+# $(filter-out $(cmd_$@), $(cmd_$(1))))
+# We instead substitute each for the empty string into the other, and
+# say they're equal if both substitutions produce the empty string.
+# .d files contain ? instead of spaces, take that into account.
+command_changed = $(or $(subst $(cmd_$(1)),,$(cmd_$(call replace_spaces,$@))),\
+ $(subst $(cmd_$(call replace_spaces,$@)),,$(cmd_$(1))))
+
+# Helper that is non-empty when a prerequisite changes.
+# Normally make does this implicitly, but we force rules to always run
+# so we can check their command lines.
+# $? -- new prerequisites
+# $| -- order-only dependencies
+prereq_changed = $(filter-out FORCE_DO_CMD,$(filter-out $|,$?))
+
+# Helper that executes all postbuilds, and deletes the output file when done
+# if any of the postbuilds failed.
+define do_postbuilds
+ @E=0;\
+ for p in $(POSTBUILDS); do\
+ eval $$p;\
+ F=$$?;\
+ if [ $$F -ne 0 ]; then\
+ E=$$F;\
+ fi;\
+ done;\
+ if [ $$E -ne 0 ]; then\
+ rm -rf "$@";\
+ exit $$E;\
+ fi
+endef
+
+# do_cmd: run a command via the above cmd_foo names, if necessary.
+# Should always run for a given target to handle command-line changes.
+# Second argument, if non-zero, makes it do asm/C/C++ dependency munging.
+# Third argument, if non-zero, makes it do POSTBUILDS processing.
+# Note: We intentionally do NOT call dirx for depfile, since it contains ? for
+# spaces already and dirx strips the ? characters.
+define do_cmd
+$(if $(or $(command_changed),$(prereq_changed)),
+ @$(call exact_echo, $($(quiet)cmd_$(1)))
+ @mkdir -p "$(call dirx,$@)" "$(dir $(depfile))"
+ $(if $(findstring flock,$(word 1,$(cmd_$1))),
+ @$(cmd_$(1))
+ @echo " $(quiet_cmd_$(1)): Finished",
+ @$(cmd_$(1))
+ )
+ @$(call exact_echo,$(call escape_vars,cmd_$(call replace_spaces,$@) := $(cmd_$(1)))) > $(depfile)
+ @$(if $(2),$(fixup_dep))
+ $(if $(and $(3), $(POSTBUILDS)),
+ $(call do_postbuilds)
+ )
+)
+endef
+
+# Declare the "all" target first so it is the default,
+# even though we don't have the deps yet.
+.PHONY: all
+all:
+
+# make looks for ways to re-generate included makefiles, but in our case, we
+# don't have a direct way. Explicitly telling make that it has nothing to do
+# for them makes it go faster.
+%.d: ;
+
+# Use FORCE_DO_CMD to force a target to run. Should be coupled with
+# do_cmd.
+.PHONY: FORCE_DO_CMD
+FORCE_DO_CMD:
+
+TOOLSET := target
+# Suffix rules, putting all outputs into $(obj).
+$(obj).$(TOOLSET)/%.o: $(srcdir)/%.c FORCE_DO_CMD
+ @$(call do_cmd,cc,1)
+$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD
+ @$(call do_cmd,cxx,1)
+$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cpp FORCE_DO_CMD
+ @$(call do_cmd,cxx,1)
+$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cxx FORCE_DO_CMD
+ @$(call do_cmd,cxx,1)
+$(obj).$(TOOLSET)/%.o: $(srcdir)/%.S FORCE_DO_CMD
+ @$(call do_cmd,cc,1)
+$(obj).$(TOOLSET)/%.o: $(srcdir)/%.s FORCE_DO_CMD
+ @$(call do_cmd,cc,1)
+
+# Try building from generated source, too.
+$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD
+ @$(call do_cmd,cc,1)
+$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD
+ @$(call do_cmd,cxx,1)
+$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cpp FORCE_DO_CMD
+ @$(call do_cmd,cxx,1)
+$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cxx FORCE_DO_CMD
+ @$(call do_cmd,cxx,1)
+$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.S FORCE_DO_CMD
+ @$(call do_cmd,cc,1)
+$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.s FORCE_DO_CMD
+ @$(call do_cmd,cc,1)
+
+$(obj).$(TOOLSET)/%.o: $(obj)/%.c FORCE_DO_CMD
+ @$(call do_cmd,cc,1)
+$(obj).$(TOOLSET)/%.o: $(obj)/%.cc FORCE_DO_CMD
+ @$(call do_cmd,cxx,1)
+$(obj).$(TOOLSET)/%.o: $(obj)/%.cpp FORCE_DO_CMD
+ @$(call do_cmd,cxx,1)
+$(obj).$(TOOLSET)/%.o: $(obj)/%.cxx FORCE_DO_CMD
+ @$(call do_cmd,cxx,1)
+$(obj).$(TOOLSET)/%.o: $(obj)/%.S FORCE_DO_CMD
+ @$(call do_cmd,cc,1)
+$(obj).$(TOOLSET)/%.o: $(obj)/%.s FORCE_DO_CMD
+ @$(call do_cmd,cc,1)
+
+
+ifeq ($(strip $(foreach prefix,$(NO_LOAD),\
+ $(findstring $(join ^,$(prefix)),\
+ $(join ^,serialport2.target.mk)))),)
+ include serialport2.target.mk
+endif
+
+quiet_cmd_regen_makefile = ACTION Regenerating $@
+cmd_regen_makefile = /home/pgao/.node-gyp/0.8.8/tools/gyp/gyp -fmake --ignore-environment "--toplevel-dir=." "-I/home/pgao/Dropbox/Private Files/School and Work/College/Hackers@Berkeley/IntroWorkshop/finalVersion/node_modules/serialport2/build/config.gypi" -I/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi -I/home/pgao/.node-gyp/0.8.8/common.gypi "--depth=." "-Goutput_dir=." "--generator-output=build" "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/home/pgao/.node-gyp/0.8.8" "-Dmodule_root_dir=/home/pgao/Dropbox/Private Files/School and Work/College/Hackers@Berkeley/IntroWorkshop/finalVersion/node_modules/serialport2" binding.gyp
+Makefile: $(srcdir)/../../../../../../../../../../../usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi $(srcdir)/../../../../../../../../../.node-gyp/0.8.8/common.gypi $(srcdir)/build/config.gypi $(srcdir)/binding.gyp
+ $(call do_cmd,regen_makefile)
+
+# "all" is a concatenation of the "all" targets from all the included
+# sub-makefiles. This is just here to clarify.
+all:
+
+# Add in dependency-tracking rules. $(all_deps) is the list of every single
+# target in our tree. Only consider the ones with .d (dependency) info:
+d_files := $(wildcard $(foreach f,$(all_deps),$(depsdir)/$(f).d))
+ifneq ($(d_files),)
+ include $(d_files)
+endif
View
1  ...ersion/node_modules/serialport2/build/Release/.deps/Release/obj.target/serialport2.node.d
@@ -0,0 +1 @@
+cmd_Release/obj.target/serialport2.node := flock ./Release/linker.lock g++ -shared -pthread -rdynamic -m64 -Wl,-soname=serialport2.node -o Release/obj.target/serialport2.node -Wl,--start-group Release/obj.target/serialport2/src/serialport.o Release/obj.target/serialport2/src/serialport_unix.o -Wl,--end-group
View
34 ...modules/serialport2/build/Release/.deps/Release/obj.target/serialport2/src/serialport.o.d
@@ -0,0 +1,34 @@
+cmd_Release/obj.target/serialport2/src/serialport.o := g++ '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' -I/home/pgao/.node-gyp/0.8.8/src -I/home/pgao/.node-gyp/0.8.8/deps/uv/include -I/home/pgao/.node-gyp/0.8.8/deps/v8/include -fPIC -Wall -pthread -m64 -O2 -fno-strict-aliasing -fno-tree-vrp -fno-rtti -fno-exceptions -MMD -MF ./Release/.deps/Release/obj.target/serialport2/src/serialport.o.d.raw -c -o Release/obj.target/serialport2/src/serialport.o ../src/serialport.cpp
+Release/obj.target/serialport2/src/serialport.o: ../src/serialport.cpp \
+ ../src/serialport.h /home/pgao/.node-gyp/0.8.8/src/node.h \
+ /home/pgao/.node-gyp/0.8.8/deps/uv/include/uv.h \
+ /home/pgao/.node-gyp/0.8.8/deps/uv/include/ares.h \
+ /home/pgao/.node-gyp/0.8.8/deps/uv/include/ares_version.h \
+ /home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/uv-unix.h \
+ /home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/ngx-queue.h \
+ /home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/ev.h \
+ /home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/eio.h \
+ /home/pgao/.node-gyp/0.8.8/deps/v8/include/v8.h \
+ /home/pgao/.node-gyp/0.8.8/deps/v8/include/v8stdint.h \
+ /home/pgao/.node-gyp/0.8.8/src/node_object_wrap.h \
+ /home/pgao/.node-gyp/0.8.8/src/node.h \
+ /home/pgao/.node-gyp/0.8.8/src/ev-emul.h \
+ /home/pgao/.node-gyp/0.8.8/src/eio-emul.h \
+ /home/pgao/.node-gyp/0.8.8/src/node_buffer.h
+../src/serialport.cpp:
+../src/serialport.h:
+/home/pgao/.node-gyp/0.8.8/src/node.h:
+/home/pgao/.node-gyp/0.8.8/deps/uv/include/uv.h:
+/home/pgao/.node-gyp/0.8.8/deps/uv/include/ares.h:
+/home/pgao/.node-gyp/0.8.8/deps/uv/include/ares_version.h:
+/home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/uv-unix.h:
+/home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/ngx-queue.h:
+/home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/ev.h:
+/home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/eio.h:
+/home/pgao/.node-gyp/0.8.8/deps/v8/include/v8.h:
+/home/pgao/.node-gyp/0.8.8/deps/v8/include/v8stdint.h:
+/home/pgao/.node-gyp/0.8.8/src/node_object_wrap.h:
+/home/pgao/.node-gyp/0.8.8/src/node.h:
+/home/pgao/.node-gyp/0.8.8/src/ev-emul.h:
+/home/pgao/.node-gyp/0.8.8/src/eio-emul.h:
+/home/pgao/.node-gyp/0.8.8/src/node_buffer.h:
View
35 ...es/serialport2/build/Release/.deps/Release/obj.target/serialport2/src/serialport_unix.o.d
@@ -0,0 +1,35 @@
+cmd_Release/obj.target/serialport2/src/serialport_unix.o := g++ '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' -I/home/pgao/.node-gyp/0.8.8/src -I/home/pgao/.node-gyp/0.8.8/deps/uv/include -I/home/pgao/.node-gyp/0.8.8/deps/v8/include -fPIC -Wall -pthread -m64 -O2 -fno-strict-aliasing -fno-tree-vrp -fno-rtti -fno-exceptions -MMD -MF ./Release/.deps/Release/obj.target/serialport2/src/serialport_unix.o.d.raw -c -o Release/obj.target/serialport2/src/serialport_unix.o ../src/serialport_unix.cpp
+Release/obj.target/serialport2/src/serialport_unix.o: \
+ ../src/serialport_unix.cpp ../src/serialport.h \
+ /home/pgao/.node-gyp/0.8.8/src/node.h \
+ /home/pgao/.node-gyp/0.8.8/deps/uv/include/uv.h \
+ /home/pgao/.node-gyp/0.8.8/deps/uv/include/ares.h \
+ /home/pgao/.node-gyp/0.8.8/deps/uv/include/ares_version.h \
+ /home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/uv-unix.h \
+ /home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/ngx-queue.h \
+ /home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/ev.h \
+ /home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/eio.h \
+ /home/pgao/.node-gyp/0.8.8/deps/v8/include/v8.h \
+ /home/pgao/.node-gyp/0.8.8/deps/v8/include/v8stdint.h \
+ /home/pgao/.node-gyp/0.8.8/src/node_object_wrap.h \
+ /home/pgao/.node-gyp/0.8.8/src/node.h \
+ /home/pgao/.node-gyp/0.8.8/src/ev-emul.h \
+ /home/pgao/.node-gyp/0.8.8/src/eio-emul.h \
+ /home/pgao/.node-gyp/0.8.8/src/node_buffer.h
+../src/serialport_unix.cpp:
+../src/serialport.h:
+/home/pgao/.node-gyp/0.8.8/src/node.h:
+/home/pgao/.node-gyp/0.8.8/deps/uv/include/uv.h:
+/home/pgao/.node-gyp/0.8.8/deps/uv/include/ares.h:
+/home/pgao/.node-gyp/0.8.8/deps/uv/include/ares_version.h:
+/home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/uv-unix.h:
+/home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/ngx-queue.h:
+/home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/ev.h:
+/home/pgao/.node-gyp/0.8.8/deps/uv/include/uv-private/eio.h:
+/home/pgao/.node-gyp/0.8.8/deps/v8/include/v8.h:
+/home/pgao/.node-gyp/0.8.8/deps/v8/include/v8stdint.h:
+/home/pgao/.node-gyp/0.8.8/src/node_object_wrap.h:
+/home/pgao/.node-gyp/0.8.8/src/node.h:
+/home/pgao/.node-gyp/0.8.8/src/ev-emul.h:
+/home/pgao/.node-gyp/0.8.8/src/eio-emul.h:
+/home/pgao/.node-gyp/0.8.8/src/node_buffer.h:
View
1  finalVersion/node_modules/serialport2/build/Release/.deps/Release/serialport2.node.d
@@ -0,0 +1 @@
+cmd_Release/serialport2.node := ln -f "Release/obj.target/serialport2.node" "Release/serialport2.node" 2>/dev/null || (rm -rf "Release/serialport2.node" && cp -af "Release/obj.target/serialport2.node" "Release/serialport2.node")
View
0  finalVersion/node_modules/serialport2/build/Release/linker.lock
No changes.
View
BIN  finalVersion/node_modules/serialport2/build/Release/obj.target/serialport2.node
Binary file not shown
View
BIN  finalVersion/node_modules/serialport2/build/Release/obj.target/serialport2/src/serialport.o
Binary file not shown
View
BIN  ...rsion/node_modules/serialport2/build/Release/obj.target/serialport2/src/serialport_unix.o
Binary file not shown
View
BIN  finalVersion/node_modules/serialport2/build/Release/serialport2.node
Binary file not shown
View
6 finalVersion/node_modules/serialport2/build/binding.Makefile
@@ -0,0 +1,6 @@
+# This file is generated by gyp; do not edit.
+
+export builddir_name ?= build/./.
+.PHONY: all
+all:
+ $(MAKE) serialport2
View
104 finalVersion/node_modules/serialport2/build/config.gypi
@@ -0,0 +1,104 @@
+# Do not edit. File was generated by node-gyp's "configure" step
+{
+ "target_defaults": {
+ "cflags": [],
+ "default_configuration": "Release",
+ "defines": [],
+ "include_dirs": [],
+ "libraries": []
+ },
+ "variables": {
+ "clang": 0,
+ "gcc_version": 46,
+ "host_arch": "x64",
+ "node_install_npm": "true",
+ "node_install_waf": "true",
+ "node_prefix": "",
+ "node_shared_openssl": "false",
+ "node_shared_v8": "false",
+ "node_shared_zlib": "false",
+ "node_use_dtrace": "false",
+ "node_use_etw": "false",
+ "node_use_openssl": "true",
+ "target_arch": "x64",
+ "v8_no_strict_aliasing": 1,
+ "v8_use_snapshot": "true",
+ "nodedir": "/home/pgao/.node-gyp/0.8.8",
+ "copy_dev_lib": "true",
+ "cache_lock_stale": "60000",
+ "pre": "",
+ "sign_git_tag": "",
+ "always_auth": "",
+ "user_agent": "node/v0.8.8",
+ "description": "true",
+ "fetch_retries": "2",
+ "init_version": "0.0.0",
+ "user": "",
+ "force": "",
+ "ignore": "",
+ "cache_min": "",
+ "editor": "vi",
+ "rollback": "true",
+ "cache_max": "null",
+ "userconfig": "/home/pgao/.npmrc",
+ "coverage": "",
+ "engine_strict": "",
+ "init_author_name": "",
+ "init_author_url": "",
+ "tmp": "/home/pgao/tmp",
+ "userignorefile": "/home/pgao/.npmignore",
+ "yes": "",
+ "depth": "null",
+ "save_dev": "",
+ "usage": "",
+ "https_proxy": "",
+ "onload_script": "",
+ "rebuild_bundle": "true",
+ "save_bundle": "",
+ "shell": "/bin/bash",
+ "prefix": "/usr/local",
+ "registry": "https://registry.npmjs.org/",
+ "browser": "google-chrome",
+ "cache_lock_wait": "10000",
+ "save_optional": "",
+ "searchopts": "",
+ "versions": "",
+ "cache": "/home/pgao/.npm",
+ "npaturl": "http://npat.npmjs.org/",
+ "searchsort": "name",
+ "version": "",
+ "viewer": "man",
+ "color": "true",
+ "fetch_retry_mintimeout": "10000",
+ "umask": "18",
+ "fetch_retry_maxtimeout": "60000",
+ "message": "%s",
+ "ca": "\"-----BEGIN CERTIFICATE-----\\nMIIChzCCAfACCQDauvz/KHp8ejANBgkqhkiG9w0BAQUFADCBhzELMAkGA1UEBhMC\\nVVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMQwwCgYDVQQKEwNucG0x\\nIjAgBgNVBAsTGW5wbSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxDjAMBgNVBAMTBW5w\\nbUNBMRcwFQYJKoZIhvcNAQkBFghpQGl6cy5tZTAeFw0xMTA5MDUwMTQ3MTdaFw0y\\nMTA5MDIwMTQ3MTdaMIGHMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEDAOBgNV\\nBAcTB09ha2xhbmQxDDAKBgNVBAoTA25wbTEiMCAGA1UECxMZbnBtIENlcnRpZmlj\\nYXRlIEF1dGhvcml0eTEOMAwGA1UEAxMFbnBtQ0ExFzAVBgkqhkiG9w0BCQEWCGlA\\naXpzLm1lMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLI4tIqPpRW+ACw9GE\\nOgBlJZwK5f8nnKCLK629Pv5yJpQKs3DENExAyOgDcyaF0HD0zk8zTp+ZsLaNdKOz\\nGn2U181KGprGKAXP6DU6ByOJDWmTlY6+Ad1laYT0m64fERSpHw/hjD3D+iX4aMOl\\ny0HdbT5m1ZGh6SJz3ZqxavhHLQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAC4ySDbC\\nl7W1WpLmtLGEQ/yuMLUf6Jy/vr+CRp4h+UzL+IQpCv8FfxsYE7dhf/bmWTEupBkv\\nyNL18lipt2jSvR3v6oAHAReotvdjqhxddpe5Holns6EQd1/xEZ7sB1YhQKJtvUrl\\nZNufy1Jf1r0ldEGeA+0ISck7s+xSh9rQD2Op\\n-----END CERTIFICATE-----\\n\"",
+ "global": "",
+ "link": "",
+ "save": "",
+ "unicode": "true",
+ "long": "",
+ "production": "",
+ "unsafe_perm": "true",
+ "node_version": "v0.8.8",
+ "tag": "latest",
+ "fetch_retry_factor": "10",
+ "npat": "",
+ "proprietary_attribs": "true",
+ "strict_ssl": "true",
+ "username": "",
+ "dev": "",
+ "globalconfig": "/usr/local/etc/npmrc",
+ "init_module": "/home/pgao/.npm-init.js",
+ "parseable": "",
+ "globalignorefile": "/usr/local/etc/npmignore",
+ "cache_lock_retries": "10",
+ "group": "1000",
+ "init_author_email": "",
+ "searchexclude": "",
+ "git": "git",
+ "optional": "true",
+ "json": ""
+ }
+}
View
113 finalVersion/node_modules/serialport2/build/serialport2.target.mk
@@ -0,0 +1,113 @@
+# This file is generated by gyp; do not edit.
+
+TOOLSET := target
+TARGET := serialport2
+DEFS_Debug := '-D_LARGEFILE_SOURCE' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DDEBUG' \
+ '-D_DEBUG'
+
+# Flags passed to all source files.
+CFLAGS_Debug := -fPIC \
+ -Wall \
+ -pthread \
+ -m64 \
+ -g \
+ -O0
+
+# Flags passed to only C files.
+CFLAGS_C_Debug :=
+
+# Flags passed to only C++ files.
+CFLAGS_CC_Debug := -fno-rtti \
+ -fno-exceptions
+
+INCS_Debug := -I/home/pgao/.node-gyp/0.8.8/src \
+ -I/home/pgao/.node-gyp/0.8.8/deps/uv/include \
+ -I/home/pgao/.node-gyp/0.8.8/deps/v8/include
+
+DEFS_Release := '-D_LARGEFILE_SOURCE' \
+ '-D_FILE_OFFSET_BITS=64'
+
+# Flags passed to all source files.
+CFLAGS_Release := -fPIC \
+ -Wall \
+ -pthread \
+ -m64 \
+ -O2 \
+ -fno-strict-aliasing \
+ -fno-tree-vrp
+
+# Flags passed to only C files.
+CFLAGS_C_Release :=
+
+# Flags passed to only C++ files.
+CFLAGS_CC_Release := -fno-rtti \
+ -fno-exceptions
+
+INCS_Release := -I/home/pgao/.node-gyp/0.8.8/src \
+ -I/home/pgao/.node-gyp/0.8.8/deps/uv/include \
+ -I/home/pgao/.node-gyp/0.8.8/deps/v8/include
+
+OBJS := $(obj).target/$(TARGET)/src/serialport.o \
+ $(obj).target/$(TARGET)/src/serialport_unix.o
+
+# Add to the list of files we specially track dependencies for.
+all_deps += $(OBJS)
+
+# CFLAGS et al overrides must be target-local.
+# See "Target-specific Variable Values" in the GNU Make manual.
+$(OBJS): TOOLSET := $(TOOLSET)
+$(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE))
+$(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE))
+
+# Suffix rules, putting all outputs into $(obj).
+
+$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.cpp FORCE_DO_CMD
+ @$(call do_cmd,cxx,1)
+
+# Try building from generated source, too.
+
+$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.cpp FORCE_DO_CMD
+ @$(call do_cmd,cxx,1)
+
+$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.cpp FORCE_DO_CMD
+ @$(call do_cmd,cxx,1)
+
+# End of this set of suffix rules
+### Rules for final target.
+LDFLAGS_Debug := -pthread \
+ -rdynamic \
+ -m64
+
+LDFLAGS_Release := -pthread \
+ -rdynamic \
+ -m64
+
+LIBS :=
+
+$(obj).target/serialport2.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE))
+$(obj).target/serialport2.node: LIBS := $(LIBS)
+$(obj).target/serialport2.node: TOOLSET := $(TOOLSET)
+$(obj).target/serialport2.node: $(OBJS) FORCE_DO_CMD
+ $(call do_cmd,solink_module)
+
+all_deps += $(obj).target/serialport2.node
+# Add target alias
+.PHONY: serialport2
+serialport2: $(builddir)/serialport2.node
+
+# Copy this to the executable output path.
+$(builddir)/serialport2.node: TOOLSET := $(TOOLSET)
+$(builddir)/serialport2.node: $(obj).target/serialport2.node FORCE_DO_CMD
+ $(call do_cmd,copy)
+
+all_deps += $(builddir)/serialport2.node
+# Short alias for building this executable.
+.PHONY: serialport2.node
+serialport2.node: $(obj).target/serialport2.node $(builddir)/serialport2.node
+
+# Add executable to "all" target.
+.PHONY: all
+all: $(builddir)/serialport2.node
+
View
3  finalVersion/node_modules/serialport2/index.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./lib/serialport');
View
206 finalVersion/node_modules/serialport2/lib/serialport.js
@@ -0,0 +1,206 @@
+'use strict';
+
+var SerialPortBinding = require("bindings")("serialport2.node");
+var util = require('util');
+var fs = require('fs');
+var stream = require('stream');
+var path = require('path');
+var async = require('async');
+var child_process = require('child_process');
+
+function SerialPort () {
+ stream.Stream.call(this);
+}
+util.inherits(SerialPort, stream.Stream);
+exports.SerialPort = SerialPort;
+
+SerialPort.prototype.open = function (path, options, callback) {
+ var self = this;
+ process.nextTick(function () {
+ options = options || {};
+ options.baudRate = options.baudRate || 9600;
+ options.dataBits = options.dataBits || 8;
+ options.parity = options.parity || 'none';
+ options.stopBits = options.stopBits || 1;
+ if (!('flowControl' in options)) {
+ options.flowControl = false;
+ }
+ options.bufferSize = options.bufferSize || 100;
+ options.dataCallback = function (data) {
+ self.emit('data', data);
+ };
+ options.errorCallback = function (err) {
+ self.emit('error', err);
+ };
+ options.disconnectedCallback = function () {
+ self.emit('error', new Error("Disconnected"));
+ self.close();
+ };
+
+ if (process.platform == 'win32') {
+ path = '\\\\.\\' + path;
+ } else {
+ self.readStream = fs.createReadStream(path, { bufferSize: options.bufferSize });
+ self.readStream.on("data", options.dataCallback);
+ self.readStream.on("error", options.errorCallback);
+ self.readStream.on("close", function () {
+ self.close();
+ });
+ self.readStream.on("end", function () {
+ self.emit('end');
+ });
+ }
+
+ SerialPortBinding.open(path, options, function (err, fd) {
+ self.fd = fd;
+ if (callback) {
+ callback(err);
+ }
+ if (err) {
+ return self.emit('error', err);
+ }
+
+ self.emit('open');
+ });
+ });
+};
+
+SerialPort.prototype.write = function (buffer, callback) {
+ var self = this;
+ if (!this.fd) {
+ if (callback) {
+ return callback(new Error("Serialport not open."));
+ } else {
+ return;
+ }
+ }
+
+ if (!Buffer.isBuffer(buffer)) {
+ buffer = new Buffer(buffer);
+ }
+ SerialPortBinding.write(this.fd, buffer, function (err, results) {
+ if (err) {
+ self.emit('error', err);
+ }
+ if (callback) {
+ callback(err, results);
+ }
+ });
+};
+
+SerialPort.prototype.close = function (callback) {
+ var fd = this.fd;
+ this.fd = 0;
+
+ if (this.closing) {
+ return;
+ }
+ if (!fd) {
+ if (callback) {
+ return callback(new Error("Serialport not open."));
+ } else {
+ return;
+ }
+ }
+
+ this.closing = true;
+ try {
+ var self = this;
+ if (self.readStream) {
+ self.readStream.destroy();
+ }
+
+ SerialPortBinding.close(fd, function (err) {
+ if (err) {
+ self.emit('error', err);
+ }
+ if (callback) {
+ callback(err);
+ }
+ self.emit('close');
+ this.closing = false;
+ });
+ } catch (ex) {
+ this.closing = false;
+ throw ex;
+ }
+};
+
+function listUnix (callback) {
+ fs.readdir("/dev/serial/by-id", function (err, files) {
+ if (err) {
+ // if this directory is not found this could just be because it's not plugged in
+ if (err.errno === 34) {
+ return callback(null, []);
+ }
+ return console.log(err);
+ }
+
+ var dirName = "/dev/serial/by-id";
+ async.map(files, function (file, callback) {
+ var fileName = path.join(dirName, file);
+ fs.readlink(fileName, function (err, link) {
+ if (err) {
+ return callback(err);
+ }
+ link = path.resolve(dirName, link);
+ callback(null, {
+ comName: link,
+ manufacturer: undefined,
+ pnpId: file
+ });
+ });
+ }, callback);
+ });
+}
+
+function listOSX (callback) {
+ child_process.exec('/usr/sbin/system_profiler SPUSBDataType', function (err, stdout, stderr) {
+ if (err) {
+ return callback(err);
+ }
+
+ stderr = stderr.trim();
+ if (stderr.length > 0) {
+ return callback(new Error(stderr));
+ }
+
+ var lines = stdout.split('\n');
+ var items = [];
+ var currentItem = {};
+ lines.forEach(function (line) {
+ line = line.trim();
+ line = line.replace(/\s+/, ' ');
+ var m;
+
+ if (m = line.match(/^Serial Number: (.+)$/)) {
+ currentItem['serialNumber'] = m[1];
+ } else if (m = line.match(/^Location ID: (.+)$/)) {
+ currentItem['locationId'] = m[1];
+ } else if (m = line.match(/^Product ID: (.+)$/)) {
+ currentItem['productId'] = m[1];
+ } else if (m = line.match(/^Vendor ID: (.+)$/)) {
+ currentItem['vendorId'] = m[1];
+ } else if (m = line.match(/^Manufacturer: (.+)$/)) {
+ currentItem['manufacturer'] = m[1];
+ } else if (/^$/.test(line)) {
+ if ('serialNumber' in currentItem) {
+ currentItem['comName'] = "/dev/cu.usbserial-" + currentItem['serialNumber'];
+ items.push(currentItem);
+ currentItem = {};
+ }
+ }
+ });
+ callback(null, items);
+ });
+}
+
+exports.list = function (callback) {
+ if (process.platform === 'win32') {
+ SerialPortBinding.list(callback);
+ } else if (process.platform === 'darwin') {
+ listOSX(callback);
+ } else {
+ listUnix(callback);
+ }
+};
View
9 finalVersion/node_modules/serialport2/node_modules/async/.gitmodules
@@ -0,0 +1,9 @@
+[submodule "deps/nodeunit"]
+ path = deps/nodeunit
+ url = git://github.com/caolan/nodeunit.git
+[submodule "deps/UglifyJS"]
+ path = deps/UglifyJS
+ url = https://github.com/mishoo/UglifyJS.git
+[submodule "deps/nodelint"]
+ path = deps/nodelint
+ url = https://github.com/tav/nodelint.git
View
4 finalVersion/node_modules/serialport2/node_modules/async/.npmignore
@@ -0,0 +1,4 @@
+deps
+dist
+test
+nodelint.cfg
View
19 finalVersion/node_modules/serialport2/node_modules/async/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2010 Caolan McMahon
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
View
25 finalVersion/node_modules/serialport2/node_modules/async/Makefile
@@ -0,0 +1,25 @@
+PACKAGE = asyncjs
+NODEJS = $(if $(shell test -f /usr/bin/nodejs && echo "true"),nodejs,node)
+CWD := $(shell pwd)
+NODEUNIT = $(CWD)/node_modules/nodeunit/bin/nodeunit
+UGLIFY = $(CWD)/node_modules/uglify-js/bin/uglifyjs
+NODELINT = $(CWD)/node_modules/nodelint/nodelint
+
+BUILDDIR = dist
+
+all: clean test build
+
+build: $(wildcard lib/*.js)
+ mkdir -p $(BUILDDIR)
+ $(UGLIFY) lib/async.js > $(BUILDDIR)/async.min.js
+
+test:
+ $(NODEUNIT) test
+
+clean:
+ rm -rf $(BUILDDIR)
+
+lint:
+ $(NODELINT) --config nodelint.cfg lib/async.js
+
+.PHONY: test build all
View
1,022 finalVersion/node_modules/serialport2/node_modules/async/README.md
@@ -0,0 +1,1022 @@
+# Async.js
+
+Async is a utility module which provides straight-forward, powerful functions
+for working with asynchronous JavaScript. Although originally designed for
+use with [node.js](http://nodejs.org), it can also be used directly in the
+browser.
+
+Async provides around 20 functions that include the usual 'functional'
+suspects (map, reduce, filter, forEach…) as well as some common patterns
+for asynchronous control flow (parallel, series, waterfall…). All these
+functions assume you follow the node.js convention of providing a single
+callback as the last argument of your async function.
+
+
+## Quick Examples
+
+ async.map(['file1','file2','file3'], fs.stat, function(err, results){
+ // results is now an array of stats for each file
+ });
+
+ async.filter(['file1','file2','file3'], path.exists, function(results){
+ // results now equals an array of the existing files
+ });
+
+ async.parallel([
+ function(){ ... },
+ function(){ ... }
+ ], callback);
+
+ async.series([
+ function(){ ... },
+ function(){ ... }
+ ]);
+
+There are many more functions available so take a look at the docs below for a
+full list. This module aims to be comprehensive, so if you feel anything is
+missing please create a GitHub issue for it.
+
+
+## Download
+
+Releases are available for download from
+[GitHub](http://github.com/caolan/async/downloads).
+Alternatively, you can install using Node Package Manager (npm):
+
+ npm install async
+
+
+__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 17.5kb Uncompressed
+
+__Production:__ [async.min.js](https://github.com/caolan/async/raw/master/dist/async.min.js) - 1.7kb Packed and Gzipped
+
+
+## In the Browser
+
+So far its been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:
+
+ <script type="text/javascript" src="async.js"></script>
+ <script type="text/javascript">
+
+ async.map(data, asyncProcess, function(err, results){
+ alert(results);
+ });
+
+ </script>
+
+
+## Documentation
+
+### Collections
+
+* [forEach](#forEach)
+* [map](#map)
+* [filter](#filter)
+* [reject](#reject)
+* [reduce](#reduce)
+* [detect](#detect)
+* [sortBy](#sortBy)
+* [some](#some)
+* [every](#every)
+* [concat](#concat)
+
+### Control Flow
+
+* [series](#series)
+* [parallel](#parallel)
+* [whilst](#whilst)
+* [until](#until)
+* [waterfall](#waterfall)
+* [queue](#queue)
+* [auto](#auto)
+* [iterator](#iterator)
+* [apply](#apply)
+* [nextTick](#nextTick)
+
+### Utils
+
+* [memoize](#memoize)
+* [unmemoize](#unmemoize)
+* [log](#log)
+* [dir](#dir)
+* [noConflict](#noConflict)
+
+
+## Collections
+
+<a name="forEach" />
+### forEach(arr, iterator, callback)
+
+Applies an iterator function to each item in an array, in parallel.
+The iterator is called with an item from the list and a callback for when it
+has finished. If the iterator passes an error to this callback, the main
+callback for the forEach function is immediately called with the error.
+
+Note, that since this function applies the iterator to each item in parallel
+there is no guarantee that the iterator functions will complete in order.
+
+__Arguments__
+
+* arr - An array to iterate over.
+* iterator(item, callback) - A function to apply to each item in the array.
+ The iterator is passed a callback which must be called once it has completed.
+* callback(err) - A callback which is called after all the iterator functions
+ have finished, or an error has occurred.
+
+__Example__
+
+ // assuming openFiles is an array of file names and saveFile is a function
+ // to save the modified contents of that file:
+
+ async.forEach(openFiles, saveFile, function(err){
+ // if any of the saves produced an error, err would equal that error
+ });
+
+---------------------------------------
+
+<a name="forEachSeries" />
+### forEachSeries(arr, iterator, callback)
+
+The same as forEach only the iterator is applied to each item in the array in
+series. The next iterator is only called once the current one has completed
+processing. This means the iterator functions will complete in order.
+
+
+---------------------------------------
+
+<a name="forEachLimit" />
+### forEachLimit(arr, limit, iterator, callback)
+
+The same as forEach only the iterator is applied to batches of items in the
+array, in series. The next batch of iterators is only called once the current
+one has completed processing.
+
+__Arguments__
+
+* arr - An array to iterate over.
+* limit - How many items should be in each batch.
+* iterator(item, callback) - A function to apply to each item in the array.
+ The iterator is passed a callback which must be called once it has completed.
+* callback(err) - A callback which is called after all the iterator functions
+ have finished, or an error has occurred.
+
+__Example__
+
+ // Assume documents is an array of JSON objects and requestApi is a
+ // function that interacts with a rate-limited REST api.
+
+ async.forEachLimit(documents, 20, requestApi, function(err){
+ // if any of the saves produced an error, err would equal that error
+ });
+---------------------------------------
+
+<a name="map" />
+### map(arr, iterator, callback)
+
+Produces a new array of values by mapping each value in the given array through
+the iterator function. The iterator is called with an item from the array and a
+callback for when it has finished processing. The callback takes 2 arguments,
+an error and the transformed item from the array. If the iterator passes an
+error to this callback, the main callback for the map function is immediately
+called with the error.
+
+Note, that since this function applies the iterator to each item in parallel
+there is no guarantee that the iterator functions will complete in order, however
+the results array will be in the same order as the original array.
+
+__Arguments__
+
+* arr - An array to iterate over.
+* iterator(item, callback) - A function to apply to each item in the array.
+ The iterator is passed a callback which must be called once it has completed
+ with an error (which can be null) and a transformed item.
+* callback(err, results) - A callback which is called after all the iterator
+ functions have finished, or an error has occurred. Results is an array of the
+ transformed items from the original array.
+
+__Example__
+
+ async.map(['file1','file2','file3'], fs.stat, function(err, results){
+ // results is now an array of stats for each file
+ });
+
+---------------------------------------
+
+<a name="mapSeries" />
+### mapSeries(arr, iterator, callback)
+
+The same as map only the iterator is applied to each item in the array in
+series. The next iterator is only called once the current one has completed
+processing. The results array will be in the same order as the original.
+
+
+---------------------------------------
+
+<a name="filter" />
+### filter(arr, iterator, callback)
+
+__Alias:__ select
+
+Returns a new array of all the values which pass an async truth test.
+_The callback for each iterator call only accepts a single argument of true or
+false, it does not accept an error argument first!_ This is in-line with the
+way node libraries work with truth tests like path.exists. This operation is
+performed in parallel, but the results array will be in the same order as the
+original.
+
+__Arguments__
+
+* arr - An array to iterate over.
+* iterator(item, callback) - A truth test to apply to each item in the array.
+ The iterator is passed a callback which must be called once it has completed.
+* callback(results) - A callback which is called after all the iterator
+ functions have finished.
+
+__Example__
+
+ async.filter(['file1','file2','file3'], path.exists, function(results){
+ // results now equals an array of the existing files
+ });
+
+---------------------------------------
+
+<a name="filterSeries" />
+### filterSeries(arr, iterator, callback)
+
+__alias:__ selectSeries
+
+The same as filter only the iterator is applied to each item in the array in
+series. The next iterator is only called once the current one has completed
+processing. The results array will be in the same order as the original.
+
+---------------------------------------
+
+<a name="reject" />
+### reject(arr, iterator, callback)
+
+The opposite of filter. Removes values that pass an async truth test.
+
+---------------------------------------
+
+<a name="rejectSeries" />
+### rejectSeries(arr, iterator, callback)
+
+The same as filter, only the iterator is applied to each item in the array
+in series.
+
+
+---------------------------------------
+
+<a name="reduce" />
+### reduce(arr, memo, iterator, callback)
+
+__aliases:__ inject, foldl
+
+Reduces a list of values into a single value using an async iterator to return
+each successive step. Memo is the initial state of the reduction. This
+function only operates in series. For performance reasons, it may make sense to
+split a call to this function into a parallel map, then use the normal
+Array.prototype.reduce on the results. This function is for situations where
+each step in the reduction needs to be async, if you can get the data before
+reducing it then its probably a good idea to do so.
+
+__Arguments__
+
+* arr - An array to iterate over.
+* memo - The initial state of the reduction.
+* iterator(memo, item, callback) - A function applied to each item in the
+ array to produce the next step in the reduction. The iterator is passed a
+ callback which accepts an optional error as its first argument, and the state
+ of the reduction as the second. If an error is passed to the callback, the
+ reduction is stopped and the main callback is immediately called with the
+ error.
+* callback(err, result) - A callback which is called after all the iterator
+ functions have finished. Result is the reduced value.
+
+__Example__
+
+ async.reduce([1,2,3], 0, function(memo, item, callback){
+ // pointless async:
+ process.nextTick(function(){
+ callback(null, memo + item)
+ });
+ }, function(err, result){
+ // result is now equal to the last value of memo, which is 6
+ });
+
+---------------------------------------
+
+<a name="reduceRight" />
+### reduceRight(arr, memo, iterator, callback)
+
+__Alias:__ foldr
+
+Same as reduce, only operates on the items in the array in reverse order.
+
+
+---------------------------------------
+
+<a name="detect" />
+### detect(arr, iterator, callback)
+
+Returns the first value in a list that passes an async truth test. The
+iterator is applied in parallel, meaning the first iterator to return true will
+fire the detect callback with that result. That means the result might not be
+the first item in the original array (in terms of order) that passes the test.
+
+If order within the original array is important then look at detectSeries.
+
+__Arguments__
+
+* arr - An array to iterate over.
+* iterator(item, callback) - A truth test to apply to each item in the array.
+ The iterator is passed a callback which must be called once it has completed.
+* callback(result) - A callback which is called as soon as any iterator returns
+ true, or after all the iterator functions have finished. Result will be
+ the first item in the array that passes the truth test (iterator) or the
+ value undefined if none passed.
+
+__Example__
+
+ async.detect(['file1','file2','file3'], path.exists, function(result){
+ // result now equals the first file in the list that exists
+ });
+
+---------------------------------------
+
+<a name="detectSeries" />
+### detectSeries(arr, iterator, callback)
+
+The same as detect, only the iterator is applied to each item in the array
+in series. This means the result is always the first in the original array (in
+terms of array order) that passes the truth test.
+
+
+---------------------------------------
+
+<a name="sortBy" />
+### sortBy(arr, iterator, callback)
+
+Sorts a list by the results of running each value through an async iterator.
+
+__Arguments__
+
+* arr - An array to iterate over.
+* iterator(item, callback) - A function to apply to each item in the array.
+ The iterator is passed a callback which must be called once it has completed
+ with an error (which can be null) and a value to use as the sort criteria.
+* callback(err, results) - A callback which is called after all the iterator
+ functions have finished, or an error has occurred. Results is the items from
+ the original array sorted by the values returned by the iterator calls.
+
+__Example__
+
+ async.sortBy(['file1','file2','file3'], function(file, callback){
+ fs.stat(file, function(err, stats){
+ callback(err, stats.mtime);
+ });
+ }, function(err, results){
+ // results is now the original array of files sorted by
+ // modified date
+ });
+
+
+---------------------------------------
+
+<a name="some" />
+### some(arr, iterator, callback)
+
+__Alias:__ any
+
+Returns true if at least one element in the array satisfies an async test.
+_The callback for each iterator call only accepts a single argument of true or
+false, it does not accept an error argument first!_ This is in-line with the
+way node libraries work with truth tests like path.exists. Once any iterator
+call returns true, the main callback is immediately called.
+
+__Arguments__
+
+* arr - An array to iterate over.
+* iterator(item, callback) - A truth test to apply to each item in the array.
+ The iterator is passed a callback which must be called once it has completed.
+* callback(result) - A callback which is called as soon as any iterator returns
+ true, or after all the iterator functions have finished. Result will be
+ either true or false depending on the values of the async tests.
+
+__Example__
+
+ async.some(['file1','file2','file3'], path.exists, function(result){
+ // if result is true then at least one of the files exists
+ });
+
+---------------------------------------
+
+<a name="every" />
+### every(arr, iterator, callback)
+
+__Alias:__ all
+
+Returns true if every element in the array satisfies an async test.
+_The callback for each iterator call only accepts a single argument of true or
+false, it does not accept an error argument first!_ This is in-line with the
+way node libraries work with truth tests like path.exists.
+
+__Arguments__
+
+* arr - An array to iterate over.
+* iterator(item, callback) - A truth test to apply to each item in the array.
+ The iterator is passed a callback which must be called once it has completed.
+* callback(result) - A callback which is called after all the iterator
+ functions have finished. Result will be either true or false depending on
+ the values of the async tests.
+
+__Example__
+
+ async.every(['file1','file2','file3'], path.exists, function(result){
+ // if result is true then every file exists
+ });
+
+---------------------------------------
+
+<a name="concat" />
+### concat(arr, iterator, callback)
+
+Applies an iterator to each item in a list, concatenating the results. Returns the
+concatenated list. The iterators are called in parallel, and the results are
+concatenated as they return. There is no guarantee that the results array will
+be returned in the original order of the arguments passed to the iterator function.
+
+__Arguments__
+
+* arr - An array to iterate over
+* iterator(item, callback) - A function to apply to each item in the array.
+ The iterator is passed a callback which must be called once it has completed
+ with an error (which can be null) and an array of results.
+* callback(err, results) - A callback which is called after all the iterator
+ functions have finished, or an error has occurred. Results is an array containing
+ the concatenated results of the iterator function.
+
+__Example__
+
+ async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){
+ // files is now a list of filenames that exist in the 3 directories
+ });
+
+---------------------------------------
+
+<a name="concatSeries" />
+### concatSeries(arr, iterator, callback)
+
+Same as async.concat, but executes in series instead of parallel.
+
+
+## Control Flow
+
+<a name="series" />
+### series(tasks, [callback])
+
+Run an array of functions in series, each one running once the previous
+function has completed. If any functions in the series pass an error to its
+callback, no more functions are run and the callback for the series is
+immediately called with the value of the error. Once the tasks have completed,
+the results are passed to the final callback as an array.
+
+It is also possible to use an object instead of an array. Each property will be
+run as a function and the results will be passed to the final callback as an object
+instead of an array. This can be a more readable way of handling results from
+async.series.
+
+
+__Arguments__
+
+* tasks - An array or object containing functions to run, each function is passed
+ a callback it must call on completion.
+* callback(err, results) - An optional callback to run once all the functions
+ have completed. This function gets an array of all the arguments passed to
+ the callbacks used in the array.
+
+__Example__
+
+ async.series([
+ function(callback){
+ // do some stuff ...
+ callback(null, 'one');
+ },
+ function(callback){
+ // do some more stuff ...
+ callback(null, 'two');
+ },
+ ],
+ // optional callback
+ function(err, results){
+ // results is now equal to ['one', 'two']
+ });
+
+
+ // an example using an object instead of an array
+ async.series({
+ one: function(callback){
+ setTimeout(function(){
+ callback(null, 1);
+ }, 200);
+ },
+ two: function(callback){
+ setTimeout(function(){
+ callback(null, 2);
+ }, 100);
+ },
+ },
+ function(err, results) {
+ // results is now equal to: {one: 1, two: 2}
+ });
+
+
+---------------------------------------
+
+<a name="parallel" />
+### parallel(tasks, [callback])
+
+Run an array of functions in parallel, without waiting until the previous
+function has completed. If any of the functions pass an error to its
+callback, the main callback is immediately called with the value of the error.
+Once the tasks have completed, the results are passed to the final callback as an
+array.
+
+It is also possible to use an object instead of an array. Each property will be
+run as a function and the results will be passed to the final callback as an object
+instead of an array. This can be a more readable way of handling results from
+async.parallel.
+
+
+__Arguments__
+
+* tasks - An array or object containing functions to run, each function is passed a
+ callback it must call on completion.
+* callback(err, results) - An optional callback to run once all the functions
+ have completed. This function gets an array of all the arguments passed to
+ the callbacks used in the array.
+
+__Example__
+
+ async.parallel([
+ function(callback){
+ setTimeout(function(){
+ callback(null, 'one');
+ }, 200);
+ },
+ function(callback){
+ setTimeout(function(){
+ callback(null, 'two');
+ }, 100);
+ },
+ ],
+ // optional callback
+ function(err, results){
+ // in this case, the results array will equal ['two','one']
+ // because the functions were run in parallel and the second
+ // function had a shorter timeout before calling the callback.
+ });
+
+
+ // an example using an object instead of an array
+ async.parallel({
+ one: function(callback){
+ setTimeout(function(){
+ callback(null, 1);
+ }, 200);
+ },
+ two: function(callback){
+ setTimeout(function(){
+ callback(null, 2);
+ }, 100);
+ },
+ },
+ function(err, results) {
+ // results is now equals to: {one: 1, two: 2}
+ });
+
+
+---------------------------------------
+
+<a name="whilst" />
+### whilst(test, fn, callback)
+
+Repeatedly call fn, while test returns true. Calls the callback when stopped,
+or an error occurs.
+
+__Arguments__
+
+* test() - synchronous truth test to perform before each execution of fn.
+* fn(callback) - A function to call each time the test passes. The function is
+ passed a callback which must be called once it has completed with an optional
+ error as the first argument.
+* callback(err) - A callback which is called after the test fails and repeated
+ execution of fn has stopped.
+
+__Example__
+
+ var count = 0;
+
+ async.whilst(
+ function () { return count < 5; },
+ function (callback) {
+ count++;
+ setTimeout(callback, 1000);
+ },
+ function (err) {
+ // 5 seconds have passed
+ }
+ );
+
+
+---------------------------------------
+
+<a name="until" />
+### until(test, fn, callback)
+
+Repeatedly call fn, until test returns true. Calls the callback when stopped,
+or an error occurs.
+
+The inverse of async.whilst.
+
+
+---------------------------------------
+
+<a name="waterfall" />
+### waterfall(tasks, [callback])
+
+Runs an array of functions in series, each passing their results to the next in
+the array. However, if any of the functions pass an error to the callback, the
+next function is not executed and the main callback is immediately called with
+the error.
+
+__Arguments__
+
+* tasks - An array of functions to run, each function is passed a callback it
+ must call on completion.
+* callback(err, [results]) - An optional callback to run once all the functions
+ have completed. This will be passed the results of the last task's callback.
+
+
+
+__Example__
+
+ async.waterfall([
+ function(callback){
+ callback(null, 'one', 'two');
+ },
+ function(arg1, arg2, callback){
+ callback(null, 'three');
+ },
+ function(arg1, callback){
+ // arg1 now equals 'three'
+ callback(null, 'done');
+ }
+ ], function (err, result) {
+ // result now equals 'done'
+ });
+
+
+---------------------------------------
+
+<a name="queue" />
+### queue(worker, concurrency)
+
+Creates a queue object with the specified concurrency. Tasks added to the
+queue will be processed in parallel (up to the concurrency limit). If all
+workers are in progress, the task is queued until one is available. Once
+a worker has completed a task, the task's callback is called.
+
+__Arguments__
+
+* worker(task, callback) - An asynchronous function for processing a queued
+ task.
+* concurrency - An integer for determining how many worker functions should be
+ run in parallel.
+
+__Queue objects__
+
+The queue object returned by this function has the following properties and
+methods:
+
+* length() - a function returning the number of items waiting to be processed.
+* concurrency - an integer for determining how many worker functions should be
+ run in parallel. This property can be changed after a queue is created to
+ alter the concurrency on-the-fly.
+* push(task, [callback]) - add a new task to the queue, the callback is called
+ once the worker has finished processing the task.
+ instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.
+* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued
+* empty - a callback that is called when the last item from the queue is given to a worker
+* drain - a callback that is called when the last item from the queue has returned from the worker
+
+__Example__
+
+ // create a queue object with concurrency 2
+
+ var q = async.queue(function (task, callback) {
+ console.log('hello ' + task.name);
+ callback();
+ }, 2);
+
+
+ // assign a callback
+ q.drain = function() {
+ console.log('all items have been processed');
+ }
+
+ // add some items to the queue
+
+ q.push({name: 'foo'}, function (err) {
+ console.log('finished processing foo');
+ });
+ q.push({name: 'bar'}, function (err) {
+ console.log('finished processing bar');
+ });
+
+ // add some items to the queue (batch-wise)
+
+ q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {
+ console.log('finished processing bar');
+ });
+
+
+---------------------------------------
+
+<a name="auto" />
+### auto(tasks, [callback])
+
+Determines the best order for running functions based on their requirements.
+Each function can optionally depend on other functions being completed first,
+and each function is run as soon as its requirements are satisfied. If any of
+the functions pass an error to their callback, that function will not complete
+(so any other functions depending on it will not run) and the main callback
+will be called immediately with the error. Functions also receive an object
+containing the results of functions which have completed so far.
+
+__Arguments__
+
+* tasks - An object literal containing named functions or an array of
+ requirements, with the function itself the last item in the array. The key
+ used for each function or array is used when specifying requirements. The
+ syntax is easier to understand by looking at the example.
+* callback(err, results) - An optional callback which is called when all the
+ tasks have been completed. The callback will receive an error as an argument
+ if any tasks pass an error to their callback. If all tasks complete
+ successfully, it will receive an object containing their results.
+
+__Example__
+
+ async.auto({
+ get_data: function(callback){
+ // async code to get some data
+ },
+ make_folder: function(callback){
+ // async code to create a directory to store a file in
+ // this is run at the same time as getting the data
+ },
+ write_file: ['get_data', 'make_folder', function(callback){
+ // once there is some data and the directory exists,
+ // write the data to a file in the directory
+ callback(null, filename);
+ }],
+ email_link: ['write_file', function(callback, results){
+ // once the file is written let's email a link to it...
+ // results.write_file contains the filename returned by write_file.
+ }]
+ });
+
+This is a fairly trivial example, but to do this using the basic parallel and
+series functions would look like this:
+
+ async.parallel([
+ function(callback){
+ // async code to get some data
+ },
+ function(callback){
+ // async code to create a directory to store a file in
+ // this is run at the same time as getting the data
+ }
+ ],
+ function(results){
+ async.series([
+ function(callback){
+ // once there is some data and the directory exists,
+ // write the data to a file in the directory
+ },
+ email_link: function(callback){
+ // once the file is written let's email a link to it...
+ }
+ ]);
+ });
+
+For a complicated series of async tasks using the auto function makes adding
+new tasks much easier and makes the code more readable.
+
+
+---------------------------------------
+
+<a name="iterator" />
+###