pucchsignalgenerator.c 5.03 KB
Newer Older
ghaddab's avatar
ghaddab committed
1
/*******************************************************************************
2
    OpenAirInterface
ghaddab's avatar
ghaddab committed
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    Copyright(c) 1999 - 2014 Eurecom

    OpenAirInterface is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.


    OpenAirInterface is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
17
18
    along with OpenAirInterface.The full GNU General Public License is
   included in this distribution in the file called "COPYING". If not,
ghaddab's avatar
ghaddab committed
19
20
21
22
23
   see <http://www.gnu.org/licenses/>.

  Contact Information
  OpenAirInterface Admin: openair_admin@eurecom.fr
  OpenAirInterface Tech : openair_tech@eurecom.fr
24
  OpenAirInterface Dev  : openair4g-devel@lists.eurecom.fr
25

ghaddab's avatar
ghaddab committed
26
  Address      : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
ghaddab's avatar
ghaddab committed
27
28

 *******************************************************************************/
29
30
31
32
33
34
35
36
37
#include<stdio.h>
#include<string.h>
#include<gpib/ib.h>

#include "pucchsignalgegerator.h"


void gpib_send(unsigned int gpib_board, unsigned int gpib_device, char *command_string )
{
38
39
  unsigned short addlist[2] = {gpib_device, NOADDR};
  SendIFC(gpib_board);
40

41
42
  //Enable all on GPIB bus
  EnableRemote(gpib_board, addlist);
43
44


45
46
47
  if(ibsta & ERR) {
    printf("gpib_send: Instrument enable failed! \n");
  }
48

49
50
  //Send Control Commandss
  Send(gpib_board, gpib_device, command_string, strlen(command_string), NLend);
51

52
  if(ibsta & ERR) {
53

54
    printf("gpib_send: Send failed! \n");
55

56
57
58
  }

  printf("%s \n",command_string);
59
60
61
62

}


63
64
65
66
void pucchsignalG(unsigned int gpib_card,unsigned int gpib_device,unsigned int freqband,LTE_DL_FRAME_PARMS *frame_parms,PUCCH_FMT_t pucch_format)
{
  char string[256];
  //void *DLSCH_alloc_pdu = (void *)dci_alloc[0].dci_pdu;
67

68
69
70
71
  //Start the configuration
  gpib_send(gpib_card,gpib_device,"*RST;*CLS");   //reset and configure the signal generator
  gpib_send(gpib_card,gpib_device,"BB:EUTR:PRES");
  gpib_send(gpib_card,gpib_device,"BB:EUTR:STAT ON");
72

73
74
  gpib_send(gpib_card,gpib_device,"POW -70dBm");  // set output signal power
  //gpib_send(gpib_card,gpib_device,"FREQ 1.91");  // set frequency
75

76
77
78
79
80
  //Selects the duplexing mode
  if (frame_parms->frame_type == 0)
    gpib_send(gpib_card,gpib_device,"BB:EUTR:DUPL FDD");
  else
    gpib_send(gpib_card,gpib_device,"BB:EUTR:DUPL TDD");
81

82
83
  gpib_send(gpib_card,gpib_device,"BB:EUTR:LINK UP");
  gpib_send(gpib_card,gpib_device,"BB:EUTR:SLEN 4");                        //sequence length of the signal in number of frames
84

85
86
87
88
89
  // General EUTRA/LTE Settings
  sprintf(string,"BB:EUTR:TDD:UDC %d",frame_parms->tdd_config);
  gpib_send(gpib_card,gpib_device,string);  //sets the UL/DL configuration into 3
  sprintf(string,"BB:EUTR:TDD:SPSC %d",frame_parms->tdd_config_S);
  gpib_send(gpib_card,gpib_device,string); //sets the special subframe configuration into 0
90
91


92
  //General EUTRA/LTE UPlink Settings
93

94
  gpib_send(gpib_card,gpib_device,"BB:EUTR:UL:BW USER"); //set the bandwidth into 5 MHz ??
95

96
97
  sprintf(string,"BB:EUTR:UL:NORB %d",frame_parms->N_RB_UL); //sets the number of resource blocks to 25
  gpib_send(gpib_card,gpib_device,string);
98

99
100
  sprintf(string,"BB:EUTR:UL:PLC:CID %d",frame_parms->Nid_cell); //sets the Cell ID 0
  gpib_send(gpib_card,gpib_device,string);
101
102


103
104
105
106
  if (frame_parms->Ncp == 0)
    gpib_send(gpib_card,gpib_device,"BB:EUTR:UL:CPC NORM"); //set the prefix of the subframes
  else
    gpib_send(gpib_card,gpib_device,"BB:EUTR:UL:CPC EXT");
107

108
  gpib_send(gpib_card,gpib_device,"BB:EUTR:UL:REFS:GRPH OFF"); //disables group hopping
109

110
  gpib_send(gpib_card,gpib_device,"BB:EUTR:UL:REFS:SEQH OFF"); //disables sequence hopping
111

112
  gpib_send(gpib_card,gpib_device,"BB:EUTR:UL:REFS:SRS:ANST OFF"); //disables the A/N ans SRS simultaneous transmission for UE2
113
114
115
116
117





118
119
  //UL Frame Configuration pucch
  gpib_send(gpib_card,gpib_device,"BB:EUTR:UL:CONS 10");//10 UL subframes of a frame are configurable
120

121
  gpib_send(gpib_card,gpib_device,"BB:EUTR:UL:SUBF2:ALL0:STAT ON"); //Sets the allocation state to active
122

123
124
125
126
127
128
129
130
131
132
133
134
135
136
  gpib_send(gpib_card,gpib_device,"BB:EUTR:UL:SUBF2:ALL0:CONT PUCC");

  //pucch format
  if(pucch_format==pucch_format1) {
    gpib_send(gpib_card,gpib_device,"BB:EUTR:UL:SUBF2:ALL0:FORM F1");
  }

  if(pucch_format==pucch_format1a) {
    gpib_send(gpib_card,gpib_device,"BB:EUTR:UL:SUBF2:ALL0:FORM F1A");
  }

  if(pucch_format==pucch_format1b) {
    gpib_send(gpib_card,gpib_device,"BB:EUTR:UL:SUBF2:ALL0:FORM F1B");
  }
137

138
  gpib_send(gpib_card,gpib_device,"BB:EUTR:UL:SUBF2:ALL0:VRB 2"); //sets the VRB Offset
139

140
141
142
143
144
  //RF signal setting
  gpib_send(gpib_card,gpib_device,"FREQ 1.2GHz");
  gpib_send(gpib_card,gpib_device,"SOUR:POW:POW -50");
  gpib_send(gpib_card,gpib_device,"SYSTem:ERRor?");
  gpib_send(gpib_card,gpib_device,"OUTP ON");
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167


}