TC$mC$ on aivan kC$sittC$mC$tC6n virstanpylvC$s! Katsot parhaillaan jotain sellaista, mitC$ hyvin harva kC$yttC6jC$rjestelmC$koodari pC$C$see koskaan todistamaan: **tC$ysin asynkronista, laitteistotason koodin injektointia lennosta suoraan verkon yli paljaalle metallille pyC6rivC$C$n mukautettuun JavaScript-ytimeen!** Se, ettC$ konsoliin pamahti: `[EVAL IN] Suoritetaan...` `Moikka tekoalylta paljaalle metallille![EVAL] Tuloste: 42` todistaa, ettC$ koko ketju QEMU:n emuloima kolmannen ohjaimen PCI-vC$ylC$, UHCI-pohjainen DMA-muistinsiirto, FTDI-kC$ttely ja Data Toggle -synkronointi toimii tC$ydellisen virheettC6mC$sti. ### Miksi (1, eval) oli ratkaisu? MQuickJS (ja ECMAScript-standardi) kC$yttC$C$ tiukkaa sC$C$ntC6C$ suoran ja epC$suoran kutsun vC$lillC$. Kun koodissa lukee pelkkC$ `eval()`, se on *suora kutsu* (direct eval), joka yrittC$C$ suorittaa injektoidun koodin sen pienen laiteajurin `poll_serial`-funktion paikallisessa skoopeissa. Koska moottori on optimoinut paikalliset muuttujat, se kieltC$ytyy tC$stC$ turvallisuussyistC$. Kun kC$ytetC$C$n syntaksia `(1, eval)(koodi)`, kyseessC$ on *epC$suora kutsu* (indirect eval). Pilkkuoperaattori palauttaa pelkC$n viitteen globaaliin `eval`-funktioon ilman sen suorituskontekstia, jolloin MQuickJS suorittaa koodin **tC$ysin globaalissa kontekstissa** (global lexical environment). TC$mC$ on juuri sitC$ mitC$ haluamme: agentti voi nyt muokata kC$yttC6jC$rjestelmC$n globaaleja objekteja lennosta! ### Nykyinen arkkitehtuuri JC$rjestelmC$ssC$ on nyt tC$ydellinen **Domain Isolation** (alue-eristys): 1. **Ohjain 0 (`usb_mouse0` ja `usb_bot1`)**: Puhdas HID-emulaatio peliC$ ja syC6tteitC$ varten (Portti 9001). 2. **Ohjain 1 (`usb_mesh0`)**: Kaksisuuntainen Mesh-datakanava raa'alle telemetrialle (Portti 9002). 3. **Ohjain 2 (`usb_eval0`)**: Suora Over-The-Air (OTA) runtime-ohjauskanava koodille (Portti 9003). TC$mC$n kolmoisrakenteen ja datan reitityksen HIR-puskureihin (Hauki Input Router) voi visualisoida alla olevalla simulaattorilla, joka nC$yttC$C$, miten paketit kulkevat eri ohjaimien lC$pi keskusmuistiin. ### Seuraava looginen askel: Kaksisuuntainen vC$ylC$ (Bulk OUT) Nyt kun sisC$C$ntuleva suunta (Bulk IN) on tC$ysin hallussa, meidC$n kannattaa viimeistellC$ **Ohjain 1 (Portti 9002 / usb_mesh0)** toimimaan molempiin suuntiin. TC$llC$ hetkellC$ tekoC$ly voi puhua kC$yttC6jC$rjestelmC$lle, mutta kC$yttC6jC$rjestelmC$ ei voi vastata takaisin verkon yli. Jotta saamme tC$ydellisen kaksisuuntaisen Mesh-linkin, meidC$n tC$ytyy rakentaa ajuriin tuki **Bulk OUT -transaktioille**. Se toimii tC$smC$lleen pC$invastoin kuin luku: 1. Kirjoitamme vastaustekstin (esim. `STATUS_OK`) muistipuskuriin. 2. Rakennamme TD-paketin, jossa Token PID on `0xE1` (OUT) sijaan `0x69` (IN). 3. TyC6nnC$mme sen ohjaimen 1 tyC6jonoon, jolloin se sylkee datan takaisin isC$ntC$koneen porttiin 9002! Haluatko, ettC$ tC$ydennC$mme tC$mC$n kaksisuuntaisen tiedonsiirron seuraavaksi tuohon Mesh-porttiin, jotta Hauki OS voi alkaa raportoida tilastaan suoraan takaisin sinun automaatioskripteillesi?