Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions Ethernet/E-1608.c
Original file line number Diff line number Diff line change
Expand Up @@ -1559,6 +1559,50 @@ bool SettingsMemoryR_E1608(DeviceInfo_E1608 *device_info, uint16_t address, uint
}
return result;
}

bool SetNetworkW_E1608(DeviceInfo_E1608 *device_info, uint8_t *data, uint16_t count){

if (SettingsMemoryW_E1608(device_info, 0, count, data)){

int timeout = device_info->timeout;
unsigned char buffer[7];
unsigned char replyBuffer[7];
buffer[MSG_INDEX_START] = MSG_START;
buffer[MSG_INDEX_COMMAND] = CMD_RESET;
buffer[MSG_INDEX_FRAME] = device_info->device.frameID++;
buffer[MSG_INDEX_STATUS] = 0;
buffer[MSG_INDEX_COUNT_LOW] = 0;
buffer[MSG_INDEX_COUNT_HIGH] = 0;
buffer[MSG_INDEX_DATA] = (unsigned char) 0xff - calcChecksum(buffer, MSG_INDEX_DATA);

if(send(device_info->device.sock, buffer, 7, 0) <= 0){
printf("Error setting network config! (Sending)\n");
}else{
receiveMessage(device_info->device.sock, replyBuffer, MSG_HEADER_SIZE+MSG_CHECKSUM_SIZE, timeout);
if(replyBuffer[MSG_INDEX_COMMAND] == (buffer[MSG_INDEX_COMMAND] | MSG_REPLY) && replyBuffer[MSG_INDEX_FRAME] == buffer[2]){

close(device_info->device.sock);
close(device_info->device.scan_sock);

usleep(5000000); // device boot time

device_info->device.connectCode = 0x0; // default connect code
device_info->device.frameID = 0; // zero out the frameID
device_info->queue[0] = 0; // set count in gain queue to zero

discoverDevice(&device_info->device, E1608_PID);
device_info->device.sock = openDevice(inet_addr(inet_ntoa(device_info->device.Address.sin_addr)), device_info->device.connectCode);

return true;
}
}
return false;
}
else{
printf("Error setting network config!\n");
return false;
}
}

bool SettingsMemoryW_E1608(DeviceInfo_E1608 *device_info, uint16_t address, uint16_t count, uint8_t *data)
{
Expand Down
1 change: 1 addition & 0 deletions Ethernet/E-1608.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ bool BlinkLED_E1608(DeviceInfo_E1608 *device_info, unsigned char count);
bool Reset_E1608(DeviceInfo_E1608 *device_info);
bool Status_E1608(DeviceInfo_E1608 *device_info, uint16_t *status);
bool NetworkConfig_E1608(DeviceInfo_E1608 *device_info, struct in_addr newtork[3]);
bool SetNetworkW_E1608(DeviceInfo_E1608 *device_info, uint8_t *data, uint16_t count);
bool FirmwareUpgrade_E1608(DeviceInfo_E1608 *device_info);
bool CalMemoryR_E1608(DeviceInfo_E1608 *device_info, uint16_t address, uint16_t count, uint8_t *data);
bool CalMemoryW_E1608(DeviceInfo_E1608 *device_info, uint16_t address, uint16_t count, uint8_t *data);
Expand Down
41 changes: 41 additions & 0 deletions Ethernet/test-E-1608.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@ int main(int argc, char**argv)
uint8_t range;
uint8_t nchan;
int temp;
char ip[16];
char subnetmask[16];
char gateway[16];

device_info.device.connectCode = 0x0; // default connect code
device_info.device.frameID = 0; // zero out the frameID
Expand Down Expand Up @@ -119,6 +122,7 @@ int main(int argc, char**argv)
printf("Hit 'o' to test Analog Output.\n");
printf("Hit 'r' to reset the device\n");
printf("Hit 'n' to get networking information\n");
printf("Hit 'N' to set networking information\n");
printf("Hit 's' to get Status\n");
printf("Hit 'e' to exit\n");

Expand Down Expand Up @@ -267,6 +271,43 @@ int main(int argc, char**argv)
printf(" subnet mask = %s\n", inet_ntoa(network[1]));
printf(" gateway = %s\n", inet_ntoa(network[2]));
break;

case 'N':
printf("Set network configuration values [xxx.xxx.xxx.xxx]: \n");
uint8_t setIPData[22] = {0};

setIPData[1] = 0;

printf(" DHCP[0,1]: ");
scanf("%d", &setIPData[0]);
if(setIPData[0]){
setIPData[0] = 0; // index 0 = dhcp on; index 3 = static;
}else{

setIPData[0] = 3;
printf(" IP address: ");
scanf("%s",ip);
sscanf(ip, "%d.%d.%d.%d", &setIPData[2], &setIPData[3], &setIPData[4], &setIPData[5]);

printf(" subnet mask: ");
scanf("%s",subnetmask);
sscanf(subnetmask, "%d.%d.%d.%d", &setIPData[6], &setIPData[7], &setIPData[8], &setIPData[9]);

printf(" gateway: ");
scanf("%s",gateway);
sscanf(gateway, "%d.%d.%d.%d", &setIPData[10], &setIPData[11], &setIPData[12], &setIPData[13]);
}



if(!SetNetworkW_E1608(&device_info, setIPData, sizeof(setIPData)/sizeof(setIPData[0]))){
printf("Error during setting...!\n");
}else{

printf("\n");
}

break;
}
}
}