Skip to content
Merged
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
39 changes: 39 additions & 0 deletions adam/src/fn_fuji/fuji_generate_guid.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#include <stdbool.h>
#include <stdint.h>
#include <eos.h>
#include <string.h>
#include "fujinet-fuji.h"
#include "fujinet-network.h"
#include "fujinet-network-adam.h"
#include "response.h"

bool fuji_generate_guid(char *buffer)
{
uint8_t err = 0;

while(1)
{
err = eos_write_character_device(FUJINET_DEVICE_ID,"\xBB",1);

if (err == ADAMNET_TIMEOUT)
continue;
else if (err == ADAMNET_OK)
break;
else
return FN_ERR_IO_ERROR;
}

while(1)
{
err = eos_read_character_device(FUJINET_DEVICE_ID,buffer,MAX_GUID_LEN);

if (err == ADAMNET_TIMEOUT)
continue;
else if (err == ADAMNET_OK)
break;
else
return FN_ERR_IO_ERROR;
}

return FN_ERR_OK;
}
17 changes: 17 additions & 0 deletions apple2/src/fn_fuji/fuji_generate_guid.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include <stdint.h>
#include <string.h>
#include "fujinet-fuji.h"
#include "fujinet-bus-apple2.h"

bool fuji_generate_guid(char *buffer)
{
if (sp_get_fuji_id() == 0) {
return false;
}

sp_error = sp_status(sp_fuji_id, FUJICMD_GENERATE_GUID);
if (sp_error == 0) {
memcpy(buffer, &sp_payload[0], MAX_GUID_LEN);
}
return sp_error == 0;
}
36 changes: 36 additions & 0 deletions atari/src/fn_fuji/fuji_generate_guid.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#include <atari.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "fujinet-fuji.h"
#include "fujinet-bus-atari.h"
#include "fujinet-fuji-atari.h"


uint8_t t_fuji_generate_guid[6] = { FUJICMD_GENERATE_GUID, 0x40, 0x00, 0x00, 0x00, 0x00 };

bool fuji_generate_guid(char *buffer)
{
uint8_t data[MAX_GUID_LEN + 2]; // add 2 for count bytes
uint16_t buffer_size = MAX_GUID_LEN;
uint16_t bytes_read;

copy_fuji_cmd_data(t_fuji_generate_guid);
OS.dcb.dbuf = data;
OS.dcb.dbyt = buffer_size + 2; // add 2 for count bytes
OS.dcb.dtimlo = 1; // Generating GUID should be nearly instantaneous, make timeout 1 second
bus();
if (!fuji_success()) {
return false;
}

bytes_read = data[0] + (data[1] << 8);
if (bytes_read > 0) {
// move the data from data+2 to data, and set everything else to 0 after this.
memmove(data, &data[2], bytes_read);
strncpy(buffer, (char*)data, buffer_size);
}
return true;

}
26 changes: 26 additions & 0 deletions coco/src/fn_fuji/fuji_generate_guid.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@

#include <cmoc.h>
#include <coco.h>
#include "fujinet-fuji.h"
#include <dw.h>
#include <fujinet-fuji-coco.h>

bool fuji_generate_guid(char *buffer)
{
struct _gg
{
uint8_t opcode;
uint8_t cmd;
} gg;

gg.opcode = OP_FUJI;
gg.cmd = FUJICMD_GENERATE_GUID;

bus_ready();

dwwrite((uint8_t *)&gg, sizeof(gg));
if (fuji_get_error())
return false;

return fuji_get_response((uint8_t *)buffer, MAX_GUID_LEN);
}
10 changes: 10 additions & 0 deletions commodore/src/fn_fuji/fuji_generate_guid.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#include <stdbool.h>
#include <stdint.h>
#include "fujinet-fuji.h"
#include "fujinet-fuji-cbm.h"

bool fuji_generate_guid(char *buffer)
{
int bytes_read;
return open_read_close(FUJICMD_GENERATE_GUID, true, &bytes_read, MAX_GUID_LEN, (uint8_t *) buffer);
}
8 changes: 8 additions & 0 deletions fujinet-fuji.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
#define FILE_MAXLEN 36
#define SSID_MAXLEN 33 /* 32 + NULL */
#define MAX_APPKEY_LEN 64
#define MAX_GUID_LEN 37

#ifdef __CBM__
#define MAX_PASSWORD_LEN 65
Expand Down Expand Up @@ -114,6 +115,7 @@
#define FUJICMD_GET_ADAPTERCONFIG_EXTENDED 0xC4
#define FUJICMD_HASH_COMPUTE_NO_CLEAR 0xC3
#define FUJICMD_HASH_CLEAR 0xC2
#define FUJICMD_GENERATE_GUID 0xBB
#define FUJICMD_SET_STATUS 0x81

enum WifiStatus
Expand Down Expand Up @@ -318,6 +320,12 @@ bool fuji_enable_udpstream(uint16_t port, char *host);
*/
bool fuji_error(void);

/**
* @brief Generate a randomized GUID.
* @return success status of request
*/
bool fuji_generate_guid(char *buffer);

/**
* @brief Gets adapter config information from FN, e.g. IP, MAC, BSSID etc.
* Raw version that returns bytes for all IP etc related values.
Expand Down
9 changes: 9 additions & 0 deletions msdos/src/fn_fuji/fuji_generate_guid.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#include <stdbool.h>
#include <stdint.h>
#include "fujinet-fuji.h"
#include "fujinet-fuji-msdos.h"

bool fuji_generate_guid(char *buffer)
{
return int_f5_read(0x70,0xBB,0x00,0x00,buffer,MAX_GUID_LEN) == 'C';
}
23 changes: 23 additions & 0 deletions pmd85/src/fn_fuji/fuji_generate_guid.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#include "fujinet-fuji.h"
#include <dw.h>
#include <fujinet-fuji-pmd85.h>

bool fuji_generate_guid(char *buffer)
{
struct _gg
{
uint8_t opcode;
uint8_t cmd;
} gg;

gg.opcode = OP_FUJI;
gg.cmd = FUJICMD_GENERATE_GUID;

bus_ready();

dwwrite((uint8_t *)&gg, sizeof(gg));
if (fuji_get_error())
return false;

return fuji_get_response((uint8_t *)buffer, MAX_GUID_LEN);
}