API Reference
This section provides detailed documentation for all classes and functions in the MW75 EEG Streamer package.
Main Module
MW75 EEG Streamer - Main Entry Point
Clean main function and CLI interface for the MW75 EEG streamer.
- class mw75_streamer.main.MW75Streamer(csv_file=None, extra_file=None, websocket_url=None, lsl_stream_name=None, panel_server=None, verbose=False, eeg_callback=None, raw_data_callback=None, other_event_callback=None)[source]
Bases:
object
Main MW75 EEG streamer application
- mw75_streamer.main.show_output_configuration(args, logger)[source]
Display output configuration to user
- Return type:
Device Management
MW75 Device Controller
BLE Manager
BLE Manager for MW75 EEG Streamer
Handles Bluetooth Low Energy device discovery, connection, and activation sequence for the MW75 Neuro headphones.
- class mw75_streamer.device.ble_manager.BLEManager[source]
Bases:
object
Manages BLE connection and MW75 activation sequence
RFCOMM Manager
Data Processing
Packet Processor
Packet Processor for MW75 EEG Data
Handles parsing, validation, and processing of MW75 EEG data packets.
- class mw75_streamer.data.packet_processor.EEGPacket(timestamp, event_id, counter, ref, drl, channels, feature_status, checksum_valid)[source]
Bases:
object
Represents a parsed EEG packet from MW75 device
- class mw75_streamer.data.packet_processor.ChecksumStats(valid_packets=0, invalid_packets=0, total_packets=0)[source]
Bases:
object
Tracks packet validation statistics
- class mw75_streamer.data.packet_processor.PacketProcessor(verbose=False)[source]
Bases:
object
Handles MW75 packet parsing and validation
- validate_checksum(packet)[source]
Validate MW75 packet checksum
MW75 checksum calculation: - Sum of first 61 bytes (index 0-60) - Masked to 16 bits (& 0xFFFF) - Stored in bytes 61-62 as little endian
- process_data_buffer(data, eeg_callback, other_event_callback=None)[source]
Process data buffer and extract packets using continuous buffering
This method accumulates data across RFCOMM chunks to handle packet framing correctly, since RFCOMM delivers arbitrary-sized chunks (e.g., 64 bytes) while EEG packets are exactly 63 bytes.
Streamers
Data Streamers for MW75 EEG Data
Handles output of EEG data to various destinations: CSV files, WebSocket, and stdout.
- class mw75_streamer.data.streamers.CSVWriter(eeg_path=None, extra_path=None)[source]
Bases:
object
Handles CSV file output for EEG data and other events
- class mw75_streamer.data.streamers.WebSocketStreamer(url=None)[source]
Bases:
object
Handles real-time WebSocket streaming of EEG data
- class mw75_streamer.data.streamers.StdoutStreamer(print_header=True)[source]
Bases:
object
Handles EEG data output to stdout (console)
Configuration
MW75 EEG Streamer Configuration
Contains all constants, UUIDs, and configuration settings for the MW75 EEG streamer.
WebSocket Server (Remote Control)
WebSocket Server for Remote MW75 Control
Provides a WebSocket server that allows third-party applications to: - Connect/disconnect to MW75 device remotely - Receive real-time EEG data - Get status updates and logs - Configure auto-reconnect behavior
- class mw75_streamer.server.ws_server.DeviceState(value)[source]
Bases:
Enum
MW75 device connection states
- IDLE = 'idle'
- CONNECTING = 'connecting'
- CONNECTED = 'connected'
- DISCONNECTING = 'disconnecting'
- DISCONNECTED = 'disconnected'
- ERROR = 'error'
Testing Utilities
WebSocket Test Server
WebSocket Test Servers for MW75 EEG Streamer
Provides WebSocket test servers for validating EEG streaming functionality.
- class mw75_streamer.testing.websocket_server.SimpleWebSocketServer(host='localhost', port=8080, verbose=False)[source]
Bases:
object
Minimal WebSocket server for quick testing
Test Guide
MW75 Testing Guide and Utilities
Provides testing guidance and utility functions for MW75 EEG streaming validation.
- class mw75_streamer.testing.test_guide.TestGuide[source]
Bases:
object
Interactive testing guide for MW75 EEG streaming
- mw75_streamer.testing.test_guide.show_quick_start()[source]
Convenience function to show quick start guide
- Return type:
Panel Server
Panel WebSocket relay for MW75 streamer
Broadcasts EEG data, runtime statistics, and log messages to connected browser clients (e.g., panel.html). Sends data only when clients are connected and releases resources on disconnect.
- class mw75_streamer.panel.panel_server.PanelServer(host='localhost', port=8090)[source]
Bases:
object
Minimal WebSocket relay for browser panel.
Utilities
Logging
Logging utilities for MW75 EEG Streamer
Provides consistent logging setup and configuration across the application.
Data Structures
The core data structures are documented within their respective modules above. The main data structure is the EEGPacket
class in the packet processor module.