Mercurial > repos > blastem
comparison megawifi.c @ 1514:4f94e0f90c83
Added support for MegaWiFi command IP_CURRENT
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 16 Jan 2018 09:31:00 -0800 |
parents | 8f3b6a64b658 |
children | 3fc129eb0653 |
comparison
equal
deleted
inserted
replaced
1513:8f3b6a64b658 | 1514:4f94e0f90c83 |
---|---|
1 #include <stdlib.h> | 1 #include <stdlib.h> |
2 #include <stdint.h> | 2 #include <stdint.h> |
3 #include <string.h> | 3 #include <string.h> |
4 #include "genesis.h" | 4 #include "genesis.h" |
5 #include "net.h" | |
5 | 6 |
6 enum { | 7 enum { |
7 TX_IDLE, | 8 TX_IDLE, |
8 TX_LEN1, | 9 TX_LEN1, |
9 TX_LEN2, | 10 TX_LEN2, |
86 uint32_t size = mw->transmit_buffer[2] << 8 | mw->transmit_buffer[3]; | 87 uint32_t size = mw->transmit_buffer[2] << 8 | mw->transmit_buffer[3]; |
87 if (size > mw->transmit_bytes - 4) { | 88 if (size > mw->transmit_bytes - 4) { |
88 size = mw->transmit_bytes - 4; | 89 size = mw->transmit_bytes - 4; |
89 } | 90 } |
90 mw->receive_read = mw->receive_bytes = 0; | 91 mw->receive_read = mw->receive_bytes = 0; |
92 printf("Received MegaWiFi command %s(%d) with length %X\n", cmd_names[command], command, size); | |
91 switch (command) | 93 switch (command) |
92 { | 94 { |
93 case CMD_VERSION: | 95 case CMD_VERSION: |
94 //LSD header | 96 //LSD header |
95 mw_putc(mw, 0x7E); | 97 mw_putc(mw, 0x7E); |
140 mw_putc(mw, mw->flags); | 142 mw_putc(mw, mw->flags); |
141 mw_putc(mw, mw->channel_flags >> 8); | 143 mw_putc(mw, mw->channel_flags >> 8); |
142 mw_putc(mw, mw->channel_flags); | 144 mw_putc(mw, mw->channel_flags); |
143 mw_putc(mw, 0x7E); | 145 mw_putc(mw, 0x7E); |
144 break; | 146 break; |
147 case CMD_IP_CURRENT: { | |
148 //LSD header | |
149 mw_putc(mw, 0x7E); | |
150 mw_putc(mw, 0); | |
151 mw_putc(mw, 28); | |
152 //cmd | |
153 mw_putc(mw, 0); | |
154 mw_putc(mw, CMD_OK); | |
155 //length | |
156 mw_putc(mw, 0); | |
157 mw_putc(mw, 24); | |
158 | |
159 iface_info i; | |
160 get_host_address(&i); | |
161 //config number and reserved bytes | |
162 mw_putc(mw, 0); | |
163 mw_putc(mw, 0); | |
164 mw_putc(mw, 0); | |
165 mw_putc(mw, 0); | |
166 //ip | |
167 mw_putc(mw, i.ip[0]); | |
168 mw_putc(mw, i.ip[1]); | |
169 mw_putc(mw, i.ip[2]); | |
170 mw_putc(mw, i.ip[3]); | |
171 //net mask | |
172 mw_putc(mw, i.net_mask[0]); | |
173 mw_putc(mw, i.net_mask[1]); | |
174 mw_putc(mw, i.net_mask[2]); | |
175 mw_putc(mw, i.net_mask[3]); | |
176 //gateway guess | |
177 mw_putc(mw, i.ip[0] & i.net_mask[0]); | |
178 mw_putc(mw, i.ip[1] & i.net_mask[1]); | |
179 mw_putc(mw, i.ip[2] & i.net_mask[2]); | |
180 mw_putc(mw, (i.ip[3] & i.net_mask[3]) + 1); | |
181 //dns | |
182 mw_putc(mw, 127); | |
183 mw_putc(mw, 0); | |
184 mw_putc(mw, 0); | |
185 mw_putc(mw, 1); | |
186 mw_putc(mw, 127); | |
187 mw_putc(mw, 0); | |
188 mw_putc(mw, 0); | |
189 mw_putc(mw, 1); | |
190 mw_putc(mw, 0x7E); | |
191 break; | |
192 } | |
145 default: | 193 default: |
146 printf("Unhandled MegaWiFi command %s(%d) with length %X\n", cmd_names[command], command, size); | 194 printf("Unhandled MegaWiFi command %s(%d) with length %X\n", cmd_names[command], command, size); |
147 break; | 195 break; |
148 } | 196 } |
149 } else { | 197 } else { |