Ejemplo n.º 1
0
/**
* UnPack RTP bitstream containing SID frame as unpacked ITU stream
* @param bitstream RTP bitstream to unpack
* @param bits ITU bitstream used as destination (0 - BIT_0, 1 - BIT_1)
*/
static void unpack_SID(const uint8_t bitstream[], int16_t bits[])
{  
   *bits++ = SYNC_WORD; 
   *bits++ = RATE_SID_OCTET;
   int2bin((int16_t)bitstream[0], 8, &bits[0]);
   int2bin((int16_t)bitstream[1], 8, &bits[8]);
}
Ejemplo n.º 2
0
/*----------------------------------------------------------------------------
 * prm2bits_ld8k -converts encoder parameter vector into vector of serial bits
 * bits2prm_ld8k - converts serial received bits to  encoder parameter vector
 *
 * The transmitted parameters are:
 *
 *     LPC:     1st codebook           7+1 bit
 *              2nd codebook           5+5 bit
 *
 *     1st subframe:
 *          pitch period                 8 bit
 *          parity check on 1st period   1 bit
 *          codebook index1 (positions) 13 bit
 *          codebook index2 (signs)      4 bit
 *          pitch and codebook gains   4+3 bit
 *
 *     2nd subframe:
 *          pitch period (relative)      5 bit
 *          codebook index1 (positions) 13 bit
 *          codebook index2 (signs)      4 bit
 *          pitch and codebook gains   4+3 bit
 *----------------------------------------------------------------------------
 */
void prm2bits_ld8k(
 Word16   prm[],           /* input : encoded parameters  (PRM_SIZE parameters)  */
  Word16 bits[]           /* output: serial bits (SERIAL_SIZE ) bits[0] = bfi
                                    bits[1] = 80 */
)
{
  Word16 i;
  *bits++ = SYNC_WORD;     /* bit[0], at receiver this bits indicates BFI */

  switch(prm[0]){

    /* not transmitted */
  case 0 : {
    *bits = RATE_0;
    break;
  }

  case 1 : {
    *bits++ = RATE_8000;
    for (i = 0; i < PRM_SIZE; i++) {
      int2bin(prm[i+1], bitsno[i], bits);
      bits += bitsno[i];
    }
    break;
  }

  case 2 : {

#ifndef OCTET_TX_MODE
    *bits++ = RATE_SID;
    for (i = 0; i < 4; i++) {
      int2bin(prm[i+1], bitsno2[i], bits);
      bits += bitsno2[i];
    }
#else
    *bits++ = RATE_SID_OCTET;
    for (i = 0; i < 4; i++) {
      int2bin(prm[i+1], bitsno2[i], bits);
      bits += bitsno2[i];
    }
    *bits++ = 0; //BIT_0;
#endif

    break;
  }

  default : {
    printf("Unrecognized frame type\n");
    exit(-1);
  }

  }

  return;
}
Ejemplo n.º 3
0
int main(int argc, char* argv[])
{
	int i;
	for(i = 8; i <= 20; i++)
		printf("Decimal : %02d, Binary : %s, Hexadecimal : %02X\n", i, int2bin(i), i);
	return 0;
}
Ejemplo n.º 4
0
int cmd_add_cid(proc_add_cid_t rec) {
	uint16_t addr=rec.token.addr;
	if( addr < GP_START_TICKET_BOUND ) {
		addr=devices[rec.dev].bound_token;
	}
	
	uint64_t cid2=db_get_cid_by_a(addr);
	if ( cid2 != 0 && cid2 != rec.token.cid ) {
		zprintf(3, "Conflict in db was: 0x%016llX, new: 0x%016llX for addr: 0x%04x\n", cid2, rec.token.cid, addr);
		return 0;
	}
	
	gp_token_rec_t t2;	
	memset(&t2, 0, sizeof(gp_token_rec_t));
	int2bin(t2.cid, rec.token.cid, 6, devices[rec.dev].cid_revert);
	t2.attr=rec.token.attr; 
	t2.schedule_mask=rec.token.schedule_mask;
	
//	t2.attr=0; t2.schedule_mask=0xFF; t2.schedule_mask=1;
	
	zprintf(7,"Writing  cid: 0x%012llX, dev=%d, addr=0x%04X, mask=0x%02X\n", 
		rec.token.cid, rec.dev, addr, rec.token.schedule_mask);
	ad_set_token(AD_Q_SECOND, rec.dev, addr, &t2, 1);
	
	if( addr >= devices[rec.dev].bound_token ) {
		devices[rec.dev].bound_token = addr + sizeof(gp_token_rec_t);
		gp_cfg.max_bound_token=MAX(gp_cfg.max_bound_token,devices[rec.dev].bound_token);
		ad_set_token_bound(AD_Q_SECOND, rec.dev, devices[rec.dev].bound_token);
	}
	return 1;
}
Ejemplo n.º 5
0
void makelut(unsigned int bits, unsigned int div)
{
  assert(bits < 32);

  // header
  std::cout << "  type rom" << div << "_t is array(0 to 2**lut_bits/" << div
            << "-1)" << std::endl
	    << "    of std_logic_vector(lut_bits-1 downto 0);" << std::endl
	    << "  constant rom" << div << " : rom" << div << "_t :=("
            << std::endl;

  // length of the LUT
  unsigned int length = powui(2u, bits)/div;

  // maximum value of a signed integer of length bits.
  unsigned int max = powui(2u, bits-1)-1;

  // cake
  long double pi = std::acos(-1.l);

  // construct LUT
  for(unsigned int c = 0; c < length; c++)
    {
      long double x = static_cast<long double>(c)/static_cast<long double>(length)*2.l*pi
        /static_cast<float>(div);
      unsigned int y = static_cast<unsigned int>(cos(x)*max);
      if(c % 4 == 0) std::cout << "    ";
      std::cout << "\"" << int2bin(y, bits) << "\"";
      if(c < length-1) std::cout << ", ";
      if((c + 1) % 4 == 0) std::cout << std::endl;
    }

  std::cout << "  );" << std::endl;
}
Ejemplo n.º 6
0
int main()
{
    int dec;
    char* bin;
    int cnt=0,cnt2=0;

    printf("Enter a decimal integer: ");
    scanf("%d",&dec);
    bin = int2bin(dec);
    printf("\n\nThe binary equivalent is: ");

    for (cnt=0; cnt<=31; cnt++)
    {
        //find the first index where a '1' can be found
        if (bin[cnt]=='1')
        {
            for (cnt2 = cnt; cnt2 < 32; cnt2++)
            {
                printf("%c",bin[cnt2]);
            }
            cnt=31;
        }

    }

    getchar();
    return (0);
}
Ejemplo n.º 7
0
void asl(){
	ALUOut = aluA << 1; // execução
	alu_flags.zero = ALUOut == 0 ? TRUE : FALSE;
	alu_flags.neg = ALUOut < 0 ? TRUE : FALSE;
	alu_flags.negzero = alu_flags.zero || alu_flags.neg;
	alu_flags.overflow = aluB > 0 ? (32767 - aluB) < aluA : (-32768 - aluB) > aluA;
	alu_flags.carry = int2bin(aluA)[15];
}
Ejemplo n.º 8
0
void create_data(FILE *bitfile, FILE *outfile, int a, int dw)
{
  int i,j,c,ca;
  char buf[1024], x[32];
  ca = pw(a);
  for(j=0;j<=ca;j++){
    int2bin(a,j,x);
    for(i=0; i<dw/8; i++)
      if((c=fgetc(bitfile))!=EOF)
	int2bin(8,c,buf+i*8);
      else
	int2bin(8,0,buf+i*8);
    buf[dw]=0; x[a] = 0;
    fprintf(outfile,"    when \"%s\" => d <= \"%s\";\n",x,buf);
    if (feof(bitfile)) break;
  }
//  fseek(outfile,-6,SEEK_CUR);
}
Ejemplo n.º 9
0
int main() {
    char buffer[BUF_SIZE];
    buffer[BUF_SIZE - 1] = '\0';


    int a = -8;
    unsigned u = -8;
    int2bin(a, buffer, BUF_SIZE - 1);

    printf("a = %s", buffer);

    printf("\n");
    int2bin(u, buffer, BUF_SIZE -1 );

    printf("u = %s", buffer);

    printf("\n");
}
Ejemplo n.º 10
0
//====================================
void registerLog()
//====================================
{
  if(g_boardType==UNO)
    {
      setPINRegister(g_curStep);
      fprintf(r_log,"# %d,DDRB=%s,DDRC=%s,DDRD=%s,",g_curStep,int2bin(DDRB,8),int2bin(DDRC,8),int2bin(DDRD,8));
      fprintf(r_log,"PORTB=%s,PORTC=%s,PORTD=%s,",int2bin(PORTB,8),int2bin(PORTC,8),int2bin(PORTD,8));
      fprintf(r_log,"PINB=%s,PINC=%s,PIND=%s\n",int2bin(PINB,8),int2bin(PINC,8),int2bin(PIND,8));
      fprintf(r_log,"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",g_curStep,DDRB,DDRC,DDRD,PORTB,PORTC,PORTD,PINB,PINC,PIND);
    }
}
Ejemplo n.º 11
0
int main( void )
{
    init();
       int sec=0;
       int min=0;
       int hour=0;
     
    for (;;){
       
       char binsec[6];
       char binmin[6];
       char binhou[6];
       int i=0;
       
       int2bin(sec,binsec);
       int2bin(min,binmin);
       int2bin(hour,binhou);
	
       sendData(binsec,binmin,binhou);
       for(i=0;i<9;i++){
	 min=checkMButton(min);
	 hour=checkHButton(hour);
	 _delay_ms(100);
       }
       
       sec++;
       
       if(sec>59){
	 sec=0;
	 min++;
       }
       if(min>59){
	 min=0;
	 hour++; 
       }
       if(hour>23){
	 hour=0;
       }
    }


}
Ejemplo n.º 12
0
int CFanmotorDlg::dataread_anybits(int addr,int ind,int length)
{
	int datr,datr_section;
	CString datstring,dat_section;
	datr = rreg(addr);
	if (!success){goto end;};
	datstring = int2bin(datr);
	for(int i=0;i<length;i++){
		dat_section += datstring[ind + i];
	}

	datr_section = bin2intwl(dat_section,length);
	return datr_section;
    end:;
}
Ejemplo n.º 13
0
/*----------------------------------------------------------------------------
 * prm2bits_ld8k -converts encoder parameter vector into vector of serial bits
 * bits2prm_ld8k - converts serial received bits to  encoder parameter vector
 *
 * The transmitted parameters are:
 *
 *     LPC:     1st codebook           7+1 bit
 *              2nd codebook           5+5 bit
 *
 *     1st subframe:
 *          pitch period                 8 bit
 *          parity check on 1st period   1 bit
 *          codebook index1 (positions) 13 bit
 *          codebook index2 (signs)      4 bit
 *          pitch and codebook gains   4+3 bit
 *
 *     2nd subframe:
 *          pitch period (relative)      5 bit
 *          codebook index1 (positions) 13 bit
 *          codebook index2 (signs)      4 bit
 *          pitch and codebook gains   4+3 bit
 *----------------------------------------------------------------------------
 */
void prm2bits_ld8k(
 Word16   prm[],           /* input : encoded parameters  (PRM_SIZE parameters)  */
  Word16 bits[]           /* output: serial bits (SERIAL_SIZE ) bits[0] = bfi
                                    bits[1] = 80 */
)
{
   Word16 i;
   *bits++ = SYNC_WORD;     /* bit[0], at receiver this bits indicates BFI */
   *bits++ = SIZE_WORD;     /* bit[1], to be compatible with hardware */

   for (i = 0; i < PRM_SIZE; i++)
     {
        int2bin(prm[i], bitsno[i], bits);
        bits += bitsno[i];
     }

   return;
}
Ejemplo n.º 14
0
void CFanmotorDlg::dataupdate_anybits(int addr, int ind, CString datbits,int length)
{
		
	int temp,datupdated;
	CString datbintemp;
	temp = rreg(addr);
	if (!success){goto end;};
	datbintemp = int2bin(temp);

	for(int i = 0;i<length;i++){
		datbintemp.SetAt(ind+i,datbits[i]);
	}

	datupdated = bin2int(datbintemp);
	wreg(addr,datupdated);
	if (!success){goto end;};
    end:;
}
Ejemplo n.º 15
0
/**
* UnPack RTP bitstream as unpacked ITU stream
* @param bitstream RTP bitstream to unpack
* @param bits ITU bitstream used as destination (0 - BIT_0, 1 - BIT_1)
* @param len length of the RTP bitstream
*/
static void unpack_G729(const uint8_t bitstream[], int16_t bits[], int len)  
{  
	int16_t i;
	*bits++ = SYNC_WORD;     /* bit[0], at receiver this bits indicates BFI */
	switch(len){
		case 10:
			*bits++ = SIZE_WORD;
			break;
		case 8: // RATE_6400
		case 15: //RATE_11800
		default:
			TSK_DEBUG_ERROR("%d is an invalid lenght value", len);
			return;
	} 

	for(i=0; i<len; i++){
		int2bin(bitstream[i], 8, &bits[i*8]);
	}
}
Ejemplo n.º 16
0
void prm2bits_ld8f(
    Word16 prm[],            /* input : encoded parameters  */
    Word16 bits[]           /* output: serial bits         */
)
{
    Word16 i;
    Word16 *ptr_bits;
    
    ptr_bits  = bits;
    *ptr_bits++ = SYNC_WORD;     /* bit[0], at receiver this bits indicates BFI */
        
        
    switch(prm[0]){
                
                
        case 0 : {        /* DTX: no bits transmitted */
            *ptr_bits = RATE_0;
            break;
        }

        case 1 : {        /* SID: 15 bits (or 16 bits if OCTET mode) */

#ifndef OCTET_TX_MODE
            *ptr_bits++ = RATE_SID;
            for (i = 0; i < PRM_SIZE_SID; i++) {
                int2bin(prm[i+1], bitsno2[i], ptr_bits);
                ptr_bits += bitsno2[i];
            }
#else
            *ptr_bits++ = RATE_SID_OCTET;
            for (i = 0; i < PRM_SIZE_SID; i++) {
                int2bin(prm[i+1], bitsno2[i], ptr_bits);
                ptr_bits += bitsno2[i];
            }
            *ptr_bits++ = BIT_0;
#endif

            break;
         }

        case 2 : {
            *ptr_bits++ = RATE_6400;
            for (i = 0; i < PRM_SIZE_6K; i++) {
                int2bin(prm[i+1], bitsno_6k[i], ptr_bits);
                ptr_bits += bitsno_6k[i];
            }
            break;
         }

        case 3 : {
            *ptr_bits++ = RATE_8000;
            for (i = 0; i < PRM_SIZE; i++) {
                int2bin(prm[i+1], bitsno[i], ptr_bits);
                ptr_bits += bitsno[i];
            }
            break;
         }
            
        default : {
            printf("Unrecognized frame type\n");
            exit(-1);
      }
        
    }
    
    return;
}
Ejemplo n.º 17
0
void prm2bits_ld8g(
    Word16 prm[],            /* input : encoded parameters  */
    Word16 bits[]           /* output: serial bits         */
)
{
    Word16 i;
    Word16 *ptr_bits;
    
    ptr_bits  = bits;
    *ptr_bits++ = SYNC_WORD;     /* bit[0], at receiver this bits indicates BFI */
        
        
    switch(prm[0]){
                
                
        case 0 : {        /* DTX: no bits transmitted */
            *ptr_bits = RATE_0;
            break;
        }
            
        case 1 : {        /* SID: 15 bits (or 16 bits if OCTET mode) */
                
#ifndef OCTET_TX_MODE
            *ptr_bits++ = RATE_SID;
            for (i = 0; i < PRM_SIZE_SID; i++) {
                int2bin(prm[i+1], bitsno_B[i], ptr_bits);
                ptr_bits += bitsno_B[i];
            }
#else
            *ptr_bits++ = RATE_SID_OCTET;
            for (i = 0; i < PRM_SIZE_SID; i++) {
                int2bin(prm[i+1], bitsno2[i], ptr_bits);
                ptr_bits += bitsno2[i];
            }
            *ptr_bits++ = BIT_0;
#endif

            break;
         }

        case 3 : {
            *ptr_bits++ = RATE_8000;
            for (i = 0; i < PRM_SIZE; i++) {
                int2bin(prm[i+1], bitsno[i], ptr_bits);
                ptr_bits += bitsno[i];
            }
            break;
         }

        case 4 : {
            *ptr_bits++ = RATE_11800;
            /* case 11.8 kbps */
            if((prm[1]) == 0) { /* mode parameter */
                *ptr_bits++ = BIT_0;     /* "Backward / Forward" Indication bit */
                *ptr_bits++ = BIT_0;       /* Parity bit */
                for (i = 0; i < PRM_SIZE_E_fwd-1; i++) {
                    int2bin(prm[i+2], bitsno_E_fwd[i], ptr_bits);
                    ptr_bits += bitsno_E_fwd[i];
                }
            }
            else {
                *ptr_bits++ = BIT_1;     /* "Backward / Forward" Indication bit */
                *ptr_bits++ = BIT_1;       /* Parity bit */
                for (i = 0; i < PRM_SIZE_E_bwd-1; i++) {
                    int2bin(prm[i+2], bitsno_E_bwd[i], ptr_bits);
                    ptr_bits += bitsno_E_bwd[i];
                }
            }
            break;
         }

        default : {
            printf("Unrecognized frame type\n");
            exit(-1);
      }

    }

    return;
}
Ejemplo n.º 18
0
/*############################## START FUNCTION ##################################  */
void mpu9150_start(void) {
  printf("Setting sample rate...\n");
  /*=== Set sample rate divider: (REG:25) ===*/
  uint8_t cmd[] = {MPU9150_SMPLRT_DIV, SAMPLE_RATE_CONFIG};
  i2c_transmitinit( MPU9150_I2C_ADDR, 2, cmd );
  while(!i2c_transferred()) /* Wait for transfer */ ;
  printf("Sample rate set to: %i!\n", SAMPLE_RATE_CONFIG);
  
  /*=== Set up FSYNC and dlpf: (REG:26) ===*/
  printf("Setting fsync dlpf config...\n");
  uint8_t fsync_dlpf_config = 0b00000011; //FSYNC disabled and dlpf_cfg set to 3.
  cmd[0] = MPU9150_CONFIG;
  cmd[1] = fsync_dlpf_config;
  i2c_transmitinit( MPU9150_I2C_ADDR, 2, cmd );
  while(!i2c_transferred()) /* Wait for transfer */ ;
  printf("FSYNC rate set!\n");
  /*
   * With current dlpf_cfg (3) the sample rate of the accelerometer is 1kHz and the 
   * gyroscope is 1kHz too. The sample rate divider has been set to 20 (register 20).
   * Sample rate = Gyroscope output rate / (1 + sample rate divider)
   *             =                  1000 / (1 + 19)
   *             =                       50Hz
   */
  /* Set up the fifo_config parameter and enable sensors if they are defined in the header file: */
  uint8_t fifo_config = 0b00000000;
  /*=== Trigger the gyroscopes self-test and set the scale range: (REG:27) ===*/
  if (INV_XYZ_GYRO) {
    fifo_config = fifo_config | 0b01110000;
    printf("Starting up gyroscope...\n");
    //Self test xyz and set full scale range to +-2000s:
    uint8_t gyro_config = 0b11111000;
    cmd[0] = MPU9150_GYRO_CONFIG;
    cmd[1] = gyro_config;
    i2c_transmitinit( MPU9150_I2C_ADDR, 2, cmd ) ;
    while(!i2c_transferred()) /* Wait for transfer */ ;
    printf("Gyroscope started!\n");
  }
 
  /*=== Trigger the accelorometer self-test and set the scale range: (REG:28) ===*/
  if (INV_XYZ_ACCEL) {
     fifo_config = fifo_config | 0b00001000;
     printf("Starting up accelorometer...\n");
     uint8_t accel_config = 0b11111000; //self test xyz, with full scale range +-16g and reset hpf
     cmd[0] = MPU9150_ACCEL_CONFIG;
     cmd[1] = accel_config;
     i2c_transmitinit( MPU9150_I2C_ADDR, 2, cmd ) ;
     while(!i2c_transferred()) /* Wait for transfer */ ;
     printf("Accelorometer started!\n");
  }
  
  /*=== Enable Temp on FIFO: ===*/
  if (INV_TEMP) {
    fifo_config = fifo_config | 0b10000000;
    printf("Adding thermometer to FIFO...\n");
  }
  
  if (INV_XYZ_ACCEL) {
        packet_size += 6;}
    if (INV_TEMP) {
        packet_size += 2;}
    if (INV_XYZ_GYRO) {
        packet_size += 6;}
    
    printf("packet size: %i\n", packet_size);
    //exit(0);
  
  /*
   * SKIPPING FREE FALL, MOTION DETECTION, ETC. CONFIGURATION
   */
  
   /*=== Setup FIFO queue: (REG:35) ===
    Bit order [1: Temp, 2-4: Gyro{x,y.z}, 5: Accel, 6-8: SLV{2,1,0}] */
  int BUF_SIZE = 9;
  char buffer[BUF_SIZE];
  buffer[BUF_SIZE - 1] = '\0';
  printf("Configuring FIFO with parameter %s...\n", int2bin(fifo_config, buffer, BUF_SIZE-1));
  cmd[0] = MPU9150_FIFO_EN;
  cmd[1] = fifo_config;
  i2c_transmitinit( MPU9150_I2C_ADDR, 2, cmd );
  while(!i2c_transferred()) /* Wait for transfer */ ;
  printf("FIFO configured!\n");
  
  /* Setup i2c master control (REG:36)
     First bit controls multi-master capability (not needed for us I think)
     Second bit controls wait for external sensors (to keep data in sync), which is not needed by us, because we do ot use external sensors
     Third bit controls FIFO_EN for salve 3 (other slaves controled in REG35)
     Fourth bit controls slave read and write mode (don't really know waht the implications of the different write modes are, think it's not significant for us?)
     Last four bits control the i2c master clock. We set the 8mhz clock divider to 19, so set this to 12 1100??? */
  printf("Setting up I2C master controller...\n");
  uint8_t i2cmc_config= 0b00001101;
  cmd[0] = MPU9150_I2C_MST_CTRL;
  cmd[1] = i2cmc_config;
  i2c_transmitinit( MPU9150_I2C_ADDR, 2, cmd );
  while(!i2c_transferred()) /* Wait for transfer */ ;
  printf("I2C master configured!\n");
  
  /* Setup user control */
  printf("Setting up user control...\n");
  uint8_t user_config= 0b01000100;
  cmd[0] = MPU9150_USER_CTRL;
  cmd[1] = user_config;
  i2c_transmitinit( MPU9150_I2C_ADDR, 2, cmd );
  while(!i2c_transferred()) /* Wait for transfer */ ;
  printf("User control configured!\n");
  
  /*
   * SLAVE CONTROL REGISTERS (37-53) WE DON'T NEED TO CONFIGURE (I THINK). 54 IS THE I2C MASTER CONTROLLER,
   * ALSO NOT USED BY US, 55 IS USED TO CONFIGURE INTERRUPTS (MAYBE WE SHOULD CONFIGURE), 56 ENABLES
   * INTERRUPTS, MAYBE WE SHOULD SET THE FIFO INTERRUPT TO ONE, THEN WAIT FOR THE INTERRUPT TO OCCOUR
   * AND THEN READ ALL SENSORS IN ONE GO AND WAIT FOR NEXT INTERRUPT. REG 58 CONTAINS THE INTERRUPT STATA.
   * 59-96 CONTAINS THE LATEST VALUES FROM THE SENOSRS, BUT WE READ THEM FROM THE FIFO INSTEAD. REG 97 IS
   * MOTION DETETION STATUS, 98-102 HAS THE DATAOUT FOR THE IC2 SLAVES, 103 CONTROLS IC2 MASTER DEALY, 104
   * CAN BE USED TO RESET THE PATHS FOR THE INTERNAL SENSORS, 105 IS MOTION DETECTION CONTROL, 106 USER CONTROL,
   * BUT WE ENABLE THE FIFO IN A DIFFERENT REGISTER, SO SON'T NEED TO REENABLE IT HERE. 107 AND 108 ARE
   * POWER MANAGEMENT.
   * NOW TO GET DATA, WE SHOULD LOOK AT REGISTERS 114 AND 115 TO GET THE COUNT OF NEW MEASUREMENTS AND THEN
   * READ THEM FROM THE FIFO QUEUE:
   */
}
Ejemplo n.º 19
0
int main(int argc, char** argv){
        int i, j;

	ERR_load_crypto_strings();
	OpenSSL_add_all_algorithms();
	OPENSSL_config(NULL);

        unsigned char data_to_encrypt[] = {0x01, 0x4B, 0xAF, 0x22, 0x78, 0xA6, 0x9D, 0x33, 0x1D, 0x51, 0x80, 0x10, 0x36, 0x43, 0xE9, 0x9A, '\0'};

        unsigned char key[] = {0xE8, 0xE9, 0xEA, 0xEB, 0xED, 0xEE, 0xEF, 0xF0, 0xF2, 0xF3, 0xF4, 0xF5, 0xF7, 0xF8, 0xF9, 0xFA, '\0'};
        unsigned char key1[] = {0xE9, 0xE9, 0xEA, 0xEB, 0xED, 0xEE, 0xEF, 0xF0, 0xF2, 0xF3, 0xF4, 0xF5, 0xF7, 0xF8, 0xF9, 0xFA, '\0'};
        unsigned char key2[] = {0xEA, 0xE9, 0xEA, 0xEB, 0xED, 0xEE, 0xEF, 0xF0, 0xF2, 0xF3, 0xF4, 0xF5, 0xF7, 0xF8, 0xF9, 0xFA, '\0'};
        unsigned char iv[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, '\0'};

        unsigned char data_to_encrypt2[] = {0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, '\0'};
	
	int data_length;
        if(argc == 2){
                data_length = atoi(argv[1]);
        } else{
                data_length = 100;
        }
        printf("Data length: %i\n", data_length);
        unsigned char data_to_encrypt3[16*data_length];
	memset(data_to_encrypt3, 0, 16*data_length);
        unsigned char encrypted_data_openssl[16*data_length*2];
	memset(encrypted_data_openssl, 0, 16*data_length);
//	unsigned char encrypted_data_fabric[16*data_length];
//	memset(encrypted_data_fabric, 0, 16*data_length);

	memmgr_init_shared_short();
	printf("\n");
	unsigned char *fpga_src  = memmgr_alloc(16*data_length);
	unsigned char *fpga_dest = memmgr_alloc(16*data_length);

        srand (time(NULL));

        int randStart = rand();
        for(i=0; i<data_length; i++){
                for(j=0; j<16; j++){
                        data_to_encrypt3[16*i + j] = i*j+j;//+randStart;
                }
        }


        unsigned char* data_pointer = data_to_encrypt3;
        unsigned char* encrypted_dest = encrypted_data_openssl;
//	memset(encrypted_dest, 16*data_length, 0);

        clock_t begin, end;
        begin = clock();
	encrypt(data_pointer, 16*data_length, key, iv, encrypted_dest);
	encrypt(encrypted_dest, 16*data_length, key1, iv, encrypted_dest);
	encrypt(encrypted_dest, 16*data_length, key2, iv, encrypted_dest);
	end = clock();
	double ticks = (double)(end - begin);
        double seconds =(double)(end - begin)/CLOCKS_PER_SEC;
        printf ("It took %f clicks (%f seconds) in openssl.\n",ticks,seconds);
//	FPGA_AES *cipher = fpga_aes_new(key, 16, 0x1f410000, "qam", "axi-reset");
        data_pointer = data_to_encrypt3;
//        encrypted_dest = encrypted_data_fabric;

        begin = clock();
//                Aes_encrypt_cbc_memcpy(cipher, iv, encrypted_dest, data_pointer, 16*data_length);    
	triple_encrypt_fpga_ecb(fpga_src, 16*data_length, key, key1, key2, fpga_dest);
	end = clock();
	ticks = (double)(end - begin);
        seconds =(double)(end - begin)/CLOCKS_PER_SEC;
        printf ("\nIt took %f clicks (%f seconds) in fabric.\n",ticks,seconds);

	printf("\nChecking");
        ticks = clock();

	char bin_buffer[33];
	bin_buffer[32] = '\0';
	int incorrectCount = 0;

	int k = 0;
	for(i=0; i<1000000; i++){
		k+=5;
	}
	printf("\nk is: %i", k);
	
	if(data_length > 5){

	        for(i=0; i<data_length; i++){
        	        for(j=0; j<16; j++){
	                        char openssl = encrypted_data_openssl[i*16 + j];
                	        int2bin(openssl, bin_buffer, 32);
        	                char fabric = fpga_dest[i*16+j];
	                        if(openssl != fabric){
	                                printf("\nChar at index %i is not encrypted correctly. It is %02x in openssl, %02x in fabric", i*16+j, openssl, fabric);
	                                incorrectCount++;
	                        } 
	                }
	        }
	        ticks = clock() - ticks;
	        printf ("\nIt took %f clicks (%f seconds) to check.\n",(float)ticks,((float)ticks)/CLOCKS_PER_SEC);
	} else{
		printf("\nInputs:\n");
		for(i=0; i<data_length; i++){
			printf(" 0x");
			for(j=0; j<16; j++){
				printf("%02x", data_to_encrypt3[i*16+j]);
			}
		}
		printf("\nOpenSSL results:\n");
		for(i=0; i<data_length; i++){
			printf(" 0x");
			for(j=0; j<16; j++){
				printf("%02x", encrypted_data_openssl[i*16+j]);
			}
		}
		printf("\nFabric results:\n");
		for(i=0; i<data_length; i++){
			printf(" 0x");
			for(j=0; j<16; j++){
				printf("%02x", fpga_dest[i*16+j]);
			}
		}

	}
	printf("\n");

	EVP_cleanup();
	ERR_free_strings();
	memmgr_free(fpga_src);
	memmgr_free(fpga_dest);
	return 0;
}
Ejemplo n.º 20
0
//This function performs the SBox substitution
//The input is a 48 bits array, and the output is a 32 bits array
void SBox_Function(unsigned int *oldBlock, unsigned int *compressedBlock)
{
    int beg,end,row,col,index;
    unsigned int aux[4]; //Auxiliary array that stored the Sbox value in binary
    beg = 0; //flag to the beginning of the 48 bits array
    end = 5; //flag to the end of the 48 bits array
    index = 0; //flag that controls the array that stores substitutions
    unsigned int rowBin[2], colBin[4]; // arrays that store both row and column of Sbox in binary
    //Execute this until the end of 48 bits array
    while(end<48)
    {
        //Extract both first and last bits in a range of 6 bits
        rowBin[0] = oldBlock[beg];
        rowBin[1] = oldBlock[end];

        //Extract the 4 bits in the middle of beg and end
        for(int i=beg+1,j=0;i<end;i++,j++)
        {
            colBin[j] = oldBlock[i];
        }

        //Convert Row and Col to numbers
        row = bit2int(rowBin,2);
        col = bit2int(colBin,4);

        //Select the correspondent Sbox number and transforms it in binary
        switch(end)
        {
            case 5:
                   int2bin(aux,(int)S1[row][col],4);
                   break;
            case 11:
                   int2bin(aux,(int)S2[row][col],4);
                   break;
            case 17:
                   int2bin(aux,(int)S3[row][col],4);
                   break;
            case 23:
                   int2bin(aux,(int)S4[row][col],4);
                   break;
            case 29:
                   int2bin(aux,(int)S5[row][col],4);
                   break;
            case 35:
                   int2bin(aux,(int)S6[row][col],4);
                   break;
            case 41:
                   int2bin(aux,(int)S7[row][col],4);
                   break;
            case 47:
                   int2bin(aux,(int)S8[row][col],4);
                   break;

        }

        //Append the 4 bits array generated to the 32 bits array
        for(int j=0;j<4;j++,index++)
            compressedBlock[index] = aux[j];


        beg+=6;
        end+=6;

    }
}
Ejemplo n.º 21
0
// funcion main 
int main (){
       
        int x, i; 
	init_input("input"); 

// test factorial entero    
        print_string("Factorial Enteros----------------------------------");    
        x=get_int(); // lee la cantidad de veces que ejecutara la funcion  
        i = 0;        
        while (i<x){              
            int aux;         
            aux=get_int(); // lee los datos para invocar a la funcion
            aux = factorial(aux);
            print_int(aux);             
            i++;
	    }
		print_string("---------------------------------------------------------");
		
// test factorial real 
		print_string("Factorial Reales----------------------------------");
        x=get_int();  
        i = 0;
        while (i<x){
            float aux;
            aux=get_float();
            aux = factorialF(aux);
            print_float(aux); 
            i++;
	    }
		print_string("---------------------------------------------------------");

// test factorial array entero    
        print_string("Factorial Array Enteros----------------------------------");    
        x=get_int(); // lee la cantidad de veces que ejecutara la funcion  
        i = 0;        
        while (i<x){              
            int aux;         
            aux=get_int(); // lee los datos para invocar a la funcion
            aux = factorialArray(aux);
            print_int(aux);             
            i++;
	    }
		print_string("---------------------------------------------------------");

// test nthprime entero    
        print_string("Nthprime Enteros----------------------------------");    
        x=get_int(); // lee la cantidad de veces que ejecutara la funcion  
        i = 0;        
        while (i<x){              
            int aux;         
            aux=get_int(); // lee los datos para invocar a la funcion
            aux = nthprime(aux);
            print_int(aux);             
            i++;
	    }
		print_string("---------------------------------------------------------");

// test nthprime array entero    
        print_string("Nthprime Array Enteros----------------------------------");    
        x=get_int(); // lee la cantidad de veces que ejecutara la funcion  
        i = 0;        
        while (i<x){              
            int aux;         
            aux=get_int(); // lee los datos para invocar a la funcion
            aux = nthprimeArray(aux);
            print_int(aux);             
            i++;
	    }
		print_string("---------------------------------------------------------");

// test int2bin entero    
        print_string("Int2Bin Enteros----------------------------------");    
        x=get_int(); // lee la cantidad de veces que ejecutara la funcion  
        i = 0;        
        while (i<x){              
            int aux;         
            aux=get_int(); // lee los datos para invocar a la funcion
            aux = int2bin(aux);
            print_int(aux);             
            i++;
	    }
		print_string("---------------------------------------------------------");

// test gcd entero    
        print_string("GCD Enteros----------------------------------");    
        x=get_int(); // lee la cantidad de veces que ejecutara la funcion  
        i = 0;        
        while (i<x){              
            int aux;// lee los datos para invocar a la funcion
            aux = gcd(get_int(),get_int());
            print_int(aux);             
            i++;
	    }
		print_string("---------------------------------------------------------");

// test test    
        print_string("test----------------------------------");    
        test();
		print_string("---------------------------------------------------------");


// test test1    
        print_string("test1----------------------------------");    
        test1();
		print_string("---------------------------------------------------------");



        close_input();
        return 1;   
}
Ejemplo n.º 22
0
//============================================================================================================
int main()
{
    
    int N; //system size
    cout <<"set system size: ";
    cin >>N;
    
    int m; //total magnetization counted in multiples of 1
    cout <<"set total magnetization (in multiples of 1/2): ";
    cin >>m;
    
    cout <<endl;


    bool testpos=0; //test the position finder of the states. Set to 1 for test.

    Hamiltonian testHam(N,m);

    
//Test der Suchfunktion:
    
    if (testpos){
        int pos=0;
        char* out;
         for(int i=0;i<testHam.get_dim();i++){
             REP_TYPE state = testHam.get_basis_state(i);
             pos = testHam.find_state(state); 
             out = int2bin(state,NULL);
             out = &(out[sizeof(REP_TYPE)*CHAR_BIT - N]); //cutoff string, borrowed from utilities.c
             cout <<"integer: " <<state<<" binary: "<<out<<" pos: "<<pos<<endl;
         }
    }
    

    cout <<"\n";
    testHam.print_basis_list();
    testHam.print_system_size();
    testHam.print_basis_dimension();
    cout <<"\n";

     
    //GROUND STATE:
    Hamiltonian h1(N,m);
    h1.set_ham(1,0); //mu=1.1
    h1.diagonalize();
    Hamiltonian h2(N,m);
    h2.set_ham(4,0);
    h2.diagonalize();
    plot_groundstate_quench(&h1,&h2,0.01,30);
     
   
     
    //state eingeben :
    char test[testHam.get_system_size()];
    cout << "insert initial state:"<<endl;
    cin.ignore();
    cin.getline(test,testHam.get_system_size()+1);
    cx_vec state=input_state(test,&testHam);
    cout <<"vector is: "<<endl;
    cout << state <<endl;

    testHam.set_ham(0,0);
    testHam.diagonalize();
    plot_lohschmidt_echo(&testHam,state,0.01,50);
     

    /* 
    double T=40; //60
    double dt=0.1; //0.02
    
    double mu=0;
    double lambda=0;
    
    
    while (lambda <= 1){
        testHam.set_ham(mu,lambda); // mu=0,Lambda=0
        cout <<endl<<"<><><><><><><><><><><><><><><><>diagonalisierung<><><><><><><><><><><><><><><>"<<endl<<endl;
        testHam.diagonalize();
        plot_sz(&testHam,state,dt,T);
        T-=5;
        lambda+=0.1;
    } 
    */

    /*(kollision)
    mu=0; 
    testHam.set_ham(mu,lambda); // mu=0,Lambda=0
    cout <<endl<<"<><><><><><><><><><><><><><><><>diagonalisierung<><><><><><><><><><><><><><><>"<<endl<<endl;
    testHam.diagonalize();
    plot_sz(&testHam,state,dt,T);
    mu=5;
    testHam.set_ham(mu,lambda); // mu=5,Lambda=0
    cout <<endl<<"<><><><><><><><><><><><><><><><>diagonalisierung<><><><><><><><><><><><><><><>"<<endl<<endl;
    testHam.diagonalize();
    plot_sz(&testHam,state,dt,T);
    */

    /* (two string)
    mu+=1;
    while (mu <= 3){
        testHam.set_ham(mu,lambda); // mu=0,Lambda=0
        cout <<endl<<"<><><><><><><><><><><><><><><><>diagonalisierung<><><><><><><><><><><><><><><>"<<endl<<endl;
        testHam.diagonalize();
        plot_sz(&testHam,state,dt,T);
        mu+=1;
    }
    */

    //(kurzzeit)
    testHam.set_ham(0,0);
    cout <<endl<<"<><><><><><><><><><><><><><><><>diagonalisierung<><><><><><><><><><><><><><><>"<<endl<<endl;
    testHam.diagonalize();
    plot_kurz_auto(&testHam,state,0.01,10);
    //plot_lohschmidt_echo(&testHam,state,0.01,10);  //(ham,dt,T)
    
    //plot_szsz_n(&testHam,state,1,0.1,10); //(ham,n,dt,T)
    

    /*
  int i=0;
    for (;;){
        cout << "enter component:"<<endl;
        cin.ignore();
        cin >> i;
        cout << i<<" th spin is "<<get_sz(string_to_state(test,testHam.get_system_size()),i,testHam.get_system_size())*1/2.<<endl;
    }
  */  

    return 0;
}