H3_ircut.c 4.0 KB
#include "H3_ircut.h"
#include <wiringPi.h>
#define AC 7
#define AC2 19
//���ܣ�����GPIOΪ����
int now_ircut_mode=0;
int gpio_test_in(unsigned int gpio_chip_num, unsigned int gpio_offset_num)
{
	FILE *fp;
	char file_name[50];
	unsigned char buf[10];
	unsigned int gpio_num;
	gpio_num = gpio_chip_num * 8 + gpio_offset_num;
	sprintf(file_name, "/sys/class/gpio/export");//��Ҫ������ GPIO ��� export
	fp = fopen(file_name, "w");
	if (fp == NULL) 
		{
			printf("Cannot open %s.\n", file_name);
			return -1;
		}
	fprintf(fp, "%d", gpio_num);
	fclose(fp);
	
	sprintf(file_name, "/sys/class/gpio/gpio%d/direction", gpio_num);//���� GPIO ����
	fp = fopen(file_name, "rb+");
	if (fp == NULL) 
		{
			printf("Cannot open %s.\n", file_name);
			return -1;
		}
	fprintf(fp, "in");//��������
	fclose(fp);
	
	sprintf(file_name, "/sys/class/gpio/gpio%d/value", gpio_num);//�鿴 GPIO ����ֵ��
	fp = fopen(file_name, "rb+");
	if (fp == NULL) 
		{
			printf("Cannot open %s.\n", file_name);
			return -1;
		}
	memset(buf, 0, 10);
	fread(buf, sizeof(char), sizeof(buf) - 1, fp);
	printf("%s: gpio%d_%d = %d\n", __func__,gpio_chip_num, gpio_offset_num, buf[0]-48);
	fclose(fp);
	
	sprintf(file_name, "/sys/class/gpio/unexport");
	fp = fopen(file_name, "w");
	if (fp == NULL) 
		{
			printf("Cannot open %s.\n", file_name);
			return -1;
		}
	fprintf(fp, "%d", gpio_num);
	fclose(fp);
	return (int)(buf[0]-48);
}

//���ܣ�����GPIO���
int gpio_test_out(unsigned int gpio_chip_num, unsigned int gpio_offset_num,unsigned int gpio_out_val)
{
	FILE *fp;
	char file_name[50];
	unsigned char buf[10];
	unsigned int gpio_num;
	gpio_num = gpio_chip_num * 8 + gpio_offset_num;
	sprintf(file_name, "/sys/class/gpio/export");
	fp = fopen(file_name, "w");
	if (fp == NULL) 
		{
			printf("Cannot open %s.\n", file_name);
			return -1;
		}
	fprintf(fp, "%d", gpio_num);
	fclose(fp);
	
	sprintf(file_name, "/sys/class/gpio/gpio%d/direction", gpio_num);
	fp = fopen(file_name, "rb+");
	if (fp == NULL) 
		{
			printf("Cannot open %s.\n", file_name);
			return -1;
		}
	fprintf(fp, "out");
	fclose(fp);
	
	sprintf(file_name, "/sys/class/gpio/gpio%d/value", gpio_num);
	fp = fopen(file_name, "rb+");
	if (fp == NULL) 
		{
			printf("Cannot open %s.\n", file_name);
			return -1;
		}
	if (gpio_out_val)
	strcpy(buf,"1");
	else
	strcpy(buf,"0");
	fwrite(buf, sizeof(char), sizeof(buf) - 1, fp);
	printf("%s: gpio%d_%d = %s\n", __func__,gpio_chip_num, gpio_offset_num, buf);
	fclose(fp);
	sprintf(file_name, "/sys/class/gpio/unexport");
	fp = fopen(file_name, "w");
	if (fp == NULL) 
		{
			printf("Cannot open %s.\n", file_name);
			return -1;
		}	
	fprintf(fp, "%d", gpio_num);
	fclose(fp);
	return 0;
}

void set_mute(int mutemode){//��������
	if(mutemode==1)
	{//ȡ������
		
		//gpio_test_out(1,2,1);//gpio1_2 �����	
	}
	if(mutemode==0)
	{//����
		//gpio_test_out(1,2,0);//gpio1_2 �����
	}
	else{
		printf("mutemode error\n");
	}
}


void H3_init_amplifier(void){
	wiringPiSetup() ;	//��ʼ��GPIO
    pinMode (AC, OUTPUT) ;//�������ģʽ
	digitalWrite(AC,LOW);
	pinMode (AC2, OUTPUT) ;//�������ģʽ
	digitalWrite(AC2,LOW);
}

void H3_set_amplifier(int amplifier_mode){//���ſ���
	if(amplifier_mode==1)
	{//���Ŵ�
		if(now_ircut_mode==0){
			digitalWrite(AC,HIGH);//gpio1_3 �����
			digitalWrite(AC2,HIGH);//gpio1_3 �����
			now_ircut_mode=1;
			printf("open!!!\n");
		}
		//gpio_test_out(1,2,1);//gpio1_2 �����	
		return;
	}
	if(amplifier_mode==0)
	{//���Źر�
		if(now_ircut_mode==1){
			digitalWrite(AC,LOW);
			digitalWrite(AC2,LOW);//gpio1_3 �����
			now_ircut_mode=0;
			printf("close!!!\n");
		}
		//gpio_test_out(1,2,0);//gpio1_2 �����
		return;
	}
	else{
		printf("amplifier_mode error\n");
		return;
	}
}