Subversion Repositories Projects

Rev

Rev 127 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 127 Rev 130
1
#include "fc.h"
1
#include "fc.h"
2
 
2
 
3
 
3
 
4
unsigned char TxBuffer[150];
4
unsigned char TxBuffer[150];
5
unsigned char _TxBuffer[150];
5
unsigned char _TxBuffer[150];
-
 
6
 
-
 
7
char RxBuffer[150];
-
 
8
char PrintableRxBuffer[150];
-
 
9
 
6
 
10
 
7
 
11
 
8
int mk_socket;
12
int mk_socket;
-
 
13
 
9
 
14
int status;
10
 
15
 
11
void AddCRC(unsigned int wieviele)
16
void AddCRC(unsigned int wieviele)
12
{
17
{
13
  unsigned int tmpCRC = 0,i;
18
  unsigned int tmpCRC = 0,i;
14
  for(i = 0; i < wieviele;i++)
19
  for(i = 0; i < wieviele;i++)
15
    {
20
    {
16
      tmpCRC += TxBuffer[i];
21
      tmpCRC += TxBuffer[i];
17
    }
22
    }
18
  tmpCRC %= 4096;
23
  tmpCRC %= 4096;
19
  TxBuffer[i++] = '=' + tmpCRC / 64;
24
  TxBuffer[i++] = '=' + tmpCRC / 64;
20
  TxBuffer[i++] = '=' + tmpCRC % 64;
25
  TxBuffer[i++] = '=' + tmpCRC % 64;
21
  TxBuffer[i++] = '\r';
26
  TxBuffer[i++] = '\r';
22
}
27
}
23
 
28
 
24
 
29
 
25
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len)
30
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len)
26
{
31
{
27
  int status =0;
32
  int status =0;
28
  unsigned int pt = 0;
33
  unsigned int pt = 0;
29
  unsigned char a,b,c;
34
  unsigned char a,b,c;
30
  unsigned char ptr = 0;
35
  unsigned char ptr = 0;
31
 
36
 
32
  TxBuffer[pt++] = '#';               // Startzeichen
37
  TxBuffer[pt++] = '#';               // Startzeichen
33
  TxBuffer[pt++] = modul;             // Adresse (a=0; b=1,...)
38
  TxBuffer[pt++] = modul;             // Adresse (a=0; b=1,...)
34
  TxBuffer[pt++] = cmd;                 // Commando
39
  TxBuffer[pt++] = cmd;                 // Commando
35
 
40
 
36
  while(len)
41
  while(len)
37
    {
42
    {
38
      if(len) { a = snd[ptr++]; len--;} else a = 0;
43
      if(len) { a = snd[ptr++]; len--;} else a = 0;
39
      if(len) { b = snd[ptr++]; len--;} else b = 0;
44
      if(len) { b = snd[ptr++]; len--;} else b = 0;
40
      if(len) { c = snd[ptr++]; len--;} else c = 0;
45
      if(len) { c = snd[ptr++]; len--;} else c = 0;
41
      TxBuffer[pt++] = '=' + (a >> 2);
46
      TxBuffer[pt++] = '=' + (a >> 2);
42
      TxBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4));
47
      TxBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4));
43
      TxBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6));
48
      TxBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6));
44
      TxBuffer[pt++] = '=' + ( c & 0x3f);
49
      TxBuffer[pt++] = '=' + ( c & 0x3f);
45
    }
50
    }
46
 
51
 
47
 
52
 
48
 
53
 
49
  AddCRC(pt);
54
  AddCRC(pt);
50
  printf("Sending to MK %d \n" , pt);
55
  printf("Sending to MK %d \n" , pt);
51
 
56
 
52
  status = send(mk_socket,"\r" , 1, 0);
57
  status = send(mk_socket,"\r" , 1, 0);
53
 
58
 
54
 
59
 
55
  //  for (c=0;c<pt+2;c++)
60
  //  for (c=0;c<pt+2;c++)
56
  // {
61
  // {
57
  status = write(mk_socket,&TxBuffer , pt+3);
62
  status = write(mk_socket,&TxBuffer , pt+3);
-
 
63
 
-
 
64
 
58
  //   printf("Send to MK %d \n" , TxBuffer[c] );
65
  //   printf("Send to MK %d \n" , TxBuffer[c] );
59
  // }
66
  // }
-
 
67
  /* int i=0;
60
  /*while(TxBuffer[i] !='\r' && i<150)
68
  while(TxBuffer[i] !='\r' && i<150)
61
    {
69
    {
62
    //     TxBuffer[i]='#';
70
    //     TxBuffer[i]='#';
63
    status = send(s,&TxBuffer[i] , 1, 0);
71
    status = send(mk_socket,TxBuffer[i] , 1, 0);
64
    printf(" +%d%c ",i,TxBuffer[i]);
72
    printf(" +%d%c ",i,TxBuffer[i]);
65
    i++;
73
    i++;
66
    }
74
    }
67
 
-
 
68
    status = send(s,"\r" , 1, 0);
-
 
69
  */
75
 
-
 
76
  //  status = send(s,"\r" , 1, 0);
-
 
77
  */
-
 
78
   status = send(mk_socket,"\r" , 1, 0);
70
  // status = send(s,"\r" , 1, 0);
79
   status = send(mk_socket,"\n" , 1, 0);
71
  printf("\n");
80
  printf("\n");
72
}
81
}
73
 
-
 
-
 
82
 
-
 
83
 
-
 
84
int rx_last_length;
-
 
85
 
-
 
86
int read_from_mk()
-
 
87
{      
-
 
88
  char in_char='#';
-
 
89
  int count=0;
74
/*
90
  int r=0;
-
 
91
 
75
 
92
  printf("starting read\n");
-
 
93
  while(in_char!='\n')
-
 
94
    {
-
 
95
      //      printf("b read\n");
-
 
96
      count=read(mk_socket,&in_char,1);
-
 
97
      //printf("a read %d\n",count);
-
 
98
      if (count!=-1)
-
 
99
        {
-
 
100
          //  printf("%c\n",in_char);
-
 
101
          RxBuffer[r]=in_char;
-
 
102
     
-
 
103
          if (in_char!=0)
-
 
104
            PrintableRxBuffer[r++]=in_char;
-
 
105
          else
-
 
106
            PrintableRxBuffer[r++]='0';
-
 
107
        }
-
 
108
 
-
 
109
    }
-
 
110
  rx_last_length=r;
-
 
111
  PrintableRxBuffer[r++]='\0'; // terminate 
-
 
112
  printf("done --->%s\n",PrintableRxBuffer);
-
 
113
 
-
 
114
  if (RxBuffer[2]=='D')
-
 
115
    debug_sets++;
-
 
116
 
-
 
117
  return 1;
-
 
118
}
76
int connect_mk_bluetooth(char dest[18])
119
 
77
{
120
 
78
 
121
int connect_mk_bluetooth(char dest[18])
79
 
122
{
80
 
123
 
81
  struct sockaddr_rc addr ;
124
  struct sockaddr_rc addr ;
82
 
125
 
83
  // allocate a socket
126
  // allocate a socket
84
  mk_socket = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
127
  mk_socket = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
85
 
128
 
86
  // set the connection parameters (who to connect to)
129
  // set the connection parameters (who to connect to)
87
  addr.rc_family = AF_BLUETOOTH;
130
  addr.rc_family = AF_BLUETOOTH;
88
  addr.rc_channel = 1;
131
  addr.rc_channel = 1;
89
  str2ba( dest, &addr.rc_bdaddr );
132
  str2ba( dest, &addr.rc_bdaddr );
90
 
133
 
91
  // connect to server
134
  // connect to server
92
  status = connect(mk_socket, (struct sockaddr *)&addr, sizeof(addr));
135
  status = connect(mk_socket, (struct sockaddr *)&addr, sizeof(addr));
-
 
136
 
93
 
137
  printf("connection status %d\n",status);
94
  return status;
138
  return status;
95
 
139
 
96
}
140
}
97
 
141
 
98
*/
142
 
99
 
143
 
100
 
144
 
101
int connect_mk_localhost_socket(int port)
145
int connect_mk_localhost_socket(int port)
102
{
146
{
103
 
147
 
104
  int status;
148
  int status;
105
  struct sockaddr_in sa;
149
  struct sockaddr_in sa;
106
 
150
 
107
  sa.sin_family = AF_INET;
151
  sa.sin_family = AF_INET;
108
  sa.sin_addr.s_addr = htonl(0x0);
152
  sa.sin_addr.s_addr = htonl(0x0);
109
  sa.sin_port = htons(port);
153
  sa.sin_port = htons(port);
110
 
154
 
111
  // allocate a socket
155
  // allocate a socket
112
  //  s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
156
  //  s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
113
  mk_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
157
  mk_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
114
  //);
158
  //);
115
 
159
 
116
  // set the connection parameters (who to connect to)
160
  // set the connection parameters (who to connect to)
117
 
161
 
118
  // connect to server
162
  // connect to server
119
  //  status = connect(s, (struct sockaddr *)&addr, sizeof(addr));
163
  //  status = connect(s, (struct sockaddr *)&addr, sizeof(addr));
120
  status = connect(mk_socket,(struct sockaddr*) &sa, sizeof(struct sockaddr_in));
164
  status = connect(mk_socket,(struct sockaddr*) &sa, sizeof(struct sockaddr_in));
-
 
165
 
121
 
166
  printf("connection status %d\n",status);
122
  return status;
167
  return status;
123
 
168
 
124
}
169
}
125
 
170
 
126
 
171