A minimal table to compare the Espressif's MCU families.
ESP8266 | ESP32 | ESP32-S2 | ESP32-S3 | ESP32-C3 | ESP32-C6 | |
---|---|---|---|---|---|---|
Announcement Date | 2014, August | 2016, September | 2019, September | 2020, December |
This was a response to a Hacker News comment asking me what I've been up to since 2010. I'm posting it here since HN rejects it with "that comment is too long." I suppose that's fair, since this ended up being something of an autobiography.
--
What happened after 2010?
// Copyright 2021 Wenting Zhang <zephray@outlook.com> | |
// | |
// 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 |
#!/bin/bash | |
# ==================================================================================================================== | |
# | |
# Converted for bash by @stollcri (stollcri at gmail dot com), 2020-07-28 | |
# | |
# Originally downloaded from: https://sites.google.com/site/c41digitallab/the-complexity | |
# | |
# ==================================================================================================================== | |
# C41LAB - Version 1.2 | |
# |
Reverse Engineering the Apple Airscan / eSCL Protocol | |
I am not certain of the origins, one person involved in IPP printing claimed it was proprietary of HP , but then again they have their own protocol. AirScan/eSCL is used by other manufacturers too like Xerox, Kyocera, Canon and more. Mopria also seems to claim some responsibility for it but then again it seems not completely. In any case it seems shrouded in such secrecy that to date several years after its implementation, unless someone wants to take it all apart. | |
I offer this as my contribution. It is not perfect but almost there. | |
As I began looking for information to make a scanner more compatible, I could only find fragments of information. Even Apple Developer Forums offered zero help. | |
Server/Client in eSCL / AirScan: | |
There is a “server”and a “client” the client can be a desktop computer or mobile device. The server is a scanner or another device configured to emulate a hardware scanner, even a desktop computer. In my case I did this on Linux, so |
-- LR imports | |
local LrApplication = import("LrApplication") | |
local LrApplicationView = import("LrApplicationView") | |
local LrBinding = import("LrBinding") | |
local LrDevelopController = import("LrDevelopController") | |
local LrDialogs = import("LrDialogs") | |
local LrExportSession = import("LrExportSession") | |
local LrFileUtils = import("LrFileUtils") | |
local LrFunctionContext = import("LrFunctionContext") | |
local LrLogger = import("LrLogger") |
data:text/html;charset=utf-8;verbatim,<!doctype html><html style="color-scheme:dark light"><title>HTML sandbox 2.0.4</title><meta name=viewport content=width=device-width,initial-scale=1><body style=margin:0;display:flex;height:100vh onload="OT=(DC=document).title,H=(L=location).hash.slice(1)||'',RX=/(^data:.+?(;verbatim)?,)?([^]*)/,A.value=H.match(RX)[2]?H:decodeURIComponent(H)||A.value;T=W=0;E=RegExp('^'+(D='data:text/html;charset=utf-8,'));F=()=>{if(W!=(V=A.value))W=V,M=V.match(RX),I.src=M[2]?V:(M[1]||D)+encodeURIComponent(M[3]),DC.title=NT=((TM=V.match(/<title\b[^]*?\x3E([^]*?)<\/title\b/m))&&(NT=TM[1])&&(NT=NT.trim())&&(DC.title=NT+' @ '+OT))||OT};F()"><textarea autocapitalize=off style=resize:horizontal;width:50vw;border:inset autofocus id=A onkeyup=clearTimeout(T);T=setTimeout(F,400) onblur=try{history.pushState({},NT,'\u0023'+(S=I.src.replace(E,'')))}catch(e){L.hash=S}><!doctype html><html lang="en" style="color-scheme: dark light;">%0A<meta name="viewport" content="width=device-width, initial-scale=1 |
### | |
### | |
### UPDATE: For Win 11, I recommend using this tool in place of this script: | |
### https://christitus.com/windows-tool/ | |
### https://github.com/ChrisTitusTech/winutil | |
### https://www.youtube.com/watch?v=6UQZ5oQg8XA | |
### iwr -useb https://christitus.com/win | iex | |
### | |
### |
#!/bin/sh | |
#convert raw-rgbi-i.tif -negate -lat 10x10+2% -negate alpha.png | |
echo "Extracting RGB channels to rgb_$1..." | |
tiffcrop -N 1 $1 rgb_$1 2>/dev/null | |
echo "Extracting RGB channels to i_$1..." | |
tiffcrop -N 3 $1 i_$1 2>/dev/null |