User Tools

Site Tools


digic:processors:lime

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
digic:processors:lime [2021/03/07 03:23] names_are_harddigic:processors:lime [2021/03/13 13:34] – [LIME CORE] Indy
Line 4: Line 4:
 All the investigations below were done under 200D (SL2) at version 1.0.1. All the investigations below were done under 200D (SL2) at version 1.0.1.
  
 +[[https://en.wikipedia.org/wiki/ESP32|ESP32]] 
 ==== LIME Shell ==== ==== LIME Shell ====
 The networking processor was found to have a DryOS implementation with an interactive shell which can be accessed from the ICU through UART. The networking processor was found to have a DryOS implementation with an interactive shell which can be accessed from the ICU through UART.
Line 92: Line 93:
  
 Here are the common networking stubs found: Here are the common networking stubs found:
-^     Networking stubs for 200D 1.0.1   ^^^ +^     Networking stubs for 200D 1.0.1   ^^^^ 
-^Address ^Name ^Info^  +^Address ^Name ^Signatures ^Info^  
-|0xe0110cc4|socket_convertfd|(found from xrefs of FUN_E07146B8)| +|0xe0110cc4|socket_convertfd|int socket_convertfd(int sockfd) |(found from xrefs of FUN_E07146B8)| 
-|0xe071d880|socket_create|translation from ICU to lime is needed with resolvesock+|0xe071d880|socket_create|int socket_create(int domain, int type, int protocol); |translation from ICU to lime is needed with socket_convertfd
-|0xe071d8b8|socket_bind|found from index, CommonSyncWrite| +|0xe071d8b8|socket_bind|int socket_bind(int sockfd, void *addr, int addrlen) |found from index, CommonSyncWrite| 
-|0xe071d8f2|socket_connect|found from index, CommonSyncWrite| +|0xe071d8f2|socket_connect|int socket_connect(int sockfd, void *addr, int addrlen) |found from index, CommonSyncWrite| 
-|0xe071d92c|socket_listen|found from index, CommonSyncWrite| +|0xe071d92c|socket_listen|int socket_listen(int sockfd, int backlogl) |found from index, CommonSyncWrite| 
-|0xe071d960|socket_accept|found from rpc_accept| +|0xe071d960|socket_accept|int socket_accept(int sockfd, void *addr, int addrlen) |found from rpc_accept| 
-|0xe071d99a|socket_recv|found from 'rpc_recv'| +|0xe071d99a|socket_recv|int socket_recv(int sockfd, void *buf, int len, int flags) |found from 'rpc_recv'
-|0xe071d9d8|socket_recvfrom|found from 'rpc_recvfrom'| +|0xe071da20|socket_send|socket_send(int sockfdvoid *buf, int len, int flags) |found from index, CommonSyncWrite| 
-|0xe071da20|socket_send|found from indexCommonSyncWrite| +|0xe071da80|socket_setsockopt|socket_setsockopt(int socket, int level, int option_name, const void *option_value, int option_len) |found from 'rpc_setsockopt'
-|0xe071da3a|socket_sendto|found from index, CommonSyncWrite| +|0xe071db7a|socket_shutdown|socket_shutdown(int sockfd, int flag) |found from index, CommonSyncWrite
-|0xe071da80|socket_setsockopt|found from 'rpc_setsockopt'+|0xe0714a20|socket_close|socket_close(int sockfd) |found from index, CommonSyncWrite. needs converted fd
-|0xe071dac4|socket_getsockopt|found from 'rpc_getsockopt'+|0xe010608e|socket_select_caller| socket_select_caller(int convertedsock, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)|found from 'rpc_select' ****|
-|0xe071db7a|socket_shutdown|found from index, CommonSyncWrite| +
-|0xe010608e|socket_select_caller|found from 'rpc_select' ****|+
  
 ''socket_select_caller'' is not the actual socket_select function since this function needs the descriptors to be converted by the ''socket_convertfd'' function and the ''fd_set'' used must also be converted by ''socket_convertfd''. ''socket_select_caller'' is not the actual socket_select function since this function needs the descriptors to be converted by the ''socket_convertfd'' function and the ''fd_set'' used must also be converted by ''socket_convertfd''.
Line 147: Line 146:
 </code> </code>
 ==== Misc ==== ==== Misc ====
 +^   Socket  ^^^
 +^Option^Value^Info^
 +|AF_INET|0x1|Internet IP Protocol|
 +
 ^   Socket Options   ^^^ ^   Socket Options   ^^^
 ^Option^Value^Info^ ^Option^Value^Info^
 |SOL_SOCKET|0xffff|options at the socket level| |SOL_SOCKET|0xffff|options at the socket level|
 |SO_REUSEADDR| 0x2|allow reuse of local addresses| |SO_REUSEADDR| 0x2|allow reuse of local addresses|
 +
 +''socket_bind'' and ''socket_connect'' takes in three parameters. The array which is passed in should look like this:
 +<code>
 +char sockaddr[8];
 +
 +// 1 = IPv4, 2 = IPv6, 3 = Ethernet
 +sockaddr[0] = 0x00;
 +sockaddr[1] = 0x01;
 +
 +// port 25565
 +sockaddr[2] = 0x63; // low byte
 +sockaddr[3] = 0xdd; // high byte
 +
 +// ip address: 192.168.10.22
 +sockaddr[4] = 192;
 +sockaddr[5] = 168;
 +sockaddr[6] = 10;
 +sockaddr[7] = 22;
 +</code>
 +<code>
 +socket_bind(sock,sockaddr, 0x8)
 +socket_connect(sock,sockaddr, 0x8)
 +</code>
 +
 +
 +
  
digic/processors/lime.txt · Last modified: 2021/03/16 12:01 by coon