mirror of
https://github.com/romychs/ESPKit.git
synced 2025-04-18 18:12:38 +03:00
295 lines
5.2 KiB
NASM
295 lines
5.2 KiB
NASM
; ======================================================
|
|
; Common code for Sprinter-WiFi utilities
|
|
; By Roman Boykov. Copyright (c) 2024
|
|
; https://github.com/romychs
|
|
; License: BSD 3-Clause
|
|
; ======================================================
|
|
IFNDEF _WCOMMON
|
|
DEFINE _WCOMMON
|
|
|
|
|
|
|
|
ENABLE_RTS_CTR EQU 1
|
|
|
|
MODULE WCOMMON
|
|
|
|
; ------------------------------------------------------
|
|
; Ckeck for error (CF=1) print message and exit
|
|
; ------------------------------------------------------
|
|
;;IFUSED CHECK_ERROR
|
|
CHECK_ERROR
|
|
RET NC
|
|
ADD A,'0'
|
|
LD (COMM_ERROR_NO), A
|
|
PRINTLN MSG_COMM_ERROR
|
|
CALL DUMP_UART_REGS
|
|
LD B,3
|
|
POP HL ; ret addr reset
|
|
;;ENDIF
|
|
|
|
; ------------------------------------------------------
|
|
; Program exit point
|
|
; ------------------------------------------------------
|
|
EXIT
|
|
CALL REST_VMODE
|
|
DSS_EXEC DSS_EXIT
|
|
; ------------------------------------------------------
|
|
; Search Sprinter WiFi card
|
|
; ------------------------------------------------------
|
|
;;IFUSED FIND_SWF
|
|
FIND_SWF
|
|
; Find Sprinter-WiFi
|
|
CALL @WIFI.UART_FIND
|
|
JP C, NO_TL_FOUND
|
|
LD A,(ISA.ISA_SLOT)
|
|
ADD A,'1'
|
|
LD (MSG_SLOT_NO),A
|
|
PRINTLN MSG_SWF_FOUND
|
|
RET
|
|
|
|
NO_TL_FOUND
|
|
POP BC
|
|
PRINTLN MSG_SWF_NOF
|
|
LD B,2
|
|
JP EXIT
|
|
;;ENDIF
|
|
|
|
; ------------------------------------------------------
|
|
; Dump all UTL16C550 registers to screen for debug
|
|
; ------------------------------------------------------
|
|
;;IFUSED DUMP_UART_REGS
|
|
IFDEF TRACE
|
|
DUMP_UART_REGS
|
|
; Dump, DLAB=0 registers
|
|
LD BC, 0x0800
|
|
CALL DUMP_REGS
|
|
|
|
; Dump, DLAB=1 registers
|
|
LD HL, REG_LCR
|
|
LD E, LCR_DLAB | LCR_WL8
|
|
CALL WIFI.UART_WRITE
|
|
|
|
LD BC, 0x0210
|
|
CALL DUMP_REGS
|
|
|
|
LD HL, REG_LCR
|
|
LD E, LCR_WL8
|
|
JP WIFI.UART_WRITE
|
|
;CALL WIFI.UART_WRITE
|
|
;RET
|
|
|
|
DUMP_REGS
|
|
LD HL, PORT_UART_A
|
|
|
|
DR_NEXT
|
|
LD DE,MSG_DR_RN
|
|
CALL @UTIL.HEXB
|
|
INC C
|
|
|
|
CALL WIFI.UART_READ
|
|
PUSH BC
|
|
LD C,A
|
|
LD DE,MSG_DR_RV
|
|
CALL @UTIL.HEXB
|
|
PUSH HL
|
|
|
|
PRINTLN MSG_DR
|
|
|
|
POP HL,BC
|
|
INC HL
|
|
DJNZ DR_NEXT
|
|
RET
|
|
ENDIF
|
|
;;ENDIF
|
|
|
|
; ------------------------------------------------------
|
|
; Store old video mode, set 80x32 and clear
|
|
; ------------------------------------------------------
|
|
;;IFUSED INIT_VMODE
|
|
INIT_VMODE
|
|
PUSH BC,DE,HL
|
|
; Store previous vmode
|
|
LD C,DSS_GETVMOD
|
|
RST DSS
|
|
LD (SAVE_VMODE),A
|
|
CP DSS_VMOD_T80
|
|
; Set vmode 80x32
|
|
JR Z, IVM_ALRDY_80
|
|
LD C,DSS_SETVMOD
|
|
LD A,DSS_VMOD_T80
|
|
RST DSS
|
|
IVM_ALRDY_80
|
|
; Clear screen
|
|
LD A,' '
|
|
LD BC,0x0700 + DSS_CLEAR
|
|
LD HL,0x2050
|
|
LD DE,0x0000
|
|
RST DSS
|
|
|
|
POP HL,DE,BC
|
|
RET
|
|
;;ENDIF
|
|
; ------------------------------------------------------
|
|
; Restore saved video mode
|
|
; ------------------------------------------------------
|
|
;;IFUSED REST_VMODE
|
|
REST_VMODE
|
|
PUSH BC
|
|
LD A,(SAVE_VMODE)
|
|
CP DSS_VMOD_T80
|
|
JR Z, RVM_SAME
|
|
; Restore mode
|
|
PRINTLN MSG_PRESS_AKEY
|
|
|
|
LD C, DSS_WAITKEY
|
|
RST DSS
|
|
|
|
LD C,DSS_SETVMOD
|
|
RST DSS
|
|
RVM_SAME
|
|
POP BC
|
|
RET
|
|
;;ENDIF
|
|
|
|
; ------------------------------------------------------
|
|
; Init basic parameters of ESP
|
|
; ------------------------------------------------------
|
|
;;IFUSED INIT_ESP
|
|
INIT_ESP
|
|
PUSH BC, DE
|
|
LD DE, @WIFI.RS_BUFF
|
|
LD BC, DEFAULT_TIMEOUT
|
|
|
|
TRACELN MSG_ECHO_OFF
|
|
SEND_CMD CMD_ECHO_OFF
|
|
|
|
TRACELN MSG_STATIOJN_MODE
|
|
SEND_CMD CMD_STATION_MODE
|
|
|
|
TRACELN MSG_NO_SLEEP
|
|
SEND_CMD CMD_NO_SLEEP
|
|
|
|
IF ENABLE_RTS_CTR
|
|
TRACELN MSG_SET_UART
|
|
SEND_CMD CMD_SET_SPEED
|
|
ENDIF
|
|
|
|
TRACELN MSG_SET_OPT
|
|
SEND_CMD CMD_CWLAP_OPT
|
|
POP DE,BC
|
|
RET
|
|
;;ENDIF
|
|
; ------------------------------------------------------
|
|
; Set DHCP mode
|
|
; Out: CF=1 if error
|
|
; ------------------------------------------------------
|
|
;;IFUSED SET_DHCP_MODE
|
|
SET_DHCP_MODE
|
|
PUSH BC,DE
|
|
LD DE, WIFI.RS_BUFF
|
|
LD BC, DEFAULT_TIMEOUT
|
|
TRACELN MSG_SET_DHCP
|
|
SEND_CMD CMD_SET_DHCP
|
|
POP DE,BC
|
|
RET
|
|
;;ENDIF
|
|
|
|
; ------------------------------------------------------
|
|
; Messages
|
|
; ------------------------------------------------------
|
|
;;IFUSED FIND_SWF
|
|
MSG_SWF_NOF
|
|
DB "Sprinter-WiFi not found!",0
|
|
MSG_SWF_FOUND
|
|
DB "Sprinter-WiFi found in ISA#"
|
|
MSG_SLOT_NO
|
|
DB "n slot.",0
|
|
;;ENDIF
|
|
|
|
MSG_COMM_ERROR
|
|
DB "Error communication with Sprinter-WiFi #"
|
|
|
|
COMM_ERROR_NO
|
|
DB "n!",0
|
|
|
|
MSG_PRESS_AKEY
|
|
DB "Press any key to continue...",0
|
|
|
|
MSG_ESP_RESET
|
|
DB "Reset ESP module.",0
|
|
|
|
MSG_UART_INIT
|
|
DB "Reset UART.",0
|
|
|
|
LINE_END
|
|
DB "\r\n",0
|
|
|
|
;;IFUSED INIT_VMODE
|
|
SAVE_VMODE
|
|
DB 0
|
|
;;ENDIF
|
|
|
|
; ------------------------------------------------------
|
|
; Debug messages
|
|
; ------------------------------------------------------
|
|
IFDEF TRACE
|
|
MSG_DR
|
|
DB "Reg[0x"
|
|
MSG_DR_RN
|
|
DB "vv]=0x"
|
|
MSG_DR_RV
|
|
DB "vv",0
|
|
|
|
MSG_ECHO_OFF
|
|
DB "Echo off",0
|
|
|
|
MSG_STATIOJN_MODE
|
|
DB "Station mode",0
|
|
|
|
MSG_NO_SLEEP
|
|
DB "No sleep",0
|
|
|
|
MSG_SET_UART
|
|
DB "Setup uart",0
|
|
|
|
MSG_SET_OPT
|
|
DB "Set options",0
|
|
|
|
MSG_SET_DHCP
|
|
DB "Set DHCP mode",0
|
|
|
|
ENDIF
|
|
|
|
; ------------------------------------------------------
|
|
; Commands
|
|
; ------------------------------------------------------
|
|
; CMD_QUIT
|
|
; DB "QUIT\r",0
|
|
|
|
CMD_VERSION
|
|
DB "AT+GMR\r\n",0
|
|
CMD_SET_SPEED
|
|
DB "AT+UART_CUR=115200,8,1,0,3\r\n",0
|
|
CMD_ECHO_OFF
|
|
DB "ATE0\r\n",0
|
|
CMD_STATION_MODE
|
|
DB "AT+CWMODE=1\r\n",0
|
|
CMD_NO_SLEEP
|
|
DB "AT+SLEEP=0\r\n",0
|
|
CMD_CHECK_CONN_AP
|
|
DB "AT+CWJAP?\r\n",0
|
|
CMD_CWLAP_OPT
|
|
DB "AT+CWLAPOPT=1,23\r\n",0
|
|
CMD_GET_AP_LIST
|
|
DB "AT+CWLAP\r\n",0
|
|
CMD_GET_DHCP
|
|
DB "AT+CWDHCP?\r\n",0
|
|
CMD_SET_DHCP
|
|
DB "AT+CWDHCP=1,1\r\n",0
|
|
CMD_GET_IP
|
|
DB "AT+CIPSTA?\r\n",0
|
|
|
|
|
|
ENDMODULE
|
|
|
|
ENDIF |