begin worm on new Code machine
This commit is contained in:
		
							parent
							
								
									0ddc93110b
								
							
						
					
					
						commit
						0be5aba77d
					
				|  | @ -44,9 +44,11 @@ class Code(object): | ||||||
|     @m.state() |     @m.state() | ||||||
|     def S2_typing_nameplate(self): pass # pragma: no cover |     def S2_typing_nameplate(self): pass # pragma: no cover | ||||||
|     @m.state() |     @m.state() | ||||||
|     def S3_typing_code(self): pass # pragma: no cover |     def S3_typing_code_no_wordlist(self): pass # pragma: no cover | ||||||
|     @m.state() |     @m.state() | ||||||
|     def S4_known(self): pass # pragma: no cover |     def S4_typing_code_wordlist(self): pass # pragma: no cover | ||||||
|  |     @m.state() | ||||||
|  |     def S5_known(self): pass # pragma: no cover | ||||||
| 
 | 
 | ||||||
|     # from App |     # from App | ||||||
|     @m.input() |     @m.input() | ||||||
|  | @ -68,13 +70,17 @@ class Code(object): | ||||||
|     @m.input() |     @m.input() | ||||||
|     def got_nameplates(self, nameplates): pass |     def got_nameplates(self, nameplates): pass | ||||||
| 
 | 
 | ||||||
|     # from stdin/readline/??? |     # from Nameplate | ||||||
|     @m.input() |     @m.input() | ||||||
|     def tab(self): pass |     def got_wordlist(self, wordlist): pass | ||||||
|  | 
 | ||||||
|  |     # from CodeInputHelper | ||||||
|     @m.input() |     @m.input() | ||||||
|     def hyphen(self): pass |     def update_nameplates(self): pass | ||||||
|     @m.input() |     @m.input() | ||||||
|     def RETURN(self, code): pass |     def claim_nameplate(self, nameplate): pass | ||||||
|  |     @m.input() | ||||||
|  |     def submit_words(self, words): pass | ||||||
| 
 | 
 | ||||||
|     @m.output() |     @m.output() | ||||||
|     def L_refresh_nameplates(self): |     def L_refresh_nameplates(self): | ||||||
|  | @ -94,7 +100,8 @@ class Code(object): | ||||||
|     def RC_tx_allocate(self): |     def RC_tx_allocate(self): | ||||||
|         self._RC.tx_allocate() |         self._RC.tx_allocate() | ||||||
|     @m.output() |     @m.output() | ||||||
|     def do_completion_nameplates(self): |     def stash_wordlist(self, wordlist): | ||||||
|  |         # TODO | ||||||
|         pass |         pass | ||||||
|     @m.output() |     @m.output() | ||||||
|     def stash_nameplates(self, nameplates): |     def stash_nameplates(self, nameplates): | ||||||
|  | @ -107,10 +114,23 @@ class Code(object): | ||||||
|     def do_completion_code(self): |     def do_completion_code(self): | ||||||
|         pass |         pass | ||||||
|     @m.output() |     @m.output() | ||||||
|  |     def record_nameplate(self, nameplate): | ||||||
|  |         self._nameplate = nameplate | ||||||
|  |     @m.output() | ||||||
|  |     def N_set_nameplate(self, nameplate): | ||||||
|  |         self._N.set_nameplate(nameplate) | ||||||
|  | 
 | ||||||
|  |     @m.output() | ||||||
|     def generate_and_B_got_code(self, nameplate): |     def generate_and_B_got_code(self, nameplate): | ||||||
|         self._code = make_code(nameplate, self._code_length) |         self._code = make_code(nameplate, self._code_length) | ||||||
|         self._B_got_code() |         self._B_got_code() | ||||||
| 
 | 
 | ||||||
|  |     @m.output() | ||||||
|  |     def submit_words_and_B_got_code(self, words): | ||||||
|  |         assert self._nameplate | ||||||
|  |         self._code = self._nameplate + "-" + words | ||||||
|  |         self._B_got_code() | ||||||
|  | 
 | ||||||
|     @m.output() |     @m.output() | ||||||
|     def B_got_code(self, code): |     def B_got_code(self, code): | ||||||
|         self._code = code |         self._code = code | ||||||
|  | @ -122,8 +142,8 @@ class Code(object): | ||||||
|     S0A_unknown.upon(connected, enter=S0B_unknown_connected, outputs=[]) |     S0A_unknown.upon(connected, enter=S0B_unknown_connected, outputs=[]) | ||||||
|     S0B_unknown_connected.upon(lost, enter=S0A_unknown, outputs=[]) |     S0B_unknown_connected.upon(lost, enter=S0A_unknown, outputs=[]) | ||||||
| 
 | 
 | ||||||
|     S0A_unknown.upon(set_code, enter=S4_known, outputs=[B_got_code]) |     S0A_unknown.upon(set_code, enter=S5_known, outputs=[B_got_code]) | ||||||
|     S0B_unknown_connected.upon(set_code, enter=S4_known, outputs=[B_got_code]) |     S0B_unknown_connected.upon(set_code, enter=S5_known, outputs=[B_got_code]) | ||||||
| 
 | 
 | ||||||
|     S0A_unknown.upon(allocate_code, enter=S1A_connecting, |     S0A_unknown.upon(allocate_code, enter=S1A_connecting, | ||||||
|                      outputs=[stash_code_length]) |                      outputs=[stash_code_length]) | ||||||
|  | @ -132,27 +152,39 @@ class Code(object): | ||||||
|     S1A_connecting.upon(connected, enter=S1B_allocating, |     S1A_connecting.upon(connected, enter=S1B_allocating, | ||||||
|                         outputs=[RC_tx_allocate]) |                         outputs=[RC_tx_allocate]) | ||||||
|     S1B_allocating.upon(lost, enter=S1A_connecting, outputs=[]) |     S1B_allocating.upon(lost, enter=S1A_connecting, outputs=[]) | ||||||
|     S1B_allocating.upon(rx_allocated, enter=S4_known, |     S1B_allocating.upon(rx_allocated, enter=S5_known, | ||||||
|                         outputs=[generate_and_B_got_code]) |                         outputs=[generate_and_B_got_code]) | ||||||
| 
 | 
 | ||||||
|     S0A_unknown.upon(input_code, enter=S2_typing_nameplate, |     S0A_unknown.upon(input_code, enter=S2_typing_nameplate, | ||||||
|                      outputs=[start_input_and_L_refresh_nameplates]) |                      outputs=[start_input_and_L_refresh_nameplates]) | ||||||
|     S0B_unknown_connected.upon(input_code, enter=S2_typing_nameplate, |     S0B_unknown_connected.upon(input_code, enter=S2_typing_nameplate, | ||||||
|                                outputs=[start_input_and_L_refresh_nameplates]) |                                outputs=[start_input_and_L_refresh_nameplates]) | ||||||
|     S2_typing_nameplate.upon(tab, enter=S2_typing_nameplate, |     S2_typing_nameplate.upon(update_nameplates, enter=S2_typing_nameplate, | ||||||
|                              outputs=[do_completion_nameplates]) |                              outputs=[L_refresh_nameplates]) | ||||||
|     S2_typing_nameplate.upon(got_nameplates, enter=S2_typing_nameplate, |     S2_typing_nameplate.upon(got_nameplates, | ||||||
|  |                              enter=S2_typing_nameplate, | ||||||
|                              outputs=[stash_nameplates]) |                              outputs=[stash_nameplates]) | ||||||
|     S2_typing_nameplate.upon(hyphen, enter=S3_typing_code, |     S2_typing_nameplate.upon(claim_nameplate, enter=S3_typing_code_no_wordlist, | ||||||
|                              outputs=[lookup_wordlist]) |                              outputs=[record_nameplate, N_set_nameplate]) | ||||||
|     # TODO: need a proper pair of connected/lost states around S2 |  | ||||||
|     S2_typing_nameplate.upon(connected, enter=S2_typing_nameplate, outputs=[]) |     S2_typing_nameplate.upon(connected, enter=S2_typing_nameplate, outputs=[]) | ||||||
|     S2_typing_nameplate.upon(lost, enter=S2_typing_nameplate, outputs=[]) |     S2_typing_nameplate.upon(lost, enter=S2_typing_nameplate, outputs=[]) | ||||||
| 
 | 
 | ||||||
|     S3_typing_code.upon(tab, enter=S3_typing_code, outputs=[do_completion_code]) |     S3_typing_code_no_wordlist.upon(got_wordlist, | ||||||
|     S3_typing_code.upon(RETURN, enter=S4_known, outputs=[B_got_code]) |                                     enter=S4_typing_code_wordlist, | ||||||
|     S3_typing_code.upon(connected, enter=S3_typing_code, outputs=[]) |                                     outputs=[stash_wordlist]) | ||||||
|     S3_typing_code.upon(lost, enter=S3_typing_code, outputs=[]) |     S3_typing_code_no_wordlist.upon(submit_words, enter=S5_known, | ||||||
|  |                                     outputs=[submit_words_and_B_got_code]) | ||||||
|  |     S3_typing_code_no_wordlist.upon(connected, enter=S3_typing_code_no_wordlist, | ||||||
|  |                                     outputs=[]) | ||||||
|  |     S3_typing_code_no_wordlist.upon(lost, enter=S3_typing_code_no_wordlist, | ||||||
|  |                                     outputs=[]) | ||||||
| 
 | 
 | ||||||
|     S4_known.upon(connected, enter=S4_known, outputs=[]) |     S4_typing_code_wordlist.upon(submit_words, enter=S5_known, | ||||||
|     S4_known.upon(lost, enter=S4_known, outputs=[]) |                                  outputs=[submit_words_and_B_got_code]) | ||||||
|  |     S4_typing_code_wordlist.upon(connected, enter=S4_typing_code_wordlist, | ||||||
|  |                                  outputs=[]) | ||||||
|  |     S4_typing_code_wordlist.upon(lost, enter=S4_typing_code_wordlist, | ||||||
|  |                                  outputs=[]) | ||||||
|  | 
 | ||||||
|  |     S5_known.upon(connected, enter=S5_known, outputs=[]) | ||||||
|  |     S5_known.upon(lost, enter=S5_known, outputs=[]) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user