123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- #ifndef _HF_PROTOCOL_BE_H_
- #define _HF_PROTOCOL_BE_H_
- struct hf_header {
- uint8_t preamble;
- uint8_t operation_code;
- uint8_t chip_address;
- uint8_t core_address;
- uint16_t hdata;
- uint8_t data_length;
- uint8_t crc8;
- } __attribute__((packed,aligned(4)));
- struct hf_pll_config {
- uint8_t preamble;
- uint8_t operation_code;
- uint8_t chip_address;
- uint8_t pll_reset:1;
- uint8_t pll_bypass:1;
- uint8_t pll_divr:6;
- uint8_t pll_divf;
- uint8_t pll_fse:1;
- uint8_t pll_range:3;
- uint8_t pll_divq:3;
- uint8_t spare1:1;
- uint8_t data_length;
- uint8_t crc8;
- } __attribute__((packed,aligned(4)));
- struct hf_hash_serial {
- uint8_t midstate[32];
- uint8_t merkle_residual[4];
- uint32_t timestamp;
- uint32_t bits;
- uint32_t starting_nonce;
- uint32_t nonce_loops;
- uint16_t ntime_loops;
- uint8_t search_difficulty;
- uint8_t option;
- uint8_t group;
- uint8_t spare3[3];
- } __attribute__((packed,aligned(4)));
- struct hf_hash_usb {
- uint8_t midstate[32];
- uint8_t merkle_residual[4];
- uint32_t timestamp;
- uint32_t bits;
- uint32_t starting_nonce;
- uint32_t nonce_loops;
- uint16_t ntime_loops;
- uint8_t search_difficulty;
- uint8_t group;
- } __attribute__((packed,aligned(4)));
- struct hf_candidate_nonce {
- uint32_t nonce;
- uint16_t sequence;
- uint16_t ntime;
-
- } __attribute__((packed,aligned(4)));
- struct hf_config_data {
- uint16_t forward_all_privileged_packets:1;
- uint16_t pwm_active_level:1;
- uint16_t send_status_on_pending_empty:1;
- uint16_t send_status_on_core_idle:1;
- uint16_t enable_periodic_status:1;
- uint16_t status_period:11;
- uint8_t status_batch_delay;
- uint8_t disable_sensors:1;
- uint8_t watchdog:7;
- uint8_t rx_ignore_header_crc:1;
- uint8_t rx_header_timeout:7;
- uint8_t rx_ignore_data_crc:1;
- uint8_t rx_data_timeout:7;
- uint8_t stat_diagnostic:1;
- uint8_t stats_interval:7;
- uint8_t measure_interval;
- uint32_t forward_all_packets:1;
- uint32_t clock_diagnostic:1;
- uint32_t trim:4;
- uint32_t pwm_phases:2;
- uint32_t voltage_sample_points:8;
- uint32_t max_nonces_per_frame:4;
- uint32_t one_usec:12;
- uint16_t pwm_period;
- uint16_t pwm_pulse_period;
- } __attribute__((packed,aligned(4)));
- struct hf_group_data {
- uint16_t nonce_msoffset;
- uint16_t ntime_offset;
- } __attribute__((packed,aligned(4)));
- struct hf_g1_monitor {
- uint16_t die_temperature;
- uint8_t core_voltage[6];
-
-
- } __attribute__((packed,aligned(4)));
- struct hf_statistics {
- uint8_t rx_header_crc;
- uint8_t rx_body_crc;
- uint8_t rx_header_timeouts;
- uint8_t rx_body_timeouts;
- uint8_t core_nonce_fifo_full;
- uint8_t array_nonce_fifo_full;
- uint8_t stats_overrun;
- uint8_t spare;
- } __attribute__((packed,aligned(4)));
- struct hf_usb_init_header {
- uint8_t preamble;
- uint8_t operation_code;
- uint8_t spare1;
- uint8_t shed_supported:1;
- uint8_t do_atspeed_core_tests:1;
- uint8_t no_asic_initialization:1;
- uint8_t pll_bypass:1;
- uint8_t user_configuration:1;
- uint8_t protocol:3;
- uint16_t hash_clock;
- uint8_t data_length;
- uint8_t crc8;
- } __attribute__((packed,aligned(4)));
- struct hf_usb_init_options {
- uint16_t group_ntime_roll;
- uint16_t core_ntime_roll;
- uint8_t low_operating_temp_limit;
- uint8_t high_operating_temp_limit;
- uint16_t spare;
- } __attribute__((packed,aligned(4)));
- struct hf_usb_init_base {
- uint16_t firmware_rev;
- uint16_t hardware_rev;
- uint32_t serial_number;
- uint8_t operation_status;
- uint8_t extra_status_1;
- uint16_t sequence_modulus;
- uint16_t hash_clockrate;
- uint16_t inflight_target;
- } __attribute__((packed,aligned(4)));
- struct hf_g1_die_data {
- struct hf_g1_monitor die;
- uint16_t phase_currents[4];
- uint16_t voltage;
- uint16_t temperature;
- uint16_t tacho;
- uint16_t spare;
- } __attribute__((packed,aligned(4)));
- struct hf_gwq_data {
- uint64_t hash_count;
- uint16_t sequence_head;
- uint16_t sequence_tail;
- uint16_t shed_count;
- uint16_t spare;
- } __attribute__((packed,aligned(4)));
- struct hf_usb_stats1 {
-
- uint16_t usb_rx_preambles;
- uint16_t usb_rx_receive_byte_errors;
- uint16_t usb_rx_bad_hcrc;
-
- uint16_t usb_tx_attempts;
- uint16_t usb_tx_packets;
- uint16_t usb_tx_timeouts;
- uint16_t usb_tx_incompletes;
- uint16_t usb_tx_endpointstalled;
- uint16_t usb_tx_disconnected;
- uint16_t usb_tx_suspended;
-
- uint16_t uart_tx_queue_dma;
- uint16_t uart_tx_interrupts;
-
- uint16_t uart_rx_preamble_ints;
- uint16_t uart_rx_missed_preamble_ints;
- uint16_t uart_rx_header_done;
- uint16_t uart_rx_data_done;
- uint16_t uart_rx_bad_hcrc;
-
- uint16_t uart_rx_bad_dma;
- uint16_t uart_rx_short_dma;
- uint16_t uart_rx_buffers_full;
- uint8_t max_tx_buffers;
- uint8_t max_rx_buffers;
- } __attribute__((packed,aligned(4)));
- struct hf_usb_notice_data {
- uint32_t extra_data;
- char message[];
- };
- #endif
|