graydon
2025-08-30 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/*
 * hw_base_adapter.h
 *
 *  Created on: 2025Äê7ÔÂ19ÈÕ
 *      Author: 86189
 */
 
#ifndef HW_ADAPTER_H_
#define HW_ADAPTER_H_
 
#include "typedefs.h"
#include "../drv/board.h"
 
#define AddRoute(s, d) \
        conf->routes[conf->mRouteNum].source = s; \
        conf->routes[conf->mRouteNum].dest = d;  \
        conf->mRouteNum++
 
//n: 0<->sport0a,1<->sport0b,2<->sport1a,3<->sport1b,...
#define    intr_sport_no(n)  (37+2*n)
#define intr_lp0 81
#define intr_lp1 83
 
class hw_adapter_t{
protected:
    s8 dual_dsp ;
    s8 dsp_index ;
    s8 pad1 =0,pad2=0;
 
    s8 ana_input_num ;
    s8 ana_output_num ;
    s8 usb_input_num;
    s8 usb_output_num;
    s8 dante_input_num ;
    s8 dante_output_num ;
public:
    virtual ~hw_adapter_t(){}
    hw_adapter_t(s8 dual_dsp,s8 dsp_index,s8 ana_input_num,s8 ana_output_num,s8 dante_input_num,s8 dante_output_num)
    {
        this->dual_dsp = dual_dsp;
        this->dsp_index = dsp_index ;
        this->ana_input_num = ana_input_num;
        this->ana_output_num = ana_output_num;
        this->dante_input_num = dante_input_num;
        this->dante_output_num = dante_output_num;
        this->usb_input_num = 2;
        this->usb_output_num = 2;
    }
    uvoid get_channel_num(s8* ana_rx_num,s8* ana_tx_num,s8* dante_rx_num,s8* dante_tx_num)
    {
        *ana_rx_num = ana_input_num;
        *ana_tx_num = ana_output_num;
        *dante_rx_num = dante_input_num;
        *dante_tx_num = dante_output_num;
    }
 
    uvoid get_channel_num(u16* input_num ,u16* output_num)
    {
        *input_num = ana_input_num+dante_input_num;
        *output_num = ana_output_num+dante_output_num;
    }
 
    s32 get_dsp_index() {return dsp_index ;}
    s32 get_system_is_dual_dsp() { return dual_dsp ;}
 
    //dai,sportÅäÖÃ˳Ðò¾ÍÒѾ­¾ö¶¨ÁËÎïÀíbuffer.
    virtual uvoid config_board(struct DSPConfig * conf) =0;
 
    //¸ù¾ÝÂß¼­Í¨µÀºÅ»ñÈ¡ÎïÀíͨµÀºÅ£¬´Ó0¿ªÊ¼.
    //Âß¼­Í¨µÀºÅ¾ÍÊÇÊäÈëÊä³öÄ£¿éͨµÀ£¨¶Ë¿Ú£©Ë÷Òý; ÎïÀíͨµÀºÅÊÇsportÅäÖõÄbuffer.
    virtual s32 get_physical_channel(s32 input , s32 logic_channel) = 0;
};
 
 
#endif /* HW_ADAPTER_H_ */