{ "_description": "S7-1500 profile — single DB1 (1024 bytes) + MB (256 bytes) with well-known seeds at named offsets for the smoke + byte-order + string tests. Big-endian Siemens wire order throughout.", "areas": [ { "area": "DB", "index": 1, "size": 1024, "seeds": [ { "_desc": "DB1.DBW0 — read-back probe, S7Driver default ProbeAddress target is MW0; this shadows it", "offset": 0, "type": "u16", "value": 4242 }, { "_desc": "DB1.DBW10 — i16 smoke value for SmokeI16 read path", "offset": 10, "type": "i16", "value": -12345 }, { "_desc": "DB1.DBD20 — i32 smoke value for SmokeI32 read path", "offset": 20, "type": "i32", "value": 1234567890 }, { "_desc": "DB1.DBD30 — f32 smoke value for SmokeF32 read path (IEEE-754 big-endian)", "offset": 30, "type": "f32", "value": 3.14159 }, { "_desc": "DB1.DBX50.3 — bool bit at byte-50 bit-3 for SmokeBool read path", "offset": 50, "type": "bool", "value": true, "bit": 3 }, { "_desc": "DB1.DBW100 — scratch for write-then-read round-trip tests; seeded 0", "offset": 100, "type": "u16", "value": 0 }, { "_desc": "DB1.STRING[200] — S7 string 'Hello' (max 32, cur 5)", "offset": 200, "type": "ascii", "value": "Hello", "max_len": 32 }, { "_desc": "DB1.DBW300 — span-planner gate (S7_1500SpanReadTests) starts here. Cluster A spans 300..320 and merges into ONE block read under the 16-byte gap budget. Every seed from 300 on is distinct and non-zero so a mis-sliced block can never accidentally match (the #536 zero-source trap).", "offset": 300, "type": "u16", "value": 51001 }, { "_desc": "DB1.DBW302 — cluster A, adjacent to DBW300 (gap 0)", "offset": 302, "type": "i16", "value": -21001 }, { "_desc": "DB1.DBD304 — cluster A, adjacent to DBW302 (gap 0)", "offset": 304, "type": "i32", "value": 305419896 }, { "_desc": "DB1 @308 — POISON in the 308..310 hole the span reads through; no tag maps here, so a mis-slice yields 0xDEAD rather than a zero that could pass by luck", "offset": 308, "type": "u16", "value": 57005 }, { "_desc": "DB1.DBX310.5 — cluster A bool (gap 2 from the DBD304 end)", "offset": 310, "type": "bool", "value": true, "bit": 5 }, { "_desc": "DB1 @311 — POISON in the 311..316 hole", "offset": 311, "type": "u8", "value": 90 }, { "_desc": "DB1 @312 — POISON in the 311..316 hole (0xDEADBEEF)", "offset": 312, "type": "u32", "value": 3735928559 }, { "_desc": "DB1.DBD316 — cluster A f32, gap 5 from the bool byte's end; seals the span at 300..320 = 20 bytes", "offset": 316, "type": "f32", "value": 2.7182817 }, { "_desc": "DB1.DBW400 — cluster B; 80 bytes past cluster A's end, so the 16-byte gap budget forces a SECOND span rather than one merged read", "offset": 400, "type": "u16", "value": 40201 }, { "_desc": "DB1.DBW402 — cluster B's second member; two members keep the span off the PrefersPerTagRead demotion", "offset": 402, "type": "u16", "value": 40202 }, { "_desc": "DB1.DBW500 — isolated narrow scalar: its own single-member span, demoted by PrefersPerTagRead into a leftover that rides the multi-var pass", "offset": 500, "type": "u16", "value": 60001 }, { "_desc": "DB1.DBW600 — second isolated narrow scalar, likewise a multi-var leftover", "offset": 600, "type": "i16", "value": -32001 } ] }, { "area": "MK", "index": 0, "size": 256, "seeds": [ { "_desc": "MW0 — probe target for S7ProbeOptions.ProbeAddress default", "offset": 0, "type": "u16", "value": 1 }, { "_desc": "MW10 — span-planner gate: a narrow scalar in a DIFFERENT area from the DB1 leftovers. A block read can never merge across (area, DB); the multi-var pass can, so this pins that the leftover batching crosses the boundary.", "offset": 10, "type": "u16", "value": 4097 } ] } ] }